开源项目 基于 Rails 5 的 B2C 电商开源项目

ccok · 发布于 2017年02月22日 · 最后由 ccok 回复于 2017年07月20日 · 3769 次阅读
2781

Demo地址: http://rails5-b2c.eggman.tv/
源码地址: https://github.com/eggmantv/master_rails_by_actions

这个项目离真正的线上使用还差得远,毕竟只是技术目的的教学使用,如果有哪位朋友想把它真的做到线上使用的程度的话,欢迎联系我,对于我来说精力可能不够了

该项目主要是我们自己开发的用于教学目的一个开源项目,项目基于Rails 5,实现的功能就是传统的B2C电商平台中常用的功能,包括:

  • 用户注册登录(支持手机验证码或者邮箱)
  • 购物车
  • 收货地址
  • 订单
  • 支付(集成了支付宝支付功能)
  • 后台管理功能(涵盖商品管理,商品图片,一二级分类)
  • 前台其他相关功能(比如商品搜索,分类页面,单品页,用户中心)

项目使用技术:

  • ruby 2.3
  • rails 5
  • mysql

前台框架:

  • bootstrap
  • font-awesome

涉及到的主要Gem:

  • sorcery
  • ancestry
  • paperclip
  • rest-client
  • rspec

适用对象:

  • 想从产品或者技术角度学习电商平台核心功能的同学
  • ruby和rails已经入门的同学

项目地址: https://github.com/eggmantv/master_rails_by_actions

共收到 45 条回复
De6df3

部署起来看看呀

2781

#1楼 @huacnlee 说的是,马上就部署

2781

#1楼 @huacnlee

Demo: http://rails5-b2c.eggman.tv/

后台管理账号: test@test.com/a5zktij5 http://rails5-b2c.eggman.tv/admin

请大家不要修改密码,谢谢!

2141

赞👍

15307
8cd1d3lgn21st 回复

👍

我以为会一直嵌套呢 😄

1638
15307angelfan 回复

👍 原来不会连续嵌套呀

96

赞 学习一个

1090
2781ccok 回复

发现一个bug,加入购物车以后,点继续购物,右上角购物车里的数量没变

2781
1090benzhang 回复

不是bug亲,加入完是不会刷新数量的,需要刷新页面

这个项目以后端为主,前端没有涉及太复杂的业务逻辑,否则项目目标就跑偏了

29283

订阅了,在学习中👍 👍 👍

1
2781ccok 回复

缺了必须的页面反馈,用户不知道怎么用,这就是个 bug 。

2781
1Rei 回复

这个项目并不是能让你拿来直接放到线上就能用的,侧重于教学目的,主要是后端的实现,前端确实不完善

日后有时间我们会再完善下前端,不好意思

28931

挺不错,不过还处在demo阶段,加油💪

49

@ccok 跑个题,注册主站时遇到下述错误:

“密码长度不能小于6位或者大约20位”

  1. 大约 -> 大于
  2. 为啥限制最大长度呢?
2302

@ccok 哈哈,玩了一下,不错. 顺带提个小问题,登录状态还能进入到登录页面.

2781
2302joey 回复

嗯,多谢了

这个项目离真正的线上使用还差得远,毕竟只是技术目的的教学使用,如果有哪位朋友想把它真的做到线上使用的程度的话,欢迎联系我,对于我来说精力可能不够了

1553
2781ccok 回复

建议不要以真正上线为目标,工作量太大了,Magento 几百 MB 的代码还有无数的插件及主题资源是一个小团队短期内无论如何都比不上的。

在线商城,用现成的就好了,这不是个小轮子。

E40b21

Magento是php的。

1107

我当初给 KnewOne 做电商的时候,差不多的体验和功能,模型1000来行,前端算上可能差不多2000行的样子吧。。。写了一个月不到,特化需求不是很难做的,主要是做成生产级系统要考虑很多边界情况(比如最常见的超售,和微信支付、支付宝之类对接的各种情况),一个是可能小难,或是太业务导向违背了教学的目的。

2781
1107jasl 回复

确实是,所以我们这个当初就是教学目的的,有很多不能太考虑细节,或者深入定制,否则就跑偏了,别人看代码时就容易抓不到重点

1107
2781ccok 回复

是呀!不忘初心嘛

4938

貌似代码没有考虑concurrency问题

4938

也没有考虑地址可能修改的问题

2781
4938dy1901 回复

考虑了亲

4938
2781ccok 回复

比如下面payment里面这段代码

def self.create_from_orders! user, *orders
  orders.flatten!

  payment = nil
  transaction do
    payment = user.payments.create!(
      total_money: orders.sum(&:total_money)
    )

    orders.each do |order|
      if order.is_paid?
        raise "order #{order.order_no} has already paid"
      end

      order.payment = payment
      order.save!
    end
  end

既没有看到使用悲观锁,订单上也没有创建乐观锁,方法内也并没有分布式锁做排他调用保证

create_table "orders", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
  t.integer  "user_id"
  t.integer  "product_id"
  t.integer  "address_id"
  t.string   "order_no"
  t.integer  "amount"
  t.decimal  "total_money", precision: 10, scale: 2
  t.datetime "payment_at"
  t.datetime "created_at",                                               null: false
  t.datetime "updated_at",                                               null: false
  t.integer  "payment_id"
  t.string   "status",                               default: "initial"
  t.index ["order_no"], name: "index_orders_on_order_no", unique: true, using: :btree
  t.index ["payment_id"], name: "index_orders_on_payment_id", using: :btree
  t.index ["user_id"], name: "index_orders_on_user_id", using: :btree
end

1346

教学分享项目不用太苛求细节吧, 不完善的地方自己下去完善后提交上来哦, 已经做的很不错了 👍

96

应当要苛求吧,不然学员怎么知道这些知识

28928

只是教学项目,就好像是高中的数学,前面教的与课后习题一个道理,道理教给你了剩下的看自己了,教程不错😄

96

确实比较坑,最近用户有个需求,要快速的弄个简易版的商城,然后我就看中这个了。感觉楼主对web开发有一定经验,但是对rails使用应该时间并不是很长。常用的gem没有用到。刚刚还遇到一个很极低的错误,引入的js放在body最下边。而不是head里边。导致我调用jquery所有的东西都出错。这个问题太不应该了,绕了个大湾。

96

不过还是感觉楼主,让我省去了不少敲代码的麻烦,大家一起进步

2781
32279959599 回复

。。。js放在页面底部是优化一个常识,加快页面渲染

常用的gem这个是看项目需求的

4375
2781ccok 回复

如果用rails 自带的 turbolinks 是需要把 javascript tag 放在 head 里面的,如果不用 turbolinks, 我也喜欢放底部,少套一层 domready 回调。

2781
4375saiga 回复

rails 5中不是必须放在head中了

96

当然不是必须放head里边,放在最后的话,在页面里写的js调用jquery怎么掉用呢。先执行页面中的js,在加载jquery。肯定会暴错,我说的问题是在这里。加载顺序问题。

96

@ccok 我是订阅会员,但是已经1个多月没更新了,最后更新是6/6 ...请问何时能有更新?不是说每周都会有更新内容吗?

2781
32lc.sh.523 回复

你再多个帖子中发一样的内容,不是浪费资源吗

。。。,多关注一下网站吧,我们每周都有更新,https://eggman.tv/

96

问题是有关注没看到更新啊老板...多发是因为你没回应啊......不然你hightlight一下这月更新的内容?我最后看到的是Ruby的大师之路GC优化2017年6月6日 更新,然后我7/16问完问题,很恰巧的在7/18就更新完结...也请你多关注一下问题吧,毕竟是付费订阅的,收钱的老板,三天才回应。..加油好吗?

96

那你可以节省点资源回一次就好啊...

2781
32lc.sh.523 回复

如果有问题可以直接去网站和我们联系,有联系方式的,这里关注不多

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册