package com.jshoperx.action.app.base; import java.io.IOException; import java.io.PrintWriter; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.jshoperx.action.app.common.AppMsg; import com.jshoperx.action.app.goods.GoodsCategoryAppAction; import com.jshoperx.action.app.vo.base.RequestBaseMsg; import com.jshoperx.action.backstage.base.BaseTAction; import com.jshoperx.action.backstage.utils.BaseTools; import com.jshoperx.action.backstage.utils.GsonJson; import com.jshoperx.action.backstage.utils.statickey.StaticKey; import com.jshoperx.entity.AppRegisterTokenT; import com.jshoperx.redis.service.RedisBaseTService; import com.jshoperx.service.BaseTService; import com.jshoperx.service.impl.Serial; @Namespace("/app") @ParentPackage("jshoperx") public class BaseAppAction extends BaseTAction implements ServletRequestAware, ServletResponseAware{ private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(BaseAppAction.class); private HttpServletRequest request; private HttpServletResponse response; private String uuid; private String token; @Resource private BaseTService<AppRegisterTokenT> baseTService; @Resource private RedisBaseTService<String>redisBaseTService; @Override public void setServletResponse(HttpServletResponse response) { this.response = response; } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } public String getUuid() { return uuid; } public void setUuid(String uuid) { this.uuid = uuid; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } /** * 1,app带上uuid请求该接口 * 2,保存服务器返回的token * 注册请求权限 */ @Action(value="registerUuid4App") public void registerUuid(){ PrintWriter out = null; RequestBaseMsg rm=new RequestBaseMsg(); try{ if(StringUtils.isNotBlank(this.getUuid())){ //如果uuid对应的token存在redis中 String existsToken=this.redisBaseTService.get(this.getUuid(), String.class); if(existsToken==null){ AppRegisterTokenT art=new AppRegisterTokenT(); art.setAid(this.getSerial().Serialid(Serial.APPREGISTERTOKEN)); art.setMemberid(StaticKey.EMPTY); art.setUuid(this.getUuid()); art.setToken(this.getSerial().Serialid(Serial.TOKENKEY)); art.setCreatetime(BaseTools.getSystemTime()); this.baseTService.save(art); //以token为key放入redis this.redisBaseTService.put(art.getToken(), art.getToken(), String.class); //以uuid为key放入redis this.redisBaseTService.put(art.getUuid(), art.getToken(), String.class); rm.setSucflag(true); rm.setToken(art.getToken()); }else{ rm.setSucflag(true); rm.setToken(existsToken); } }else{ rm.setMsg("uuid不存在"); } String jsonstr = GsonJson.parseDataToJson(rm); response.setContentType(AppMsg.CONTENTTYPE); response.setCharacterEncoding(AppMsg.ENCODING); out = response.getWriter(); out.write(jsonstr); }catch(IOException e){ log.debug(GoodsCategoryAppAction.class.getName() + "has thrown an exception: " + e.getMessage()); rm.setMsg(StaticKey.SERVER_BUSY); }finally{ if(out!=null){ out.flush(); out.close(); } } } }