Package com.rop.sample

Source Code of com.rop.sample.UserService

/**
* 版权声明:中图一购网络科技有限公司 版权所有 违者必究 2012
* 日    期:12-2-29
*/
package com.rop.sample;

import com.rop.Constants;
import com.rop.RopRequest;
import com.rop.annotation.*;
import com.rop.response.BusinessServiceErrorResponse;
import com.rop.response.NotExistErrorResponse;
import com.rop.sample.request.CreateUserRequest;
import com.rop.sample.request.LogonRequest;
import com.rop.sample.request.UploadUserPhotoRequest;
import com.rop.sample.response.*;
import com.rop.session.Session;
import com.rop.session.SimpleSession;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.FileCopyUtils;

import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
* <pre>
* 功能说明:
* </pre>
*
* @author 陈雄华
* @version 1.0
*/
@ServiceMethodBean(version = "1.0")
public class UserService extends AbstractUserService{

    private static final String USER_NAME_RESERVED = "USER_NAME_RESERVED";
    private List reservesUserNames = Arrays.asList(new String[]{"toms", "jhon"});


    public Object getSession(LogonRequest request) {

        //创建一个会话
        SimpleSession session = new SimpleSession();
        session.setAttribute("userName", request.getUserName());
        request.getRopRequestContext().addSession("mockSessionId1", session);

        //返回响应
        LogonResponse logonResponse = new LogonResponse();
        logonResponse.setSessionId("mockSessionId1");
        return logonResponse;
    }

    @ServiceMethod(method = "user.logon",version = "1.0",needInSession = NeedInSessionType.NO)
    public Object logon(LogonRequest request) {
        //创建一个会话
        SimpleSession session = new SimpleSession();
        session.setAttribute("userName",request.getUserName());
        request.getRopRequestContext().addSession("mockSessionId1", session);

        //返回响应
        LogonResponse logonResponse = new LogonResponse();
        logonResponse.setSessionId("mockSessionId1");
        return logonResponse;
    }

    @ServiceMethod(method = "user.logout",version = "1.0")
    public Object logout(RopRequest request) {
        request.getRopRequestContext().removeSession();
        LogoutResponse response = new LogoutResponse();
        response.setSuccessful(true);
        return response;
    }

    /**
     * 过期版本的服务方法
     * @param request
     * @return
     */
    @ServiceMethod(method = "user.add", version = "0.9",obsoleted = ObsoletedType.YES)
    public Object addUserOfV0_9(CreateUserRequest request) {
        request.getRopRequestContext().getLocale();
        if (reservesUserNames.contains(request.getUserName())) {
            return new BusinessServiceErrorResponse(
                    request.getRopRequestContext(),USER_NAME_RESERVED,request.getUserName());
        } else {
            CreateUserResponse response = new CreateUserResponse();
            //add creaet new user here...
            response.setCreateTime("20120101010101");
            response.setUserId("1");
            return response;
        }
    }

    @ServiceMethod(method = "user.add", version = "1.0")//② Let this method service the sample.user.add method
    public Object addUser(CreateUserRequest request) {
        if (reservesUserNames.contains(request.getUserName())) { //如果注册的用户是预留的帐号,则返回错误的报文
            //这个业务错误将引用扩展国际化错误资源中的消息(i18n/rop/sampleRopError)
            return new BusinessServiceErrorResponse(
                    request.getRopRequestContext(), USER_NAME_RESERVED,request.getUserName());
        } else {
            CreateUserResponse response = new CreateUserResponse();
            //add creaet new user here...
            response.setCreateTime("20120101010101");
            response.setUserId("1");
            response.setFeedback("hello");
            response.setDate(new Date());
            response.setFooList(Arrays.asList(new Foo("1","1"),new Foo("2","2")));

            Session session = request.getRopRequestContext().getSession();
            session.setAttribute("aa","bb");

            return response;
        }
    }

    //版本为2.0的user.add
    @ServiceMethod(method = "user.add", version = "2.0")
    public Object addUser2(CreateUserRequest request) {
        if (reservesUserNames.contains(request.getUserName())) { //如果注册的用户是预留的帐号,则返回错误的报文
            return new BusinessServiceErrorResponse(
                    request.getRopRequestContext(), USER_NAME_RESERVED, request.getUserName());
        } else {
            CreateUserResponse response = new CreateUserResponse();
            //add creaet new user here...
            response.setCreateTime("20120101010102");
            response.setUserId("2");
            return response;
        }
    }

    //版本为4.0的user.add:不需要会话
    @ServiceMethod(method = "user.add", version = "4.0", needInSession = NeedInSessionType.NO)
    public Object addUser4(CreateUserRequest request) {
        CreateUserResponse response = new CreateUserResponse();
        //add creaet new user here...
        response.setCreateTime("20120101010102");
        response.setUserId("4");
        return response;
    }

