JD-Store购物网站复盘——20170312
一、商店技术架构
1.主题
- 购物车设计
- 结帐订单
- 第三方整合
- 代码重构
2.涉及技术点:
- Model 设计原则
- 自定 before_action
- 自定义 Routing
- validation
- session 操作
- find_by 操作
- where / order
- 巢状表单
- State Machine
- ActiveJob
- Mailer
- Partial / Helper
3.核心业务功能
- 购买机制 - 消费者购买商品,放入购物车
- 结帐机制 - 消费者将购物车中的商品,结帐生成订单
- 上架机制 - 商家上架物品,设定开卖
- 配送机制 - 商家针对订单配送
4.角色
- 消费者
- 商家
5.用户故事
身为管理者,我要能够登入后台
- 整个商店网站分为两种权限:admin (商家) / user (消费者)
- 商家可以登入 /admin 后台
- 能够登入后台上架商品
- 后台上架网址必须要是 /admin/products
- 商品的内容分为物品标题、描述、价格、库存
- 商品要能够设定是否能上架贩售
- 商品必须要有商品图片
二、实现步骤
专案基础设施
Bootstrap
gem 'bootstrap-sass'
mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss
@import "bootstrap-sprockets";
@import "bootstrap";
//= require bootstrap/alert
//= require bootstrap/dropdown
common/_navbar.html.erb
common/_footer.html.erb
weclome#index
flash提示
app/views/common/_flashes.html.erb
<% if flash.any? %>
<% user_facing_flashes.each do |key, value| %>
<div class="alert alert-dismissable alert-<%= flash_class(key) %>">
<button class="close" data-dismiss="alert">×</button>
<%= value %>
</div>
<% end %>
<% end %>
app/helpers/flashes_helper.rb
module FlashesHelper
FLASH_CLASSES = { alert: "danger", notice: "success", warning: "warning"}.freeze
def flash_class(key)
FLASH_CLASSES.fetch key.to_sym, key
end
def user_facing_flashes
flash.to_hash.slice "alert", "notice","warning"
end
end
Devise
rails g devise:install
rails g devise user
rake db:migrate
SimpleForm rails generate simple_form:install --bootstrap
font-awesome-rails
上传图片模块
gem 'carrierwave'
gem 'mini_magick'
rails g uploader image
购物车
订单
支付&寄信
专案源码
三、第三方服务应用
支付
- 微信、支付宝支付(需要企业身份进行申请)
- 有偿代收服务接口:ping++等
存储
- 阿里云、七牛云、AWS S3
配置ASW S3 保存图片
gem 'fog'
config.fog_provider = 'fog'
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: ENV["AWS_ACCESS_KEY_ID"],
aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
region: ENV["AWS_REGION"]
}
config.fog_directory = ENV["AWS_BUCKET_NAME"]
七牛云
gem 'carrierwave-qiniu'
gem 'qiniu-rs'
config/initializers/carrierwave.rb
CarrierWave.configure do |config|
config.storage = :qiniu
config.qiniu_access_key = ENV["qiniu_access_key"]
config.qiniu_secret_key = ENV["qiniu_secret_key"]
config.qiniu_bucket = ENV["qiniu_bucket"]
config.qiniu_bucket_domain = ENV["qiniu_bucket_domain"]
config.qiniu_block_size = 4*1024*1024
config.qiniu_protocol = "http"
config.qiniu_up_host = "http://up.qiniug.com" #选择不同的区域时,"up.qiniug.com" 不同
end
figaro 机密信息管理
gem 'figaro'
bundle install
figaro install
会自动生成 config/application.yml 文件并自动添加到 .gitignore 档案里
cp config/application.yml config/application.yml.example
production:
XXXXX_KEY_ID: ""
development:
XXXXX_KEY_ID: ""
#排版缩进 非常重要,否则报错
一键部署机密信息到heroku
figaro heroku:set -e production
heroku config
可以列出目前所有的设定
SendCloud服务发送邮件
config/environments/production.rb
Rails.application.configure do
...(略)
# config.action_mailer.delivery_method = :letter_opener #dev环境本地预览邮件
config.action_mailer.default_url_options = { :host => '你的herokuapp地址'}
config.action_mailer.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
address: "smtpcloud.sohu.com",
port: 25,
domain: "heroku.com",
authentication: "login",
enable_starttls_auto: true,
user_name: ENV["SEND_CLOUD_USER_NAME"],
password: ENV["SEND_CLOUD_USER_KEY"]
}
end
在线Bug报错 airbrake
https://airbrake.io 三十天免费
gem 'airbrake', '~> 5.4'
bundle install
rails g airbrake PROJECT_ID PROJECT_KEY
配置
config/initializers/airbrake.rb
c.project_id = ENV['PROJECT_ID']
c.project_key = ENV['PROJECT_KEY']
测试
rake airbrake:test
JD-Store购物网站复盘——20170312的更多相关文章
- css3购物网站商品文字提示实例
css3购物网站商品文字提示实例先来看效果图:<ignore_js_op> 当鼠标划过图片时,有着泰迪熊黑色长方形的背景就会出现.来看HTML5+CSS3代码: <!DOCTYPE ...
- springMVC+angular+bootstrap+mysql的简易购物网站搭建
springMVC+angular+bootstrap+mysql的简易购物网站搭建 介绍 前端的css框架用了bootstrap, 以及bootstrap的JS组件, 以及很好用的angular(a ...
- 购物网站首页(学习ING)
这几天在学着做购物网站,初步的完成了首页的框架吧,记录下.慢慢加强.主要难点,是样式的设置问题,如果自己想,自己摸索,可能会需要很长的调试.也是一个孰能生巧的过程吧,有些部分没有按照学习资料的方法也做 ...
- PHP操作实现一个多功能购物网站
PHP操作实现一个多功能购物网站 一.需要实现的页面: Index.aspx:浏览商品页面,显示商品列表,用户可以点击“加入购物车“. ViewCart.aspx:查看购物车页面,显示已购买的商品信息 ...
- php实现一个简单的购物网站
实现一个简单的购物网站 一.考试时间:8小时 二.开发工具:DW 三.数据库:见附件 四.需要实现的页面: Index:浏览商品页面,显示商品列表,用户可以点击“购买“. ViewCart:查看购物车 ...
- Redis构建处理海量数据的大型购物网站
本系列教程内容提要 Java工程师之Redis实战系列教程教程是一个学习教程,是关于Java工程师的Redis知识的实战系列教程,本系列教程均以解决特定问题为目标,使用Redis快速解决在实际生产中的 ...
- 基于Spring+Spring MVC+Mybatis的B2C购物网站
代码地址如下:http://www.demodashi.com/demo/12935.html 准备工作 当前项目运行的系统环境是MacOS,已经测试可以正常运行,并且之前开发的时候也在Windows ...
- JQuery仿购物网站放大镜特效所遇问题及思考
JQuery仿购物网站放大镜特效所遇问题及思考 先贴下效果图,然后描述起来也就不会不知道我在说什么了. 我碰到的问题一: 一开始我自己总结了是因为两个小原因导致的①使用了mouseover,mouse ...
- PHP购物网站
我使用的phpsteam经常用着用着就闪退,所以做起来挺麻烦的.里面的代码有抄袭借鉴网上的代码,就是那个php做购物网站点击量最高的那个. 但是我很多代码也是自己写的不和其相同. PHP是一门选修课, ...
随机推荐
- SpringMVC 自定义类型转换
类型转换可以将请求参数转换为指定的类型.指定的格式(数据的格式化),然后传给业务方法的参数. Spring MVC内置了常用的类型转换器.如果内置的类型转换器满足不了需求,可以使用自定义的类型转换. ...
- 本周总结(19年暑假)—— Part1
日期:2019.7.14 博客期:107 星期日 这几周正在摸索着找寻与大型数据库相关的知识,重装了电脑,配置了虚拟机的环境,继续研究了几下修改器.
- 多个span标签在同一行显示
属性设置为display:inline或display:inline-block
- 微信小程序(基础)
文档官网:https://developers.weixin.qq.com/miniprogram https://developers.weixin.qq.com/miniprogram/dev/f ...
- HBase基准测试
执行命令: hbase org.apache.hadoop.hbase.PerformanceEvaluation 返回信息: [root@node1 /]# hbase org.apache.had ...
- 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)
转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...
- MAC Matlab 中文乱码
环境:macOS High Sierra 10.13.4 问题:文件中文注释乱码(再次打开文件时) / 控制台输出中文乱码 解决方法: 官网下载补丁(https://ww2.mathworks.cn/ ...
- 【Python基础知识】【语法】【入门】
一.Python概述 Python是一门面向对象的编程语言,拥有强大丰富的库,没有操作系统的限制,是一种优美.清晰的编程语言. 二.Python基础语法 1.Python标识符 标识符就是程序中定义的 ...
- LUOGU P6034 Ryoku与最初之人笔记 简要题解
比赛的时候有个地方忘记取模怒砍80,调了一下午Orz(虽然我总共貌似就打这个比赛半个多小时 我们一眼看到涉及到公约数/同余 和 xor,所以我们想到了一些关于xor的性质 a+b >= a xo ...
- bzoj 4747: [Usaco2016 Dec]Counting Haybales
23333,在扒了一天题解之后发现我竟然还能秒题,虽然这是个pj的sb题... (排个序,然后upper_bound和lower_bound一用就行了(是不是有O(1)的查询方法啊??貌似要离散啊,一 ...