nnkwrik 6 éve
szülő
commit
7df887d278

+ 174 - 0
README.md

@@ -0,0 +1,174 @@
+<p align="center"><img src="assets/top2.png" width="800"/>
+</p>
+
+一款高质量仿闲鱼开源交易平台。
+
+Power By `微信小程序`,`JWT`, `Java8`,`Maven`,`SpringBoot`,`SpringCloud`,`MySQL`,`Redis`,`RabbitMQ`,`Docker`
+
+# 🌀 功能
+
+- 首页 : 广告banner,推荐分类,推荐商品
+- 分类功能 : 2级分类,分类浏览商品
+- 搜索功能 : 关键字搜索,搜索历史,热门关键字,搜索辅助,
+- 浏览商品详情 :  商品信息,2级评论,卖家信息,相关商品,标记为收藏,标记为想要
+- 发布商品 : 上传商品图,发货地点,支持多种交易方式
+- 聊天功能 : 基于WebSocket,标记为想要后创建对话(模仿闲鱼),在聊天框中下单(模仿闲鱼)
+- 其他功能 : 用户主页,查看自己发布,收藏,卖出,买到的商品
+- 订单,支付 : **未完成**
+
+
+
+# 🖇 后端服务拆分
+
+后端基于Spring Cloud搭建,拆分为`认证`,`用户`,`消息`,`商品`,`服务发现`,`网关`6个服务
+
+![1545121316436](assets/1545121316436.png)
+
+
+
+# 🗺 预览
+
+<p align="center">
+    <img src="assets/347252446.jpg" style="margin:20px;border:1px solid #eee" width="350" />
+    <img src="assets/20025781.jpg" style="margin:20px;border:1px solid #eee" width="350"/>
+    <img src="assets/935521060.jpg"  style="margin:20px;border:1px solid #eee" width="350"/>
+    <img src="assets/1900355585.jpg" style="margin:20px;border:1px solid #eee" width="350"/>
+    <img src="assets/1988065609.jpg" style="margin:20px;border:1px solid #eee" width="350"/>
+    <img src="assets/1565722579.jpg" style="margin:20px;border:1px solid #eee" width="350"/>
+    <img src="assets/1130381648.jpg" style="margin:20px;border:1px solid #eee" width="350"/>
+    <img src="assets/619991011.jpg" style="margin:20px;border:1px solid #eee" width="350"/>
+</p>
+
+# 🚀 快速开始
+
+## 前端
+
+然而并不能快速开始,首先你得有小程序的appid。需要先申请小程序账号和下载小程序开发工具,步骤可以参考[官方教程](https://developers.weixin.qq.com/miniprogram/dev/)。注册完成后会拿到appid和secret,在`auth-service/src/main/resources/application.yml`中配置你的appid和secret。
+
+```yml
+#写入你的小程序信息
+wx:
+  miniapp:
+    appid:  #微信小程序的appid
+    secret: #微信小程序的Secret
+    msgDataFormat: JSON
+```
+
+打开刚下载好的小程序开发工具,创建一个新项目。然后把[wx-front](https://github.com/nnkwrik/fangxianyu/tree/master/wx-front)中的所有文件覆盖到你刚创建的小程序项目目录中。由于小程序默认服务端只能是HTTPS并且是ICP备案过的域名,不方便开发,在小程序开发工具的`设置/项目设置`中把`不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书`勾上。
+
+## 后端
+
+后端用docker-compose快速部署,确保你安装了docker和docker-compose。(参考:[Ubuntu安装Docker](https://docs.docker.com/install/linux/docker-ce/ubuntu/),[安装docker-compose](https://docs.docker.com/compose/install/))。
+
+```
+$ git clone git@github.com: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](assets/1545124207261.png)
+
+## 真机调试
+
+因为现在域名用的是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中可以配置秘钥文件的名字如:
+
+```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下,就能替换成新的秘钥了。
+
+
+
+# 最后
+
+- **别忘记Star!**
+- 前端参考了[nideshop-mini-program](https://github.com/tumobi/nideshop-mini-program),非常感谢
+- 订单和支付没有完成,随缘开发。
+  [nideshop-mini-program](https://github.com/tumobi/nideshop-mini-program)里好像已经有支付和订单的页面,有兴趣做二次开发的话可以参考一下
+- 这次开发过程中遇到的坑都有在博客中做记录,可以看一下
+  - [Spring Cloud中使用RabbitMQ的两种方式](https://nnkwrik.github.io/2018/11/19/20181119/)
+  - [Guava的Cache](https://nnkwrik.github.io/2018/11/20/20181120/)
+  - [万能的Jackson](https://nnkwrik.github.io/2018/11/30/20181130/)
+
+- 有问题吗?微信号:nnkwrik

BIN
assets/1130381648.jpg


BIN
assets/1545121316436.png


BIN
assets/1545124207261.png


BIN
assets/1565722579.jpg


BIN
assets/1900355585.jpg


BIN
assets/1988065609.jpg


BIN
assets/20025781.jpg


BIN
assets/339260677.jpg


BIN
assets/347252446.jpg


BIN
assets/619991011.jpg


BIN
assets/935521060.jpg


BIN
assets/top.png


+ 4 - 4
docker-compose.yml

@@ -16,12 +16,12 @@ services:
     - ./dev/mysql/dump:/docker-entrypoint-initdb.d  #schema+所有测试数据
     restart: always
 
-  rebbitmq:
+  rabbitmq:
     image: rabbitmq:3.7.8-management
     container_name: fangxianyu-rabbitmq
     ports:
     - "5672:5672"
-    - "15672:15672"
+    - "15672:15672" #管理界面 : 账号密码都是guest
     hostname: my-rabbit-mq
     restart: always
 
@@ -43,7 +43,7 @@ services:
     restart: always
     depends_on:
     - mysql
-    - rebbitmq
+    - rabbitmq
     - eureka
   auth-service:
     build: ./auth-service
@@ -51,7 +51,7 @@ services:
     restart: always
     depends_on:
     - mysql
-    - rebbitmq
+    - rabbitmq
     - eureka
     - user-service
   goods-service:

+ 0 - 92
wx-front/README.md

@@ -1,92 +0,0 @@
-### NideShop商城(微信小程序端)
-
-+ 界面高仿网易严选商城(主要是2016年wap版)
-+ 测试数据采集自网易严选商城
-+ 功能和数据库参考ecshop
-+ 服务端api基于Node.js+ThinkJS+MySQL
-+ 计划添加基于Vue.js的后台管理系统、PC版、Wap版
-
-**注意:当前版本功能还未完善,请勿商用。**
-
-本项目需要配合NideShop商城服务端使用,GitHub: [https://github.com/tumobi/nideshop](https://github.com/tumobi/nideshop)
-
-### 项目截图
-
-![首页](http://upload-images.jianshu.io/upload_images/3985656-c543b937ac6e79bb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/320)
-
-![专题](http://upload-images.jianshu.io/upload_images/3985656-bd606aac3b5491c2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/320)
-
-![分类](http://upload-images.jianshu.io/upload_images/3985656-fa9565158376d439.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/320)
-
-![商品列表](http://upload-images.jianshu.io/upload_images/3985656-788b7fd2c4a558d0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/320)
-
-![商品详情](http://upload-images.jianshu.io/upload_images/3985656-99a6e0a57778d85f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/320)
-
-![购物车](http://upload-images.jianshu.io/upload_images/3985656-60ff2307d81f6bb2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/320)
-
-![订单中心](http://upload-images.jianshu.io/upload_images/3985656-dff837e6b2ec87b3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/320)
-
-
-
-### 功能列表
-+ 首页
-+ 分类首页、分类商品、新品首发、人气推荐商品页面
-+ 商品详情页面,包含加入购物车、收藏商品、商品评论功能
-+ 搜索功能
-+ 专题功能
-+ 品牌功能
-+ 完整的购物流程,商品的加入、编辑、删除、批量选择,收货地址的选择,下单支付
-+ 会员中心(订单、收藏、足迹、收货地址、意见反馈)
-....
-
-### 项目结构
-```
-├─config                
-├─lib
-│  └─wxParse   
-├─pages
-│  ├─auth
-│  │  ├─login
-│  │  ├─register
-│  │  └─reset
-│  ├─brand
-│  ├─brandDetail
-│  ├─cart
-│  ├─catalog
-│  ├─category
-│  ├─comment
-│  ├─goods
-│  ├─hotGoods
-│  ├─index
-│  ├─logs
-│  ├─newGoods
-│  ├─pay
-│  ├─search
-│  ├─shopping
-│  │  ├─address
-│  │  ├─addressAdd
-│  │  └─checkout
-│  ├─topic
-│  ├─topicDetail
-│  └─ucenter
-│      ├─address
-│      ├─addressAdd
-│      ├─collect
-│      ├─coupon
-│      ├─feedback
-│      ├─footprint
-│      ├─index
-│      ├─order
-│      └─orderDetail
-├─static
-│  └─images
-└─utils
-```
-
-### 服务端api
-项目地址:https://github.com/tumobi/nideshop
-
-### 最后
-+ 喜欢别忘了 Star
-+ 微信号 tumobi
-+ 交流 QQ 群:497145766