java - 构造返回结果的在哪儿构造比较好呢?
巴扎黑
巴扎黑 2017-04-17 16:15:49
[Java讨论组]

这是我service层的代码

 @Override
    public Response checkUserToken(long uid, String accessToken, String deviceToken){
        Response response = new Response();
        //TODO 先到session中找
        try {
            UserLogin userLogin = userLoginDao.getUserLoginByUid(uid);
            if(userLogin != null) {
                if(userLogin.getStatus() == -1){
                    response.setRc(Rc.RC_USER_STATUS);
                    response.setErrMsg("账号存在风险,已暂时锁定");
                }else if(accessToken == userLogin.getAccessToken() && deviceToken == userLogin.getDeviceToken()){
                    //验证正确, 返回新的accessToken
                    String newAccessToken = regenerateAccessToken(uid);

                    String sql = "UPDATE " + DEFAULT_TABLE_NAME + " SET " +
                            "accessToken='" + newAccessToken + "',"
                            + "online='1'";
                    userLoginDao.executeUpdate(sql);

                    response.setRc(Rc.RC_SUCCESS);
                    response.setData(newAccessToken);
                }else{
                    response.setRc(Rc.RC_USER_ACCESS_ERROR);
                    response.setErrMsg("验证失败,请重新登陆");
                }
            }else{
                response.setRc(Rc.RC_USER_INVALID);
                response.setErrMsg("不合法用户请求");
            }
        }catch (Exception e){
            Yin.logError(e, getClass());
            response.setRc(Rc.RC_DB_ERROR);
            response.setErrMsg("数据库异常");
        }
        return response;
    }

我想请问下,

  1. 这是service层,这里的Response 对象,应该在这里构造吗? 还是应该放到action层去?
    我觉得放在这里不妥的原因是, 一个action方法里可能调用多个service层的业务逻辑方法,肯定不能每个service的方法里都构造一个Response, 这样action方法里都没办法处理了.但是如果放到action层去, 就如这里的service方法, 这里的众多返回情况,我应该怎么反馈到action层去, 再构造一个对象吗?

巴扎黑
巴扎黑

全部回复(3)
PHP中文网

我想你的模式是:

action -> service -> dao

其实你为了保证action简单只做Controller, service之间也要互相独立,其实action和service中间还可以再加入一层, 比如叫biz,于是就变成

action -> biz -> services -> daos

所以,Servcie是应该有他的返回结果的,action只是把返回结果返回给客户端罢。 为了整合多个service的结果, 可以引入biz,当然,biz也有他的返回结果,这个返回结果就是最终客户端拿到的原型。

PHP中文网

为什么不可以呢?
利用泛型 Response<T> 就好啦

迷茫

还有人吗。谈谈各位的经验

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号