• Stars
    star
    199
  • Rank 196,105 (Top 4 %)
  • Language TSQL
  • Created about 6 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🐠 微服务仿闲鱼开源交易平台。Power By 微信小程序,JWT, Java8,Maven,SpringBoot,SpringCloud,MySQL,Redis,RabbitMQ,Docker

一款高质量仿闲鱼开源交易平台。

Power By 微信小程序,JWT, Java8,Maven,SpringBoot,SpringCloud,MySQL,Redis,RabbitMQ,Docker

🗃 目录

🌀 功能

  • 首页 : 广告banner,推荐分类,推荐商品
  • 分类功能 : 2级分类,分类浏览商品
  • 搜索功能 : 关键字搜索,搜索历史,热门关键字,搜索辅助,
  • 浏览商品详情 : 商品信息,2级评论,卖家信息,相关商品,标记为收藏,标记为想要
  • 发布商品 : 上传商品图,发货地点,支持多种交易方式
  • 聊天功能 : 基于WebSocket,标记为想要后创建对话(模仿闲鱼),在聊天框中下单(模仿闲鱼)
  • 其他功能 : 用户主页,查看自己发布,收藏,卖出,买到的商品
  • 订单,支付 : 未完成

🖇 后端服务拆分

后端基于Spring Cloud搭建,拆分为认证,用户,消息,商品,服务发现,网关6个服务

1545185932747

🗺 预览

🚀 快速开始

前端

然而并不能快速开始,首先你得有小程序的appid。需要先申请小程序账号和下载小程序开发工具,步骤可以参考官方教程。注册完成后会拿到appid和secret,在auth-service/src/main/resources/application.yml中配置你的appid和secret。

#写入你的小程序信息
wx:
  miniapp:
    appid:  #微信小程序的appid
    secret: #微信小程序的Secret
    msgDataFormat: JSON

打开刚下载好的小程序开发工具,创建一个新项目。然后把wx-front中的所有文件覆盖到你刚创建的小程序项目目录中。由于小程序默认服务端只能是HTTPS并且是ICP备案过的域名,不方便开发,在小程序开发工具的设置/项目设置中把不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书勾上。

后端

后端用docker-compose快速部署,确保你安装了docker和docker-compose。(参考:Ubuntu安装Docker安装docker-compose)。

$ git clone [email protected]:nnkwrik/weapp-fangxianyu.git
$ cd /weapp-fangxianyu

maven打包

mvn clean package -Dmaven.test.skip=true

打开docker-compose.yml看一下,确保和你本机的端口没有冲突。然后就可以docker部署啦

$ docker-compose build
$ docker-compose up

部署完成后稍等片刻(网关完全启动比较耗时),打开你的小程序开发工具,点击上方的编译就可以看到首页了。

1545124207261

真机调试

因为现在域名用的是localhost,手机是访问不到的,需要内网穿透。我在dev/ngrok/下放了linux版本的ngrok,如果你也是linux系统,直接运行里面的目录下的start.sh就行了,别的系统的话去谷歌找一下.. 随后会得到一个随机的域名(websocket通用),把它配置到小程序前端的config/api.js下,替换原来的localhost:8080。然后点真机调试就能通过手机访问到服务端了。

移除docker搭建的镜像

不想用了? 删除所有相关镜像

$ docker-compose down
$ docker rmi $(docker images | grep fangxianyu |  awk '{print $3}')

🐢 非docker-compose部署

不想用docker-compose就只能一步步来了。

  • 先启动3个基础服务。运行dev/mysql,dev/redis,dev/rebbitmq目录下的start.sh

  • 把6个服务(auth-service,goods-service,user-service,im-service,eureka,gateway)下Application启动类跑起来。

其他和快速开始一样

📡 端口

docker-compose环境下

  • MySQL : 3306
  • Redis : 6379
  • Rabbit MQ : 5672 (管理界面:15672)
  • gateway : 8080

具体参考docker-compose.yml。基础服务的端口都可以不暴露,暴露出来是为了方便生产环境中调试

非docker-compose环境下

  • MySQL : 3306
  • Redis : 6379
  • Rabbit MQ : 5672 (管理界面:15672)
  • gateway : 8080
  • eureka :8801
  • user-service : 8802
  • auth-service : 8803
  • goods-service :8804
  • im-service :8805

🔑 关于JWT

后端API基于Header中的JWT Token进行认证。如果你还不了解JWT的话可以先了解下,微服务认证的神器。

controller中通过@JWT注解把Token进行认证后转成JWTUser类。具体参考各个controller中的代码。在yml中可以配置秘钥文件的名字如:

jwt:
  pvt-key-file-name: RSA.key
  pub-key-file-name: RSA.pub
  duration: 1D  #JWT 1天过期

请确保resource目录下有你配置的这个秘钥文件。JWT发行方(auth-service)需要私钥(.key),验证方(goods-service,im-service)需要公钥(.pub)。

如果你想改成新的秘钥,io.github.nnkwrik.authservice.token.RSAKeysGenerator中提供了RSA密钥对生成器。运行后会在auth-service/src/main/resources下生成新的秘钥对(.key和.pub)。把公钥(.pub)复制到需要JWT验证的服务(goods-service,im-service)的resource下,就能替换成新的秘钥了。

auth-service的test里面提供了生成Token的方法,方便生产环境下使用。

最后