使用Parse建立电子商务推荐系统
Setting up referral system for e-commerce using Parse
我试图为每个在我的解析平台上注册的用户生成一个唯一的代码。把它看作一个推荐代码。在研究了Uber, Ola, Flipkart等应用程序生成的代码后,我决定这样做-
1)取用户名并将其与姓氏的第一个字母连接。
2)然后将其用作附加以000开头的数字的基本引用代码。如果存在这样的代码,则数字递增。考虑使用3位十六进制数,以保证灵活性。
3)一旦生成了唯一的代码,它就存储在我的解析数据库中。
4)用户类有一个列存储其各自的引用代码,并且还有另一个引用代码类,其输入作为生成的每个唯一引用代码。这是我目前正在考虑的结构。
到目前为止我做了什么-
Parse.Cloud.define("generateReferralCode", function(request, response){
var objectId=request.params.data;
var query = new Parse.Query(Parse.User);
Parse.Cloud.useMasterKey();
query.equalTo("objectId", objectId);
query.first({
success: function(user) {
response.success(" Received user info ");
var name=user.getUsermame;
var lowerCaseName= name.toLowerCase();
var words = lowerCaseName.split(" ");
var baseCode= words[0] + words[1].charAt(0);
},error: function() {
response.error("Something went horribly wrong!");
}
});
})
我要做的是附加一个3位十六进制数,使其唯一且比最后一个(最大)数字多一个。
Parse.Cloud.define("generateReferralCode", function(request, response){
var objectId=request.params.data;
var query = new Parse.Query(Parse.User);
Parse.Cloud.useMasterKey();
query.equalTo("objectId", objectId);
query.first({
success: function(user) {
var name=user.get("ProfileName");
var lowerCaseName= name.toLowerCase();
var words = lowerCaseName.split(" ");
var baseCode= words[0] + words[1].charAt(0)+ words[1].charAt(1)+ words[1].charAt(2);
// Can take only words[1].chatAt(0) and ignore the others.
var referral= Parse.Object.extend("ReferralCode");
var queryR = new Parse.Query(referral);
queryR.startsWith("referralCodeColumn", baseCode);
queryR.find({
success: function(results) {
var number= results.length;
var hexaString = (number).toString(16);
var referralCode = baseCode+hexaString;
response.success(referralCode);
},
error: function(error) {
response.error("Error: " + error.code + " " + error.message);
}});
},error: function() {
response.error("Something went horribly wrong!");
}
});
});
我使用的系统如下
- 用户的个人资料被分成两个单词
- 一个'基本代码'是由名字和第二个名字的第一个字母生成的
- 具有相同起始值的现有代码将从查询中计数。该数字递增并附加到'基代码'中,最后存储在解析数据库 中。
android端的代码为
user.signUpInBackground(new SignUpCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
HashMap atMap = new HashMap<>();
String objectId = ParseUser.getCurrentUser().getObjectId();
atMap.put("data", objectId);
ParseCloud.callFunctionInBackground("generateReferralCode", atMap, new FunctionCallback<String>() {
@Override
public void done(String value, ParseException e) {
if (e == null) {
Log.d("Referral code is", value);
}
}
});
} else
Toast.makeText(RegisterActivity.this, "Error: failed to sign up " + e.getMessage(), Toast.LENGTH_LONG).show();
}
});
如果两个具有相同Name的用户一起注册,那么他们可能会得到相同的引用代码,这就违背了目的。为了解决这个问题,我将使用一个afterSave触发器,我将在后面的阶段合并。因此,为了使这种情况更不可能发生,我正在取名字和姓氏的前3个字母,以减少发生这种问题的机会,这不是理想的方式!
相同代码Varun Agarwal -> [Varun, Agarwal] -> varunaga -> varunaga + 'number'
第一个引用代码将是varunaga0,然后是varunaga1,直到varunagaf,然后变为varunaga10。
相关文章:
- 动态分配GA增强型电子商务跟踪器
- 在电子商务结账过程中显示特定于上下文的错误
- 如何在电子商务表格上要求最低数量
- 谷歌分析中没有电子商务跟踪
- Bootstrap v2.3.2电子商务结账页面中的奇数对齐
- 谷歌分析电子商务跟踪仅收到2个项目中的3个
- 如何创建电子商务网站
- 是否可以在使用电子商务扩展时将自定义变量发送到谷歌分析
- 谷歌分析 API 电子商务数据
- “未捕获的类型错误:无法读取未定义的属性'电子商务'”的可能原因
- 如何从 Odoo 8 的前端删除 Powered by Odoo #1 开源电子商务页脚
- NodeJS - 任何电子商务解决方案
- 如何在Magento电子商务网站版本1.3.2.4中包含带有脚本的自定义js文件
- 使用javascript(a/b-test)对电子商务页面进行排序
- 使用滚动事件正确实现GA增强型电子商务addImpression
- 如何仅使用javascript对电子商务网站进行索引
- 如何水平显示我格式化的JSON数据,类似于电子商务网站
- 根据商品价格对电子商务网站上的商品进行排序
- 如何计算产品在电子商务网站上的排名/位置
- 使用Parse建立电子商务推荐系统