/** * 版权声明:中图一购网络科技有限公司 版权所有 违者必究 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()); } }