/**
*用户登录
*
*@
*/
(){
//用户登录的时候,去读取,并且进行持久话操作,更多的登录操作这里省略啦....
();
}
/**
*加入购物车br我的Java学习交流QQ群:我们一起学Java!
*============================================br
*用户登录前:br
*用户在选择现金券的时候,点击现金券的加入购物车的时候,会把该现金券的信息(现金券的id,购买数量)br
*传递到这里,这时候,后台要做的就是从中查询出是否有相同的记录,如果有相同的记录br
*则把相应的记录更新;否则,就添加新的记录br
*用户登录后:br
*用户在登录后,如果有添加购物车操作,则不用保存到中,而是直接持久化购物车信息br
*
*@
*/
publicvoidaddToShoppingCart()throwsException{
if(cashTicket==null||cashTicket.getId()==null||cashTicket.getId()1){
write(nullId);
}elseif(q==null||q==){
//购买数量,默认情况下面为1
q=String.valueOf(1);
}else{
//读取所有的cookie
Cookiecookies[]=ServletActionContext.getRequest().getCookies();
if(cookies==null||cookies.length0){
//没有cookie
System.out.println(thereisnoanycookie..);
}else{
//判断用户是否登录
if(getUserInSession()==null){
booleanflag=true;
for(Cookiec:cookies){
if(c.getName().equals(Conf.IDUONA_CASHTICKET_COOKIE_STARTNAME+cashTicket.getId())){
//说明已有的cookies中有相应的cookie,就进行更新操作
IntegeroldValue=Integer.valueOf(c.getValue());
IntegernewValue=Integer.valueOf(oldValue+Integer.valueOf(q));
fixCookie(c,newValue.toString().trim());
flag=false;
}
}
//说明已有的cookies中没有相应的cookie,就进行添加操作
if(flag){
addCookie(Conf.IDUONA_CASHTICKET_COOKIE_STARTNAME+cashTicket.getId(),q.trim());
}
//==================================================
//测试用,读取所有的cookies
readShoppingCartFromCookie();
//==================================================
write(success);
}else{
//如果用户登录,说明session存在user,这时就持久化购物车信息
CashTicketcashTicketTemp=cashTicketService.get(cashTicket.getId());
if(shoppingCartService.isExistUserAndCashTicket(getUserInSession(),cashTicketTemp)){
ShoppingCartoldShoppingCart=shoppingCartService.getByUserAndCashTicket(getUserInSession(),cashTicketTemp);
oldShoppingCart.setAmount(oldShoppingCart.getAmount()+Integer.valueOf(q));
if(shoppingCartService.update(oldShoppingCart)){
write(success);
}
}else{
ShoppingCartshoppingCartTemp=newShoppingCart();
shoppingCartTemp.setAmount(Integer.valueOf(q));
shoppingCartTemp.setUser(getUserInSession());
shoppingCartTemp.setCashTicket(cashTicketTemp);
shoppingCartTemp.setCreateTime(newDate());
shoppingCartTemp.setStatusType(StatusType.POSITIVE);
shoppingCartTemp.setUuid(UUID.randomUUID().toString());
if(shoppingCartService.save(shoppingCartTemp)){
write(success);
}
}
}
}
}
}
/**
*从cookie中读取购物车信息
*
*@throwsException
*@return
*/
publicvoidreadShoppingCartFromCookie()throwsException{
System.out.println(======================================================);
Cookiecookies[]=ServletActionContext.getRequest().getCookies();
if(cookies==null||cookies.length0){
//System.out.println(thereisnoanycookie..);
//没有cookie
}else{
for(Cookiec:cookies){
System.out.println(hahatherearemanycookies:+c.getName()++c.getValue());
}
}
}
/**
*添加cookie操作
*
*@paramname
*cookie的name
*@paramvalue
*cookie的value
*/
publicvoidaddCookie(Stringname,Stringvalue){
Cookiecookie=newCookie(name.trim(),value.trim());
cookie.setMaxAge(2*60*60*1000);//设置为2个钟
ServletActionContext.getResponse().addCookie(cookie);
}
/**
*更新cookie操作
*
*@paramc
*要修改的cookie
*@paramvalue
*修改的cookie的值
*/
publicvoidfixCookie(Cookiec,Stringvalue){
c.setValue(value.trim());
c.setMaxAge(2*60*60*1000);//设置为2个钟
ServletActionContext.getResponse().addCookie(c);
}
/**
*当用户登录的时候,持久化cookie中的购物车信息,更新为本用户的购物车信息
*/
publicvoidperistShoppingCartWhenUserLogin(Useruser){
if(null!=user){
Cookiecookies[]=ServletActionContext.getRequest().getCookies();
if(cookies!=null){
for(Cookiec:cookies){
if(c.getName().startsWith(Conf.IDUONA_CASHTICKET_COOKIE_STARTNAME)){
//获取cookie的名称:iduona_cashTicket_45和cookie的值:21
Stringname=c.getName();
Integeramount=Integer.valueOf(Integer.valueOf(c.getValue())+Integer.valueOf(q));
Integerct_id=Integer.valueOf(name.substring(name.lastIndexOf(_)+1));
CashTickettemp=cashTicketService.get(ct_id);
ShoppingCartshoppingCartTemp=newShoppingCart();
if(null!=temp){
if(shoppingCartService.isExistUserAndCashTicket(user,temp)){
//进行更新操作
ShoppingCartoldShoppingCart=shoppingCartService.getByUserAndCashTicket(user,temp);
oldShoppingCart.setAmount(amount);
shoppingCartService.update(oldShoppingCart);
}else{
//否则进行保存记录
shoppingCartTemp.setAmount(amount);
shoppingCartTemp.setUser(user);
shoppingCartTemp.setCashTicket(temp);
shoppingCartTemp.setCreateTime(newDate());
shoppingCartTemp.setStatusType(StatusType.POSITIVE);
shoppingCartTemp.setUuid(UUID.randomUUID().toString());
shoppingCartService.save(shoppingCartTemp);
}
}
}
}
//移除所有的现金券cookies
removeAllCookies();
}
}
}
/**
*移除所有的现金券cookies操作
*/
publicvoidremoveAllCookies(){
Cookiecookies[]=ServletActionContext.getRequest().getCookies();
if(cookies==null||cookies.length0){
//没有cookie
System.out.println(thereisnoanycookie..);
}else{
System.out.println(开始删除cookies..);
for(Cookiec:cookies){
if(c.getName().startsWith(Conf.IDUONA_CASHTICKET_COOKIE_STARTNAME)){
c.setMaxAge(0);//设置为0
ServletActionContext.getResponse().addCookie(c);
}
}
}
}
效果:
用户没有登录的情况下
用户登录了以后:
数据库里面的情况: