1、后端使用nutz(nutz是什么看这里:http://bbs.wex5.com/forum.php?mo ... 5492&highlight=nutz)
2、两个数据表:customer、customerSrv
3、customer表:用户表,app的用户,用户登录需要这张表
4、customerSrv表:客服表,客服也可以登录铛铛,暂时客服只设置一人,客户只能pc端登录,app端暂时没有支持。一般情况客服用pc端更合适。
5、loginByWx5:铛铛用户登录,由于用app自己的用户登录,不需要铛铛的登录界面,app用户登录后把铛铛需要的信息保存到localStroge中
6、重点关注localStorage的chat_loginData,app登录成功后,按照铛铛的规则要求把用户、密码信息加密后保存到chat_loginData中
7、铛铛自己的登录代码要注释掉,不能弹出铛铛的登录界面,涉及的地方比较多,不贴代码了,一步步调试可以解决
/chat/wex5/js/im.wex5.impl.js
代码片段:
loginByWx5
var loginByWex5 = function(params) {
var ret;
var userParams = {};
userParams.CurrentPersonID = "";
userParams.CurrentPersonName = "";
userParams.CurrentPersonFID = "";
userParams.CurrentPersonFName = "";
userParams.CurrentOgnID = "";
userParams.CurrentOgnName = "";
userParams.CurrentDeptID = "";
userParams.CurrentDeptName = "";
userParams.CurrentDeptFID = "";
userParams.CurrentDeptFName = "";
userParams.CurrentOgnFID = "";
userParams.CurrentOgnFName = "";
userParams.CurrentFunRole = "3";// 默认为3:普通员工。(1:公司领导;2:部门主管;3:普通员工)
justep.Baas.sendRequest({
//"url" : "/org/login",
"url" : "/ecoolper/chat",
//"action" : "loginAction",
"action" : "login",
"async" : false,
"params" : {
"userName" : params.username,
"password" : params.password
},
"success" : function(data) {
ret = data;
if (ret.flag) {
userParams.CurrentPersonID = ret.personID;
userParams.CurrentPersonName = ret.personName;
//wjw(20160806),注释。。。
// userParams.CurrentPersonFID = ret.CurrentFID;
// userParams.CurrentPersonFName = ret.CurrentFName;
// userParams.CurrentOgnID = ret.CurrentOgnID;
// userParams.CurrentOgnName = ret.CurrentOgnName;
// userParams.CurrentFunRole = ret.CurrentFunRole;
//
// userParams.CurrentOgnFID = "/" + ret.CurrentFID.split("/")[1];
// userParams.CurrentOgnFName = "/" + ret.CurrentFName.split("/")[1];
// if (ret.CurrentFID.indexOf("dpt") > 0) {
// userParams.CurrentDeptID = ret.CurrentDeptID;
// userParams.CurrentDeptName = ret.CurrentDeptName;
// userParams.CurrentDeptFID = ret.CurrentFID.substring(0, ret.CurrentFID.indexOf("dpt") + 3);
// userParams.CurrentDeptFName = ret.CurrentFName.substring(0, ret.CurrentFName.indexOf("/", ret.CurrentFName.indexOf("/", 2) + 1));
// }
saveLoginDataToStore(userParams);
}
}
});
return ret;
};
loadPerson
loadPerson : function(persons, pid) {
var deferred = $.Deferred();
justep.Baas.sendRequest({
//"url" : "/org/loadPerson",
"url" : "/ecoolper/chat",
"action" : "loadPerson",
"async" : false,
"params" : {
"sPersonID" : pid
},
"success" : function(data) {
//客户id
localStorage.setItem("customerSrv", data.customerSrv);
$.each(data.persons, function(i, v) {
var p = {
id : v.sPersonID,
name : v.sName,
uid : v.sNumb,
avatar : getPersonAvatar(v.sPhoto),
nick : '',
phones : [],
about : ''
};
persons[v.sPersonID] = new Person(p);
});
deferred.resolve(persons);
}
});
return deferred.promise();
},
updatePersonUid:更新数据库中的sNumb字段
updatePersonUid : function(uid, pid) {
var self = this;
var deferred = $.Deferred();
justep.Baas.sendRequest({
"url" : "/zlz/crm/person",
"action" : "updateUid",
"async" : false,
"params" : {
"uid" : uid,
"pid" : pid
},
"success" : function(data) {
if (data.state) {
var person = self._getPerson(pid);
if (person) {
person.uid = uid;
}
}
deferred.resolve();
}
});
return deferred.promise();
},
后端java代码片段,用nutz实现对应js中的loginByWx5
@At("/login")
@Ok("json")
@AdaptBy(type = JsonAdaptor.class)
public JSONObject login(@Param("..") JSONObject params) {
String userName = params.getString("userName");
String password = params.getString("password");
JSONObject ret = new JSONObject();
if (Strings.isBlank(userName)) {
ret.put("flag", false);
ret.put("message", "登录名不能为空");
} else {
Cnd cnd = Cnd.NEW();
cnd.and("phone", "=", userName);
cnd.and("password", "=", password);
Customer customer = dao.fetch(Customer.class, cnd);
if (customer == null) {
ret.put("flag", false);
ret.put("message", "登录名或密码错误");
} else {
ret.put("flag", true);
ret.put("personID", customer.getId());
ret.put("personName", customer.getNickname());
ret.put("message", "");
ret.put("CurrentFunRole", "");
ret.put("CurrentOgnID", "");
ret.put("CurrentOgnName", "");
ret.put("CurrentDeptID", "");
ret.put("CurrentDeptName", "");
ret.put("CurrentFID", "");
ret.put("CurrentFName", "");
ret.put("isInOrg", true);
}
}
return ret;
}
对应js中的loadPerson
@At("/loadPerson")
@Ok("json")
@AdaptBy(type = JsonAdaptor.class)
public JSONObject loadPerson(@Param("..") JSONObject params) throws SQLException, NamingException {
String id = params.getString("sPersonID");
JSONObject ret = new JSONObject();
JSONArray jArray = new JSONArray();
// 本人
Customer customer = dao.fetch(Customer.class, id);
if (customer != null) {
JSONObject json = new JSONObject();
json.put("sID", customer.getId());
json.put("sChineseFirstPY", "");
json.put("sFID", "");
json.put("sCode", "");
json.put("sFCode", "");
json.put("sFName", customer.getNickname());
json.put("sName", customer.getNickname());
json.put("sNumb", customer.getNumb());
json.put("sOrgKindID", "");
json.put("sPersonID", customer.getId());
json.put("sPhoto", "");
json.put("sSequence", "");
json.put("sValidState", "");
jArray.add(json);
}
// 客服
CustomerSrv cusSrv = dao.fetch(CustomerSrv.class);
if (cusSrv != null) {
JSONObject json = new JSONObject();
json.put("sID", cusSrv.getId());
json.put("sChineseFirstPY", "");
json.put("sFID", "");
json.put("sCode", "");
json.put("sFCode", "");
json.put("sFName", cusSrv.getName());
json.put("sName", cusSrv.getName());
json.put("sNumb", cusSrv.getNumb());
json.put("sOrgKindID", "");
json.put("sPersonID", cusSrv.getId());
json.put("sPhoto", "");
json.put("sSequence", "");
json.put("sValidState", "");
jArray.add(json);
ret.put("customerSrv", cusSrv.getId());
}
ret.put("persons", jArray);
return ret;
}
对应js中的:updatePersonUid
@At("/updateUid")
@Ok("json")
@AdaptBy(type=JsonAdaptor.class)
public JSONObject updatePersoUid(JSONObject params) {
JSONObject ret = new JSONObject();
ret.put("flag", false);
String pid = params.getString("pid");
int uid =Integer.parseInt(params.getString("uid") == null ? "0" : params.getString("uid").toString()); ;
//客服表
CustomerSrv customerSrv =dao.fetch(CustomerSrv.class, pid);
if(customerSrv !=null){
customerSrv.setNumb(uid);
dao.update(customerSrv);
ret.put("flag", true);
return ret;
}
//客户表
Customer customer =dao.fetch(Customer.class, pid);
if(customer !=null){
customer.setNumb(uid);
ret.put("flag", true);
return ret;
}
return ret;
}
本文暂时没有评论,来添加一个吧(●'◡'●)