    //版本为5.0的user.add:不需要进行签名验证
    @ServiceMethod(method = "user.add", version = "5.0", ignoreSign = IgnoreSignType.YES)
    public Object addUser5(CreateUserRequest request) {
        CreateUserResponse response = new CreateUserResponse();
        response.setCreateTime("20120101010102");
        response.setUserId("4");
        return response;
    }

    //模拟一个会过期的服务(过期时间为1秒)
    @ServiceMethod(method = "user.timeout", version = "1.0", timeout = 1)
    public Object timeoutService(CreateUserRequest request) throws Throwable {
        Thread.sleep(2000);
        CreateUserResponse response = new CreateUserResponse();
        //add creaet new user here...
        response.setCreateTime("20120101010102");
        response.setUserId("2");
        return response;
    }

    @ServiceMethod(method = "user.rawRopRequest", version = "1.0")
    public Object useRawRopRequest(RopRequest request) throws Throwable {
        String userId = request.getRopRequestContext().getParamValue("userId");
        CreateUserResponse response = new CreateUserResponse();
        //add creaet new user here...
        response.setCreateTime("20120101010102");
        response.setUserId(userId);
        return response;
    }

    @ServiceMethod(method = "user.customConverter", version = "1.0")
    public Object customConverter(CreateUserRequest request) throws Throwable {
        String userId = request.getRopRequestContext().getParamValue("userId");
        CreateUserResponse response = new CreateUserResponse();
        //add creaet new user here...
        response.setCreateTime("20120101010102");
        response.setUserId(userId);
        response.setFeedback(request.getTelephone().getZoneCode() + "#" + request.getTelephone().getTelephoneCode());
        return response;
    }

    //直接使用RopRequest对象作为入参
    @ServiceMethod(method = "user.query", version = "1.0", httpAction = HttpAction.GET)
    public Object queryUsers(RopRequest request) throws Throwable {
        //直接从参数列表中获取参数值
        String userId = request.getRopRequestContext().getParamValue("userId");
        CreateUserResponse response = new CreateUserResponse();
        response.setCreateTime("20120101010102");
        response.setUserId(userId);
        response.setFeedback("user.query");
        return response;
    }

    /**
     * 当userId为9999时,模拟一个NotExistErrorResponse的响应
     * @param request
     * @return
     * @throws Throwable
     */
    @ServiceMethod(method = "user.get", version = "1.0", httpAction = HttpAction.GET)
    public Object getUser(RopRequest request) throws Throwable {
        String userId = request.getRopRequestContext().getParamValue("userId");
        if("9999".equals(userId)){
            return new NotExistErrorResponse("user","userId","9999",request.getRopRequestContext().getLocale());
        }else{
            CreateUserResponse response = new CreateUserResponse();
            //add creaet new user here...
            response.setCreateTime("20120101010102");
            response.setUserId(userId);
            response.setFeedback("user.get");
            return response;
        }
    }

    /**
     *  上传用户头像的图片
     * @param request
     * @return
     * @throws Throwable
     */
    @ServiceMethod(method = "user.upload.photo", version = "1.0", httpAction = HttpAction.POST)
    public Object uploadPhoto(UploadUserPhotoRequest request) throws Throwable {
        String fileType = request.getPhoto().getFileType();
        int length = request.getPhoto().getContent().length;
        ClassPathResource outFile = new ClassPathResource("/");
        FileCopyUtils.copy(request.getPhoto().getContent(),new File(outFile.getFile().getParent()+"/1." + fileType));
        UploadUserPhotoResponse response = new UploadUserPhotoResponse();
        response.setFileType(fileType);
        response.setLength(length);
        return response;
    }


    @ServiceMethod(method = "user.list", version = "1.0", httpAction = HttpAction.GET)
    public Object userList(RopRequest ropRequest) throws Throwable {
       return new UserListResponse();
    }

    @ServiceMethod(method = "img.get", version = "1.0",
            httpAction = HttpAction.GET,
    ignoreSign = IgnoreSignType.YES,
    needInSession = NeedInSessionType.NO)
    public void getImg(RopRequest ropRequest) throws Throwable {
        HttpServletResponse response = (HttpServletResponse)
                ropRequest.getRopRequestContext().getRawResponseObject();
        response.setCharacterEncoding(Constants.UTF8);
        response.setContentType("image/jpeg;charset=UTF-8");
        ClassPathResource resource = new ClassPathResource("img/img1.jpg");
        FileCopyUtils.copy(resource.getInputStream(), response.getOutputStream());
    }

}
TOP

Related Classes of com.rop.sample.UserService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.