ruby实现下订单后给客户发送手机序列号
还有半个小时下班,写点今天做的功能,打发打发时间.
两个类,订单类和序列号类.
订单类
class GroupOrder
include Mongoid::Document
include Mongoid::Timestamps field :order_code, type: String
field :cellphone_num, type: String
field :quantity, type: Integer
field :state, type: String has_many :verify_serial_nums 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(",")}
订单类下支付成功后创建多个序列号代码:
self.quantity.times do
begin
VerifySerialNum.create({
:code => SecureRandom.uuid.gsub(/-/,"")[0..9],
:group_order => self
})
rescue
redo
end
end
若产生的序列号不是惟一的,就redo 再次执行本次循环.
最后调用短信接口把短信内容和电话号码传过去就OK.
content = "兑换码为:'#{self.verify_serial_nums.map(&:code).join(",")}'"
Sender.send_code_channel(content, self.cellphone_num)
ruby实现下订单后给客户发送手机序列号的更多相关文章
- Zencart先生成订单后付款,类似淘宝后台修改订单价格
Zencart 使用 Paypal 付款,会出现漏单的情况,即 paypal 已经收到客户的付款,但是网站后台没有客户的订单.导致 paypal 漏单的原因大致会是当客户跳转到Paypal 网站付款完 ...
- Bigcommerce: 给已完成购买的客户发送一封产品评论邮件,让客户直接进行产品评论
需求说明:进入后台的Order列表,更新订单状态:Awaiting Pickup后,就会给客户发送一封希望他们能进行评论的邮件.在邮件中展示该订单下的所有产品,每个产品都有一个评论的跳转链接,点击后直 ...
- 在浏览器中输入URL按下回车键后发生了什么
在浏览器中输入URL按下回车键后发生了什么 [1]解析URL[2]DNS查询,解析域名,将域名解析为IP地址[3]ARP广播,根据IP地址来解析MAC地址[4]分别从应用层到传输层.网络层和数据链路层 ...
- PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)
源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...
- Windows下Kettle定时任务执行并发送错误信息邮件
Windows下Kettle定时任务执行并发送错误信息邮件 1.首先安装JDK 2.配置JDK环境 3.下载并解压PDI(kettle) 目前我用的是版本V7的,可以直接百度搜索下载社区版,企业版收费 ...
- Ubuntu 下使用 mutt 和 msmtp 发送 Gmail 邮件
参考: http://www.cnblogs.com/refrag/archive/2012/11/28/2793533.html http://www.habadog. ...
- vs2017 在win10下安装后开始运行asp.net core 项目时出错
vs2017 在win10下安装后开始运行asp.net core 项目时出错 报找不到什么 解决方法: 下载 asp.net 2.2 安装好,重新启动电脑问题解决.
- 代码: 两列图片瀑布流(一次后台取数据,图片懒加载。下拉后分批显示图片。图片高度未知,当图片onload后才显示容器)
代码: 两列图片瀑布流(一次后台取数据,无ajax,图片懒加载.下拉后分批显示图片.图片高度未知,当图片onload后才显示容器) [思路]: 图片瀑布流,网上代码有多种实现方式,也有各类插件.没找到 ...
- 服务器运维 -- windows系统更换System32下文件后 重启无法进入桌面
场景描述: windows系统更换System32下文件后 重启无法进入桌面 情况1,原替换文件有备份 解决建议: 准备好该文件 情况2,原备份文件没有备份 解决建议:从相同版本的服务器上边 ...
随机推荐
- Delphi Dll 动态调用例子(1)
http://blog.sina.com.cn/s/blog_62c46c3701010q7h.html 一.编写dll library TestDllByD2007; uses SysUtils, ...
- WPF/Silverlight开发的15个最佳实践(转发)
英文出处:http://www.kunal-chowdhury.com/2010/08/some-best-practices-for-silverlight.html 作者:Kunal Chowdh ...
- Jesery客户端工具类
public class JerseyClientUtil { public static<T> T sendMsg(String url,Object object,Class<T ...
- NET 下载共享文件
执行 public static void Run() { "); if (state) { // 共享文件夹的目录 TransportRemoteToLocal(@"\\192. ...
- .net推送微信消息模板
1.获取access_token public string GetAccess_Token() { string appid = WxPayConfig.APPID; string appsecre ...
- C# 图片反色处理 图片夜间模式
项目属性-->生成-->允许不安全代码勾上. 代码: /// <summary> /// 反色处理 /// </summary> private Bitmap In ...
- golang 编译为dll 的方法
之前一直再找如何将geojson 转为 svg 格式的数据,看到github上大多都是js来转的,只有一篇是golang来做的,想来把它封成dll 给c#.c++ 调用,网上查了很多方法,并没有写的很 ...
- 如何将Spring Boot项目打包部署到外部Tomcat
1.项目打包 项目开发结束后,需要打包部署到外部服务器的Tomcat上,主要有几种方式. (1)生成jar包 cd 项目跟目录(和pom.xml同级)mvn clean package## 或 ...
- brew - 更换国内源
brew如果不换成国内源,安装软件时候可能会出问题,不是安装不了就是速度很慢,所以使用它,更换国内游是比较好的选择! 我更换的是清华大学开源软件镜像站,打开shell窗口,依次执行下面命令: cd & ...
- 读取GY-951模块数据(Linux)
参考:https://github.com/Razor-AHRS/razor-9dof-ahrs/wiki/Tutorial#sensor-calibration 链接中使用的硬件是SparkFun“ ...