• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ruby实现下订单后给客户发送手机序列号

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  还有半个小时下班,写点今天做的功能,打发打发时间.

  两个类,订单类和序列号类.

 

  订单类

  

 1 class GroupOrder
 2   include Mongoid::Document
 3   include Mongoid::Timestamps
 4 
 5   field :order_code, type: String
 6   field :cellphone_num, type: String
 7   field :quantity, type: Integer
 8   field :state, type: String
 9 
10   has_many :verify_serial_nums
11 
12 end

订单的state 用状态机来管理.

  序列号类

class VerifySerialNum
  include Mongoid::Document
  include Mongoid::Timestamps

  field :code, type: String
  field :state, type: String

  belongs_to :group_order

  validates_uniqueness_of :code

end

 

  

需求是这样的: 在一个订单创建并且付款成功之后,需要产生序列号,订单下有几件商品就产生多少个序列号.在订单的序列号产生完毕之后,调用短信接口给顾客发送短信.

序列号产生的方法是用ruby中SecureRandom类产生的.

SecureRandom.uuid.gsub(/-/,"")[0..9]

限制10位验证码, validates_uniqueness_of :code 来唯一性验证.

短信内容要显示订单下的所有序列号,实现方法:

#{self.verify_serial_nums.map(&:code).join(",")}

 

订单类下支付成功后创建多个序列号代码:

 1 self.quantity.times do
 2       begin
 3         VerifySerialNum.create({
 4           :code => SecureRandom.uuid.gsub(/-/,"")[0..9],
 5           :group_order => self
 6           })
 7       rescue
 8         redo
 9       end
10     end

若产生的序列号不是惟一的,就redo 再次执行本次循环.

 

最后调用短信接口把短信内容和电话号码传过去就OK.

content = "兑换码为:'#{self.verify_serial_nums.map(&:code).join(",")}'"
Sender.send_code_channel(content, self.cellphone_num)

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【夯实Ruby基础】Ruby快速入门发布时间:2022-07-13
下一篇:
关于解决ruby源码安装geminstall报错问题发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap