springboot+vue电商项目-畅购

3 篇文章 0 订阅
1 篇文章 0 订阅

项目介绍

畅购属于B2C架构的线上商城,支持用户在线浏览商品,在线搜索商品,并且可以将喜欢的商品加入购物车从而下单后购买商品,同时支持线上支付,支付模式暂时只有微信支付
畅购商城采用微服务的架构,微服务技术采用了SpringCloud技术栈,哥哥微服务站点都基于SpringBoot构建,
并采用SpringCloud GateWay将各个微服务的功能串联起来,同时在微服务网关GateWay中采用过滤和限流的策略,实施对微服务进行保护和权限认证操作.采用了ElasticSearch解决了海量商品的实时检索.数据存储采用的MySql,采用Redis做数据的缓存操作.

1.架构图

在这里插入图片描述

2.首页在这里插入图片描述

3.用户注册

在这里插入图片描述

4. 用户登录

在这里插入图片描述

5.分类展示

在这里插入图片描述

6.商品展示

  • 这里用到了ElasticSearch
    在这里插入图片描述

7. 商品详情

在这里插入图片描述

9.评论模块

在这里插入图片描述

10.购物车

在这里插入图片描述

11.下订单

在这里插入图片描述

12. 支付(微信支付)

在这里插入图片描述

13.后端项目展示

在这里插入图片描述
在这里插入图片描述

14 部分代码展示

package com.czxy.service.impl;

import com.czxy.repository.SkuRepository;
import com.czxy.service.SkuSearchService;
import com.czxy.vo.ReturnSku;
import com.czxy.vo.SearchVo;
import com.czxy.vo.SkuSearch;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class SkuSearchServiceImpl implements SkuSearchService {
    @Resource
    private SkuRepository skuRepository;
    @Override
    public Map<String, Object> findAll(SearchVo searchVo) {
        Map<String,Object> map = new HashMap<>();

        NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        nativeSearchQueryBuilder.withQuery(boolQueryBuilder);
        //分类
        if (StringUtils.isNotBlank(searchVo.getCatId())){
            boolQueryBuilder.must(QueryBuilders.termQuery("catId",searchVo.getCatId()));
        }
        //品牌
        if (StringUtils.isNotBlank(searchVo.getBrandId())){
            boolQueryBuilder.must(QueryBuilders.termQuery("brandId",searchVo.getBrandId()));
        }
        //规格
        if (searchVo.getSpecList()!=null){
            for (Map.Entry<String, String> stringStringEntry : searchVo.getSpecList().entrySet()) {
                String key = stringStringEntry.getKey();
                String value = stringStringEntry.getValue();
                boolQueryBuilder.must(QueryBuilders.termQuery("specs."+key+".keyword",value));
            }
        }
        //价格
        if (StringUtils.isNotBlank(searchVo.getMinPrice())){
            boolQueryBuilder.must(QueryBuilders.rangeQuery("price").gte(Integer.parseInt(searchVo.getMinPrice())*100));
        }
        if (StringUtils.isNotBlank(searchVo.getMaxPrice())){
            boolQueryBuilder.must(QueryBuilders.rangeQuery("price").lte(Integer.parseInt(searchVo.getMaxPrice())*100));
        }
        //关键字
        if (StringUtils.isNotBlank(searchVo.getKeyword())){
            boolQueryBuilder.must(QueryBuilders.matchQuery("skuName",searchVo.getKeyword()));
        }
        //分页
        nativeSearchQueryBuilder.withPageable(PageRequest.of(searchVo.getCurrent()-1,searchVo.getSize()));
        //排序
        //销量
        if ("xl".equals(searchVo.getSortBy())){
            nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort("sellerCount").order(searchVo.getSortWay().equals("asc") ? SortOrder.ASC : SortOrder.DESC));
        }
        //价格
        if ("jg".equals(searchVo.getSortBy())){
            nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort("price").order(searchVo.getSortWay().equals("asc") ? SortOrder.ASC : SortOrder.DESC));
        }
        //评论
        if ("pl".equals(searchVo.getSortBy())){
            nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort("commentCount").order(searchVo.getSortWay().equals("asc") ? SortOrder.ASC : SortOrder.DESC));
        }
        //时间
        if ("sj".equals(searchVo.getSortBy())){
            nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort("onSaleTime").order(searchVo.getSortWay().equals("asc") ? SortOrder.ASC : SortOrder.DESC));
        }
        Page<SkuSearch> search = skuRepository.search(nativeSearchQueryBuilder.build());
        List<ReturnSku> list = new ArrayList<>();
        search.forEach(skuSearch -> {
            ReturnSku returnSku = new ReturnSku();
            returnSku.setId(skuSearch.getId());
            returnSku.setPrice(skuSearch.getPrice());
            returnSku.setMidlogo(skuSearch.getMidlogo());
            returnSku.setGoodsName(skuSearch.getSkuName());
            returnSku.setCommentCount(skuSearch.getCommentCount());
            list.add(returnSku);
        });
        map.put("list",list);
        map.put("total",search.getTotalElements());
        return map;
    }
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值