起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10009|回复: 19

[分享] 【分享】app集成铛铛,使用app自己的用户,nutz做为后端

  [复制链接]

997

主题

4326

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10696
QQ
发表于 2016-8-8 21:51:06 | 显示全部楼层 |阅读模式
本帖最后由 ecoolper 于 2016-8-10 10:21 编辑

【分享】app集成铛铛,使用app自己的用户,nutz做为后端
一楼占位,开始。。。
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、铛铛自己的登录代码要注释掉,不能弹出铛铛的登录界面,涉及的地方比较多,不贴代码了,一步步调试可以解决

评分

参与人数 1威望 +15 收起 理由
kenminkajp + 15 赞一个!

查看全部评分

孤舟蓑笠翁,独钓寒江雪。
X5牛刀交流民间第一群:30057529
提供有偿服务,联系WX:18332024
bex5疑难问题解决方案

997

主题

4326

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10696
QQ
 楼主| 发表于 2016-8-8 21:56:55 | 显示全部楼层
本帖最后由 ecoolper 于 2016-8-8 22:07 编辑

/chat/wex5/js/im.wex5.impl.js
代码片段:
loginByWx5
  1.         var loginByWex5 = function(params) {
  2.                 var ret;
  3.                 var userParams = {};
  4.                 userParams.CurrentPersonID = "";
  5.                 userParams.CurrentPersonName = "";
  6.                 userParams.CurrentPersonFID = "";
  7.                 userParams.CurrentPersonFName = "";
  8.                 userParams.CurrentOgnID = "";
  9.                 userParams.CurrentOgnName = "";
  10.                 userParams.CurrentDeptID = "";
  11.                 userParams.CurrentDeptName = "";
  12.                 userParams.CurrentDeptFID = "";
  13.                 userParams.CurrentDeptFName = "";
  14.                 userParams.CurrentOgnFID = "";
  15.                 userParams.CurrentOgnFName = "";
  16.                 userParams.CurrentFunRole = "3";// 默认为3:普通员工。(1:公司领导;2:部门主管;3:普通员工)
  17.                 justep.Baas.sendRequest({
  18.                         //"url" : "/org/login",
  19.                         "url" : "/ecoolper/chat",
  20.                         //"action" : "loginAction",
  21.                         "action" : "login",
  22.                         "async" : false,
  23.                         "params" : {
  24.                                 "userName" : params.username,
  25.                                 "password" : params.password
  26.                         },
  27.                         "success" : function(data) {
  28.                                 ret = data;
  29.                                 if (ret.flag) {
  30.                                         userParams.CurrentPersonID = ret.personID;
  31.                                         userParams.CurrentPersonName = ret.personName;
  32.                                        
  33.                                         //wjw(20160806),注释。。。
  34. //                                        userParams.CurrentPersonFID = ret.CurrentFID;
  35. //                                        userParams.CurrentPersonFName = ret.CurrentFName;
  36. //                                        userParams.CurrentOgnID = ret.CurrentOgnID;
  37. //                                        userParams.CurrentOgnName = ret.CurrentOgnName;
  38. //                                        userParams.CurrentFunRole = ret.CurrentFunRole;
  39. //
  40. //                                        userParams.CurrentOgnFID = "/" + ret.CurrentFID.split("/")[1];
  41. //                                        userParams.CurrentOgnFName = "/" + ret.CurrentFName.split("/")[1];
  42. //                                        if (ret.CurrentFID.indexOf("dpt") > 0) {
  43. //                                                userParams.CurrentDeptID = ret.CurrentDeptID;
  44. //                                                userParams.CurrentDeptName = ret.CurrentDeptName;
  45. //                                                userParams.CurrentDeptFID = ret.CurrentFID.substring(0, ret.CurrentFID.indexOf("dpt") + 3);
  46. //                                                userParams.CurrentDeptFName = ret.CurrentFName.substring(0, ret.CurrentFName.indexOf("/", ret.CurrentFName.indexOf("/", 2) + 1));
  47. //                                        }
  48.                                         saveLoginDataToStore(userParams);
  49.                                 }
  50.                         }
  51.                 });
  52.                 return ret;
  53.         };
复制代码


loadPerson
  1.                 loadPerson : function(persons, pid) {
  2.                         var deferred = $.Deferred();
  3.                         justep.Baas.sendRequest({
  4.                                 //"url" : "/org/loadPerson",
  5.                                 "url" : "/ecoolper/chat",
  6.                                 "action" : "loadPerson",
  7.                                 "async" : false,
  8.                                 "params" : {
  9.                                         "sPersonID" : pid
  10.                                 },
  11.                                 "success" : function(data) {
  12.                                         //客户id
  13.                                         localStorage.setItem("customerSrv", data.customerSrv);
  14.                                         $.each(data.persons, function(i, v) {
  15.                                                 var p = {
  16.                                                         id : v.sPersonID,
  17.                                                         name : v.sName,
  18.                                                         uid : v.sNumb,
  19.                                                         avatar : getPersonAvatar(v.sPhoto),
  20.                                                         nick : '',
  21.                                                         phones : [],
  22.                                                         about : ''
  23.                                                 };
  24.                                                 persons[v.sPersonID] = new Person(p);
  25.                                         });
  26.                                         deferred.resolve(persons);
  27.                                 }
  28.                         });
  29.                         return deferred.promise();
  30.                 },
复制代码


updatePersonUid:更新数据库中的sNumb字段
  1.                 updatePersonUid : function(uid, pid) {
  2.                         var self = this;
  3.                         var deferred = $.Deferred();
  4.                         justep.Baas.sendRequest({
  5.                                 "url" : "/zlz/crm/person",
  6.                                 "action" : "updateUid",
  7.                                 "async" : false,
  8.                                 "params" : {
  9.                                         "uid" : uid,
  10.                                         "pid" : pid
  11.                                 },
  12.                                 "success" : function(data) {
  13.                                         if (data.state) {
  14.                                                 var person = self._getPerson(pid);
  15.                                                 if (person) {
  16.                                                         person.uid = uid;
  17.                                                 }
  18.                                         }
  19.                                         deferred.resolve();
  20.                                 }
  21.                         });
  22.                         return deferred.promise();
  23.                 },
复制代码



孤舟蓑笠翁,独钓寒江雪。
X5牛刀交流民间第一群:30057529
提供有偿服务,联系WX:18332024
bex5疑难问题解决方案
回复 支持 反对

使用道具 举报

997

主题

4326

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10696
QQ
 楼主| 发表于 2016-8-8 22:08:58 | 显示全部楼层
后端java代码片段,用nutz实现对应js中的loginByWx5

  1.         @At("/login")
  2.         @Ok("json")
  3.         @AdaptBy(type = JsonAdaptor.class)
  4.         public JSONObject login(@Param("..") JSONObject params) {
  5.                 String userName = params.getString("userName");
  6.                 String password = params.getString("password");
  7.                 JSONObject ret = new JSONObject();

  8.                 if (Strings.isBlank(userName)) {
  9.                         ret.put("flag", false);
  10.                         ret.put("message", "登录名不能为空");
  11.                 } else {
  12.                         Cnd cnd = Cnd.NEW();
  13.                         cnd.and("phone", "=", userName);
  14.                         cnd.and("password", "=", password);
  15.                         Customer customer = dao.fetch(Customer.class, cnd);

  16.                         if (customer == null) {
  17.                                 ret.put("flag", false);
  18.                                 ret.put("message", "登录名或密码错误");
  19.                         } else {
  20.                                 ret.put("flag", true);
  21.                                 ret.put("personID", customer.getId());
  22.                                 ret.put("personName", customer.getNickname());
  23.                                 ret.put("message", "");
  24.                                 ret.put("CurrentFunRole", "");

  25.                                 ret.put("CurrentOgnID", "");
  26.                                 ret.put("CurrentOgnName", "");
  27.                                 ret.put("CurrentDeptID", "");
  28.                                 ret.put("CurrentDeptName", "");
  29.                                 ret.put("CurrentFID", "");
  30.                                 ret.put("CurrentFName", "");
  31.                                 ret.put("isInOrg", true);
  32.                         }
  33.                 }
  34.                 return ret;
  35.         }
复制代码




孤舟蓑笠翁,独钓寒江雪。
X5牛刀交流民间第一群:30057529
提供有偿服务,联系WX:18332024
bex5疑难问题解决方案
回复 支持 反对

使用道具 举报

997

主题

4326

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10696
QQ
 楼主| 发表于 2016-8-8 22:10:15 | 显示全部楼层
