src/main/java/cc/mrbird/febs/mall/controller/ApiMemberCollectionController.java
New file @@ -0,0 +1,46 @@ package cc.mrbird.febs.mall.controller; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.dto.AddCollectionDto; import cc.mrbird.febs.mall.dto.MemberCollectionListDto; import cc.mrbird.febs.mall.service.IMallMemberCollectionService; import cc.mrbird.febs.mall.vo.AddCollectionVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @Slf4j @Validated @RestController @RequiredArgsConstructor @RequestMapping(value = "/api/collection") @Api(value = "ApiMemberCollectionController", tags = "收藏接口类") public class ApiMemberCollectionController { @Autowired private IMallMemberCollectionService mallMemberCollectionService; @ApiOperation(value = "添加收藏") @PostMapping(value = "/add") public FebsResponse add(@RequestBody AddCollectionDto addCollectionDto) { mallMemberCollectionService.add(addCollectionDto); return new FebsResponse().success().message("收藏成功"); } @ApiOperation(value = "获取收藏列表") @PostMapping(value = "/findMemberCollectionList") public FebsResponse findMemberCollectionList(@RequestBody MemberCollectionListDto memberCollectionListDto) { return new FebsResponse().success().data(mallMemberCollectionService.findMemberCollectionList(memberCollectionListDto)); } @ApiOperation(value = "取消收藏") @PostMapping(value = "/del/{ids}") public FebsResponse del(@PathVariable("ids") String ids) { mallMemberCollectionService.del(ids); return new FebsResponse().success().message("取消成功"); } } src/main/java/cc/mrbird/febs/mall/controller/ApiMemberFootprintController.java
New file @@ -0,0 +1,59 @@ package cc.mrbird.febs.mall.controller; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.mall.dto.AddCollectionDto; import cc.mrbird.febs.mall.dto.AddFootprintDto; import cc.mrbird.febs.mall.dto.MemberCollectionListDto; import cc.mrbird.febs.mall.dto.MemberFootprintListDto; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.service.IMallMemberCollectionService; import cc.mrbird.febs.mall.service.IMallMemberFootprintService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @Slf4j @Validated @RestController @RequiredArgsConstructor @RequestMapping(value = "/api/footprint") @Api(value = "ApiMemberFootprintController", tags = "足迹接口类") public class ApiMemberFootprintController { @Autowired private IMallMemberFootprintService mallMemberFootprintService; @ApiOperation(value = "添加浏览记录") @PostMapping(value = "/add") public FebsResponse add(@RequestBody AddFootprintDto addFootprintDto) { MallMember loginUser = LoginUserUtil.getLoginUser(); mallMemberFootprintService.add(addFootprintDto.getGoodsId(), loginUser.getId()); return new FebsResponse().success().message("添加成功"); } @ApiOperation(value = "浏览记录列表") @PostMapping(value = "/findMemberFootprintList") public FebsResponse findMemberFootprintList(@RequestBody MemberFootprintListDto memberFootprintListDto) { return new FebsResponse().success().data(mallMemberFootprintService.findMemberCollectionList(memberFootprintListDto)); } @ApiOperation(value = "删除浏览记录") @PostMapping(value = "/del/{ids}") public FebsResponse del(@PathVariable("ids") String ids) { mallMemberFootprintService.del(ids); return new FebsResponse().success().message("取消成功"); } @ApiOperation(value = "清空浏览记录") @PostMapping(value = "/empty") public FebsResponse empty() { mallMemberFootprintService.empty(); return new FebsResponse().success().message("清空成功"); } } src/main/java/cc/mrbird/febs/mall/dto/AddCollectionDto.java
New file @@ -0,0 +1,14 @@ package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "AddCollectionDto", description = "添加收藏接受参数类") public class AddCollectionDto { @ApiModelProperty(value = "商品ID") private Long goodsId; } src/main/java/cc/mrbird/febs/mall/dto/AddFootprintDto.java
New file @@ -0,0 +1,14 @@ package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "AddFootprintDto", description = "添加浏览器记录接受参数类") public class AddFootprintDto { @ApiModelProperty(value = "商品ID") private Long goodsId; } src/main/java/cc/mrbird/febs/mall/dto/MemberCollectionListDto.java
New file @@ -0,0 +1,17 @@ package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "MemberCollectionListDto", description = "收藏列表接受参数类") public class MemberCollectionListDto { @ApiModelProperty(value = "页码", example = "1") private Integer pageNow; @ApiModelProperty(value = "每页数量", example = "10") private Integer pageSize; } src/main/java/cc/mrbird/febs/mall/dto/MemberFootprintListDto.java
New file @@ -0,0 +1,17 @@ package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "MemberFootprintListDto", description = "浏览记录列表接受参数类") public class MemberFootprintListDto { @ApiModelProperty(value = "页码", example = "1") private Integer pageNow; @ApiModelProperty(value = "每页数量", example = "10") private Integer pageSize; } src/main/java/cc/mrbird/febs/mall/entity/MallMemberCollection.java
New file @@ -0,0 +1,24 @@ package cc.mrbird.febs.mall.entity; import cc.mrbird.febs.common.entity.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("mall_member_collection") public class MallMemberCollection extends BaseEntity { private Long memberId; private Long goodsId; @TableField(exist = false) private String goodsName; @TableField(exist = false) private String thumb; @TableField(exist = false) private Integer isSale; } src/main/java/cc/mrbird/febs/mall/entity/MallMemberFootprint.java
New file @@ -0,0 +1,29 @@ package cc.mrbird.febs.mall.entity; import cc.mrbird.febs.common.entity.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("mall_member_footprint") public class MallMemberFootprint extends BaseEntity { private Long memberId; private Long goodsId; @TableField(exist = false) private String goodsName; @TableField(exist = false) private String thumb; @TableField(exist = false) private String presentPrice; @TableField(exist = false) private Integer isSale; } src/main/java/cc/mrbird/febs/mall/mapper/MallMemberCollectionMapper.java
New file @@ -0,0 +1,12 @@ package cc.mrbird.febs.mall.mapper; import cc.mrbird.febs.mall.entity.MallMemberCollection; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; public interface MallMemberCollectionMapper extends BaseMapper<MallMemberCollection> { IPage<MallMemberCollection> selectMemberCollectionListInPage(@Param("record") MallMemberCollection mallMemberCollection, Page<MallMemberCollection> page); } src/main/java/cc/mrbird/febs/mall/mapper/MallMemberFootprintMapper.java
New file @@ -0,0 +1,12 @@ package cc.mrbird.febs.mall.mapper; import cc.mrbird.febs.mall.entity.MallMemberFootprint; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; public interface MallMemberFootprintMapper extends BaseMapper<MallMemberFootprint> { IPage<MallMemberFootprint> selectMemberCollectionListInPage(@Param("record") MallMemberFootprint mallMemberFootprint, Page<MallMemberFootprint> page); } src/main/java/cc/mrbird/febs/mall/service/IMallMemberCollectionService.java
New file @@ -0,0 +1,19 @@ package cc.mrbird.febs.mall.service; import cc.mrbird.febs.mall.dto.AddCollectionDto; import cc.mrbird.febs.mall.dto.MemberCollectionListDto; import cc.mrbird.febs.mall.entity.MallMemberCollection; import cc.mrbird.febs.mall.vo.AddCollectionVo; import cc.mrbird.febs.mall.vo.CollectionListVo; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; public interface IMallMemberCollectionService extends IService<MallMemberCollection> { void add(AddCollectionDto addCollectionDto); List<CollectionListVo> findMemberCollectionList(MemberCollectionListDto memberCollectionListDto); void del(String ids); } src/main/java/cc/mrbird/febs/mall/service/IMallMemberFootprintService.java
New file @@ -0,0 +1,22 @@ package cc.mrbird.febs.mall.service; import cc.mrbird.febs.mall.dto.AddCollectionDto; import cc.mrbird.febs.mall.dto.MemberCollectionListDto; import cc.mrbird.febs.mall.dto.MemberFootprintListDto; import cc.mrbird.febs.mall.entity.MallMemberFootprint; import cc.mrbird.febs.mall.vo.CollectionListVo; import cc.mrbird.febs.mall.vo.FootprintListVo; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; public interface IMallMemberFootprintService extends IService<MallMemberFootprint> { void add(Long goodsId, Long memberId); List<FootprintListVo> findMemberCollectionList(MemberFootprintListDto memberFootprintListDto); void del(String ids); void empty(); } src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberCollectionServiceImpl.java
New file @@ -0,0 +1,68 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.mall.dto.AddCollectionDto; import cc.mrbird.febs.mall.dto.MemberCollectionListDto; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallMemberCollection; import cc.mrbird.febs.mall.mapper.MallMemberCollectionMapper; import cc.mrbird.febs.mall.service.IMallMemberCollectionService; import cc.mrbird.febs.mall.vo.AddCollectionVo; import cc.mrbird.febs.mall.vo.CollectionListVo; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Slf4j @Service @RequiredArgsConstructor public class MallMemberCollectionServiceImpl extends ServiceImpl<MallMemberCollectionMapper, MallMemberCollection> implements IMallMemberCollectionService { @Override public void add(AddCollectionDto addCollectionDto) { MallMember member = LoginUserUtil.getLoginUser(); MallMemberCollection collection = new MallMemberCollection(); collection.setMemberId(member.getId()); collection.setGoodsId(addCollectionDto.getGoodsId()); this.baseMapper.insert(collection); } @Override public List<CollectionListVo> findMemberCollectionList(MemberCollectionListDto memberCollectionListDto) { MallMember member = LoginUserUtil.getLoginUser(); MallMemberCollection collection = new MallMemberCollection(); collection.setMemberId(member.getId()); Page<MallMemberCollection> page = new Page<>(memberCollectionListDto.getPageNow(), memberCollectionListDto.getPageSize()); IPage<MallMemberCollection> result = this.baseMapper.selectMemberCollectionListInPage(collection, page); if (CollUtil.isEmpty(result.getRecords())) { return new ArrayList<>(); } return result.getRecords().stream().map(item -> BeanUtil.copyProperties(item, CollectionListVo.class)).collect(Collectors.toList()); } @Override public void del(String ids) { MallMember member = LoginUserUtil.getLoginUser(); List<String> idsList = StrUtil.split(ids, ','); LambdaQueryWrapper<MallMemberCollection> delQuery = new LambdaQueryWrapper<>(); delQuery.in(MallMemberCollection::getId, idsList); delQuery.eq(MallMemberCollection::getMemberId, member.getId()); this.baseMapper.delete(delQuery); } } src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberFootprintServiceImpl.java
New file @@ -0,0 +1,84 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.mall.dto.MemberFootprintListDto; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallMemberCollection; import cc.mrbird.febs.mall.entity.MallMemberFootprint; import cc.mrbird.febs.mall.mapper.MallMemberFootprintMapper; import cc.mrbird.febs.mall.service.IMallMemberFootprintService; import cc.mrbird.febs.mall.vo.CollectionListVo; import cc.mrbird.febs.mall.vo.FootprintListVo; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Slf4j @Service @RequiredArgsConstructor public class MallMemberFootprintServiceImpl extends ServiceImpl<MallMemberFootprintMapper, MallMemberFootprint> implements IMallMemberFootprintService { @Override public void add(Long goodsId, Long memberId) { LambdaQueryWrapper<MallMemberFootprint> query = new LambdaQueryWrapper<>(); query.eq(MallMemberFootprint::getGoodsId, goodsId); query.eq(MallMemberFootprint::getMemberId, memberId); MallMemberFootprint mallMemberFootprint = this.baseMapper.selectOne(query); if (mallMemberFootprint == null) { mallMemberFootprint = new MallMemberFootprint(); mallMemberFootprint.setGoodsId(goodsId); mallMemberFootprint.setMemberId(memberId); this.baseMapper.insert(mallMemberFootprint); } else { mallMemberFootprint.setUpdatedTime(new Date()); this.baseMapper.updateById(mallMemberFootprint); } } @Override public List<FootprintListVo> findMemberCollectionList(MemberFootprintListDto memberFootprintListDto) { MallMember member = LoginUserUtil.getLoginUser(); MallMemberFootprint footprint = new MallMemberFootprint(); footprint.setMemberId(member.getId()); Page<MallMemberFootprint> page = new Page<>(memberFootprintListDto.getPageNow(), memberFootprintListDto.getPageSize()); IPage<MallMemberFootprint> result = this.baseMapper.selectMemberCollectionListInPage(footprint, page); if (CollUtil.isEmpty(result.getRecords())) { return new ArrayList<>(); } return result.getRecords().stream().map(item -> BeanUtil.copyProperties(item, FootprintListVo.class)).collect(Collectors.toList()); } @Override public void del(String ids) { MallMember member = LoginUserUtil.getLoginUser(); List<String> idsList = StrUtil.split(ids, ','); LambdaQueryWrapper<MallMemberFootprint> delQuery = new LambdaQueryWrapper<>(); delQuery.in(MallMemberFootprint::getId, idsList); delQuery.eq(MallMemberFootprint::getMemberId, member.getId()); this.baseMapper.delete(delQuery); } @Override public void empty() { MallMember member = LoginUserUtil.getLoginUser(); LambdaQueryWrapper<MallMemberFootprint> delQuery = new LambdaQueryWrapper<>(); delQuery.eq(MallMemberFootprint::getMemberId, member.getId()); this.baseMapper.delete(delQuery); } } src/main/java/cc/mrbird/febs/mall/vo/AddCollectionVo.java
New file @@ -0,0 +1,13 @@ package cc.mrbird.febs.mall.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "AddCollectionVo", description = "") public class AddCollectionVo { @ApiModelProperty(value = "商品ID") private Long goodsId; } src/main/java/cc/mrbird/febs/mall/vo/CollectionListVo.java
New file @@ -0,0 +1,25 @@ package cc.mrbird.febs.mall.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "CollectionListVo", description = "会员收藏列表返回参数类") public class CollectionListVo { @ApiModelProperty(value = "商品ID") private Long goodsId; @ApiModelProperty(value = "商品名称") private String goodsName; @ApiModelProperty(value = "缩略图") private String thumb; @ApiModelProperty(value = "价格") private String presentPrice; @ApiModelProperty(value = "上下架 2-下架") private Integer isSale; } src/main/java/cc/mrbird/febs/mall/vo/FootprintListVo.java
New file @@ -0,0 +1,34 @@ package cc.mrbird.febs.mall.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @Data @ApiModel(value = "FootprintListVo", description = "浏览记录列表返回参数类") public class FootprintListVo { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "浏览时间") private Date updatedTime; @ApiModelProperty(value = "商品ID") private Long goodsId; @ApiModelProperty(value = "商品名称") private String goodsName; @ApiModelProperty(value = "缩略图") private String thumb; @ApiModelProperty(value = "价格") private String presentPrice; @ApiModelProperty(value = "上下架 2-下架") private Integer isSale; } src/main/resources/mapper/modules/MallMemberCollectionMapper.xml
New file @@ -0,0 +1,24 @@ <?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="cc.mrbird.febs.mall.mapper.MallMemberCollectionMapper"> <select id="selectMemberCollectionListInPage" resultType="cc.mrbird.febs.mall.entity.MallMemberCollection"> select collection.* ,goods.goods_name goodsName ,goods.thumb ,goods.present_price ,goods.is_sale from mall_member_collection collection inner join mall_goods goods on collection.goods_id=goods.ID <where> <if test="record != null"> <if test="record.memberId != null"> and collection.member_id = #{record.memberId} </if> </if> </where> order by collection.created_time desc </select> </mapper> src/main/resources/mapper/modules/MallMemberFootprintMapper.xml
New file @@ -0,0 +1,24 @@ <?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="cc.mrbird.febs.mall.mapper.MallMemberFootprintMapper"> <select id="selectMemberCollectionListInPage" resultType="cc.mrbird.febs.mall.entity.MallMemberFootprint"> select footprint.* ,goods.goods_name goodsName ,goods.thumb ,goods.present_price ,goods.is_sale from mall_member_footprint footprint inner join mall_goods goods on footprint.goods_id=goods.ID <where> <if test="record != null"> <if test="record.memberId != null"> and collection.member_id = #{record.memberId} </if> </if> </where> order by footprint.updated_time desc </select> </mapper>