|
云商品应用中心已经正式发布了,今天给大家编写一个_buy事件的逻辑代码模板
首先根据我们的教程视频的PPT的流程图,给大家编写一个大的逻辑框架
代码逻辑框架
- //account 购买人
- //order 订单号
- //merchandise 商品名称
- //merch_type 商品类型
- //num 商品数量
- //remark 预留参数
- function _buy(account, order, merchandise, merch_type, num, remark)
- //1、处理本地数据库需要进行的一些操作,并组合商品信息,支持html
- var regcode_bk = ""
- if(merchandise == "注册码购买")//商品名称判断
- var result = ""
- select(merch_type)//商品类型判断
- case "月卡"
- //代码,生成月卡
- case "周卡"
- //代码,生成周卡
- case "天卡"
- //代码,生成天卡
- default
- //商品类型不对,生成失败
- return
- end
-
- if(strlen(result) == 0)//判断商品信息,如果商品信息为空,表示发货一定是失败的
- //生成商品信息为空,生成失败
- return
- end
- //2、进行发货操作
- //参数1 订单号
- //参数2 通知用户,发货成功还是发货失败,填true表示发货成功,填false表示发货异常
- //参数3 通知用户的具体信息内容,支持 html 标签
- var ret = shipment(order, true, result)
- //3、判断发货是否成功,如果发货失败,需要删除数据库中已经添加数据
- if(!ret)
- //如果发货失败,需要删除数据库中已经添加数据
- //如果发货失败,需要删除数据库中已经添加数据
- //如果发货失败,需要删除数据库中已经添加数据
- var ret_arr
- select(merch_type)
- case "月卡"
- //删除第一步生成的月卡
- case "周卡"
- //删除第一步生成的周卡
- case "天卡"
- //删除第一步生成的天卡
- end
- if(!ret)
- //删除第一步生成的数据失败,通知作者,需要手动处理
- end
- //如果发货失败,需要删除数据库中已经添加数据
- //如果发货失败,需要删除数据库中已经添加数据
- //如果发货失败,需要删除数据库中已经添加数据
- end
- end
- end
复制代码
上面的框架代码中,一些比较重要的功能实现部分预留了注释
下面分成三个分部,来写重要功能的逻辑实现部分
第一部分,批量注册码生成,也就是商品生成部分
- //批量生成注册码
- function RegcodeCreate(type, num,regcode_bk)
- var DB_Handle = sqliteopen(g_DB_Name)
- var ret = false
- var result = ""
- if(DB_Handle > 0)
- sqlitebegintransaction(DB_Handle)
- for(var i = 0;i < num;i++)//注册单次生成过多会比较慢,建议单次100条左右
- var t = timenow()
- var str = sha1(t&gettickcount())
- if(i != 0)
- regcode_bk = regcode_bk&",'"&str&"'"
- else
- regcode_bk = regcode_bk&"'"&str&"'"
- end
- result = result&str&"<br>"
- var sql = strformat("insert into 注册码管理表(注册码,卡类型,创建时间,卡来源) values('%s','%s','%s','在线购买')", str, type, t)
- ret = sqlitehandleexecsql(DB_Handle, sql)
- if(!ret)
- break
- end
- end
- if(!ret)
- sqliterollbacktransaction(DB_Handle)
- filelog("sqliterollbacktransaction"&getlasterror(1))
- result = ""
- else
- if(!sqlitecommittransaction(DB_Handle))
- filelog("sqlitecommittransaction"&getlasterror(1))
- result = ""
- end
- end
- sqliteclose(DB_Handle)
- end
- return result
- end
复制代码
第二步,当生成注册码异常的时候,我们需要向商品页面反馈对应错误信息,提示给用户,并清理掉,已经添加成功的一些数据- //商品异常处理
- //order 订单号
- //errormsg 错误信息
- //sql 需要清理数据库数据的sql语句
- //db_name 数据库名字
- function merch_Exception(order, errormsg, sql = "", db_name = "")
- shipment(order, false, errormsg)//发货返回假的状态,表示向商品页面提供错误的信息
- filelog(timenow()&"\t"&errormsg, "_buy事件异常")
- if(strlen(sql) > 0 && strlen(db_name) > 0)
- if(sqliteexecsql(db_name, sql))
- filelog(timenow()&"\t删除已生成数据失败,请作者手动处理", "_buy事件异常")
- end
- end
- end
复制代码
第三步,处理发货函数的逻辑,如果发货函数出现错误,我们同样要处理对应的异常信息
- //发货异常处理
- //errormsg 错误信息
- //sql 需要清理数据库数据的sql语句
- //db_name 数据库名字
- function shipment_Exception(errormsg, sql = "", db_name = "")
- filelog(timenow()&"\t"&errormsg, "_buy事件异常")
- if(strlen(sql) > 0 && strlen(db_name) > 0)
- if(sqliteexecsql(db_name, sql))
- filelog(timenow()&"\t删除已生成数据失败,请作者手动处理", "_buy事件异常")
- end
- end
- end
复制代码
到这里,整个逻辑功能就写好了,最后给大家贴上一份完整的示例代码,中间可能某些细节部分处理不足的地方,请大家多多指出
- //account 购买人
- //order 订单号
- //merchandise 商品名称
- //merch_type 商品类型
- //num 商品数量
- //remark 预留参数
- function _buy(account, order, merchandise, merch_type, num, remark)
- //1、处理本地数据库需要进行的一些操作,并组合商品信息,支持html
- var regcode_bk = ""
- if(merchandise == "注册码购买")//商品名称判断
- var result = ""
- select(merch_type)//商品类型判断
- case "月卡"
- result = RegcodeCreate(merch_type, num, regcode_bk)
- case "周卡"
- result = RegcodeCreate(merch_type, num, regcode_bk)
- case "天卡"
- result = RegcodeCreate(merch_type, num, regcode_bk)
- default
- merch_Exception(order,"商品类型错误,请联系作审核商品类型")
- return
- end
- if(strlen(result) == 0)//判断商品信息,如果商品信息为空,表示发货一定是失败的
- merch_Exception(order,"生成商品信息出错,请重试")
- return
- end
- //2、进行发货操作
- //参数1 订单号
- //参数2 通知用户,发货成功还是发货失败,填true表示发货成功,填false表示发货异常
- //参数3 通知用户的具体信息内容,支持 html 标签
- var ret = shipment(order, true, result)
- //3、判断发货是否成功,如果发货失败,需要删除数据库中已经添加数据
- if(!ret)
- //如果发货失败,需要删除数据库中已经添加数据
- //如果发货失败,需要删除数据库中已经添加数据
- //如果发货失败,需要删除数据库中已经添加数据
- shipment_Exception("系统发货失败",getlasterror(1),strformat("delete FROM 注册码管理表 where 注册码 in(%s)", regcode_bk),g_DB_Name)
- //如果发货失败,需要删除数据库中已经添加数据
- //如果发货失败,需要删除数据库中已经添加数据
- //如果发货失败,需要删除数据库中已经添加数据
- end
- end
- end
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|