对应js中的loadPerson
  1.         @At("/loadPerson")
  2.         @Ok("json")
  3.         @AdaptBy(type = JsonAdaptor.class)
  4.         public JSONObject loadPerson(@Param("..") JSONObject params) throws SQLException, NamingException {
  5.                 String id = params.getString("sPersonID");

  6.                 JSONObject ret = new JSONObject();
  7.                 JSONArray jArray = new JSONArray();
  8.                 // 本人
  9.                 Customer customer = dao.fetch(Customer.class, id);
  10.                 if (customer != null) {
  11.                         JSONObject json = new JSONObject();
  12.                         json.put("sID", customer.getId());
  13.                         json.put("sChineseFirstPY", "");
  14.                         json.put("sFID", "");
  15.                         json.put("sCode", "");
  16.                         json.put("sFCode", "");
  17.                         json.put("sFName", customer.getNickname());
  18.                         json.put("sName", customer.getNickname());
  19.                         json.put("sNumb", customer.getNumb());
  20.                         json.put("sOrgKindID", "");
  21.                         json.put("sPersonID", customer.getId());
  22.                         json.put("sPhoto", "");
  23.                         json.put("sSequence", "");
  24.                         json.put("sValidState", "");
  25.                         jArray.add(json);
  26.                 }
  27.                 // 客服
  28.                 CustomerSrv cusSrv = dao.fetch(CustomerSrv.class);
  29.                 if (cusSrv != null) {
  30.                         JSONObject json = new JSONObject();
  31.                         json.put("sID", cusSrv.getId());
  32.                         json.put("sChineseFirstPY", "");
  33.                         json.put("sFID", "");
  34.                         json.put("sCode", "");
  35.                         json.put("sFCode", "");
  36.                         json.put("sFName", cusSrv.getName());
  37.                         json.put("sName", cusSrv.getName());
  38.                         json.put("sNumb", cusSrv.getNumb());
  39.                         json.put("sOrgKindID", "");
  40.                         json.put("sPersonID", cusSrv.getId());
  41.                         json.put("sPhoto", "");
  42.                         json.put("sSequence", "");
  43.                         json.put("sValidState", "");
  44.                         jArray.add(json);
  45.                         ret.put("customerSrv", cusSrv.getId());
  46.                 }

  47.                 ret.put("persons", jArray);

  48.                 return ret;
  49.         }
复制代码



孤舟蓑笠翁,独钓寒江雪。
X5牛刀交流民间第一群:30057529
提供有偿服务,联系WX:18332024
bex5疑难问题解决方案
回复 支持 反对

使用道具 举报

997

主题

4326

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10696
QQ
 楼主| 发表于 2016-8-8 22:11:14 | 显示全部楼层
对应js中的:updatePersonUid
  1.         @At("/updateUid")
  2.         @Ok("json")
  3.         @AdaptBy(type=JsonAdaptor.class)
  4.         public JSONObject updatePersoUid(JSONObject params)  {
  5.                 JSONObject ret = new JSONObject();
  6.                 ret.put("flag", false);
  7.                
  8.                 String pid = params.getString("pid");
  9.                 int uid =Integer.parseInt(params.getString("uid") == null ? "0" : params.getString("uid").toString()); ;
  10.                
  11.                 //客服表
  12.                 CustomerSrv customerSrv =dao.fetch(CustomerSrv.class, pid);
  13.                 if(customerSrv !=null){
  14.                         customerSrv.setNumb(uid);
  15.                         dao.update(customerSrv);
  16.                         ret.put("flag", true);
  17.                         return ret;
  18.                 }
  19.                 //客户表
  20.                 Customer customer =dao.fetch(Customer.class, pid);
  21.                 if(customer !=null){
  22.                         customer.setNumb(uid);
  23.                         ret.put("flag", true);
  24.                         return ret;
  25.                 }
  26.                 return ret;
  27.         }
复制代码



孤舟蓑笠翁,独钓寒江雪。
X5牛刀交流民间第一群:30057529
提供有偿服务,联系WX:18332024
bex5疑难问题解决方案
回复 支持 反对

使用道具 举报

0

主题

152

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
QQ
发表于 2016-8-9 12:01:41 | 显示全部楼层
强!
回复

使用道具 举报

2

主题

441

帖子

2572

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2572
发表于 2016-8-9 12:44:26 | 显示全部楼层
支持!!!
回复

使用道具 举报

3

主题

118

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
QQ
发表于 2016-8-9 13:38:59 | 显示全部楼层
感谢分享 赞。
回复 支持 反对

使用道具 举报

1

主题

76

帖子

163

积分

初级会员

Rank: 2

积分
163
QQ
发表于 2016-8-9 13:51:39 | 显示全部楼层
好想默默的点个赞。。。。
回复 支持 反对

使用道具 举报

19

主题

70

帖子

158

积分

初级会员

Rank: 2

积分
158
QQ
发表于 2016-8-10 00:22:35 | 显示全部楼层
请问楼主对于dandang -wex5,试过生成本地app吗?我这里老是出错,找不到哪里的问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-3-29 14:24 , Processed in 0.086995 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表