package com.jshop.action.androidserver.electronicmenu;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.xwork.StringUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
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.apache.struts2.json.annotations.JSON;
import org.springframework.stereotype.Controller;
import com.jshop.action.tools.Arith;
import com.jshop.action.tools.BaseTools;
import com.jshop.action.tools.Serial;
import com.jshop.action.tools.Validate;
import com.jshop.entity.ElectronicMenuCartT;
import com.jshop.entity.GoodsT;
import com.jshop.service.ElectronicMenuCartTService;
import com.jshop.service.GoodsTService;
import com.opensymphony.xwork2.ActionSupport;
import edu.emory.mathcs.backport.java.util.Collections;
import freemarker.template.utility.StringUtil;
@ParentPackage("jshop")
@Namespace("")
@InterceptorRefs({
@InterceptorRef("defaultStack")
})
@Controller("androidJshopelectronicmenucartAction")
public class AndroidJshopelectronicmenucartAction extends ActionSupport implements
ServletRequestAware, ServletResponseAware{
private Serial serial;
private GoodsTService goodsTService;
private ElectronicMenuCartTService electronicMenuCartTService;
private String tableNumber;
private String tablestate;
private String goodsid;
private String needquantity;
private String taste;
private String ispackaway;//堂吃,外带
private Integer lunchbox;//打包盒
private String cookingstate;//烹饪状态
private String roomName;
private String state;
private Double totalmemberprice = 0.0;
private HttpServletRequest request;
private HttpServletResponse response;
private String responsejsonstr;
@JSON(serialize = false)
public Serial getSerial() {
return serial;
}
public void setSerial(Serial serial) {
this.serial = serial;
}
@JSON(serialize = false)
public GoodsTService getGoodsTService() {
return goodsTService;
}
public void setGoodsTService(GoodsTService goodsTService) {
this.goodsTService = goodsTService;
}
@JSON(serialize = false)
public ElectronicMenuCartTService getElectronicMenuCartTService() {
return electronicMenuCartTService;
}
public void setElectronicMenuCartTService(
ElectronicMenuCartTService electronicMenuCartTService) {
this.electronicMenuCartTService = electronicMenuCartTService;
}
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public HttpServletResponse getResponse() {
return response;
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
public String getResponsejsonstr() {
return responsejsonstr;
}
public void setResponsejsonstr(String responsejsonstr) {
this.responsejsonstr = responsejsonstr;
}
@Override
public void setServletResponse(HttpServletResponse arg0) {
this.response=arg0;
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
this.request=arg0;
}
public String getTableNumber() {
return tableNumber;
}
public void setTableNumber(String tableNumber) {
this.tableNumber = tableNumber;
}
public String getTablestate() {
return tablestate;
}
public void setTablestate(String tablestate) {
this.tablestate = tablestate;
}
public String getGoodsid() {
return goodsid;
}
public void setGoodsid(String goodsid) {
this.goodsid = goodsid;
}
public String getNeedquantity() {
return needquantity;
}
public void setNeedquantity(String needquantity) {
this.needquantity = needquantity;
}
public String getTaste() {
return taste;
}
public void setTaste(String taste) {
this.taste = taste;
}
public String getIspackaway() {
return ispackaway;
}
public void setIspackaway(String ispackaway) {
this.ispackaway = ispackaway;
}
public Integer getLunchbox() {
return lunchbox;
}
public void setLunchbox(Integer lunchbox) {
this.lunchbox = lunchbox;
}
public String getCookingstate() {
return cookingstate;
}
public void setCookingstate(String cookingstate) {
this.cookingstate = cookingstate;
}
public String getRoomName() {
return roomName;
}
public void setRoomName(String roomName) {
this.roomName = roomName;
}
public Double getTotalmemberprice() {
return totalmemberprice;
}
public void setTotalmemberprice(Double totalmemberprice) {
this.totalmemberprice = totalmemberprice;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
/**
* 清理错误
*/
@Override
public void validate() {
this.clearErrorsAndMessages();
}
/**
* 根据餐桌号获取电子菜单信息
* @throws IOException
*/
@Action(value="findAllElectronicMenuCartTBytableNumberforAndroid")
public void findAllElectronicMenuCartTBytableNumberforAndroid() throws IOException{
if(Validate.StrNotNull(this.getTableNumber())&&Validate.StrNotNull(this.getTablestate())){
String tableNumber=this.getTableNumber().trim();
String tablestate=this.getTablestate().trim();
List<ElectronicMenuCartT>list=this.getElectronicMenuCartTService().findAllElectronicMenuCartTBytableNumber(tableNumber, tablestate);
if(!list.isEmpty()){
this.setTotalmemberprice(0.0);
String temp=null;
String []temparray=null;
StringBuilder json=new StringBuilder();
json.append("[");
for(Iterator it=list.iterator();it.hasNext();){
ElectronicMenuCartT emt=(ElectronicMenuCartT)it.next();
this.setTotalmemberprice(Arith.add(this.getTotalmemberprice(), Arith.mul(emt.getMemberprice(), Double.parseDouble(String.valueOf(emt.getNeedquantity())))));
temparray=StringUtil.split(emt.getPicture(), ',');
temp=temparray[0];
emt.setPicture(temp);
json.append("{");
json.append("\"id\":\"").append(emt.getId()).append("\",");
json.append("\"electronicMenuOrderid\":\"").append(emt.getElectronicMenuOrderid()).append("\",");
json.append("\"goodsid\":\"").append(emt.getGoodsid()).append("\",");
json.append("\"goodsname\":\"").append(emt.getGoodsname()).append("\",");
json.append("\"userid\":\"").append(emt.getUserid()).append("\",");
json.append("\"username\":\"").append(emt.getUsername()).append("\",");
json.append("\"needquantity\":\"").append(emt.getNeedquantity()).append("\",");
json.append("\"price\":\"").append(emt.getPrice()).append("\",");
json.append("\"memberprice\":\"").append(emt.getMemberprice()).append("\",");
json.append("\"changeprice\":\"").append(emt.getChangeprice()).append("\",");
json.append("\"points\":\"").append(emt.getPoints()).append("\",");
json.append("\"subtotal\":\"").append(emt.getSubtotal()).append("\",");
json.append("\"addtime\":\"").append(BaseTools.formateDbDate(emt.getAddtime())).append("\",");
json.append("\"quantity\":\"").append(emt.getQuantity()).append("\",");
json.append("\"picture\":\"").append(emt.getPicture()).append("\",");
json.append("\"usersetnum\":\"").append(emt.getUsersetnum()).append("\",");
json.append("\"weight\":\"").append(emt.getWeight()).append("\",");
json.append("\"state\":\"").append(emt.getState()).append("\",");
json.append("\"deliveryprice\":\"").append(emt.getDeliveryprice()).append("\",");
json.append("\"taste\":\"").append(emt.getTaste()).append("\",");
json.append("\"ispackaway\":\"").append(emt.getIspackaway()).append("\",");
json.append("\"lunchbox\":\"").append(emt.getLunchbox()).append("\",");
json.append("\"cookingstate\":\"").append(emt.getCookingstate()).append("\",");
json.append("\"tableNumber\":\"").append(emt.getTableNumber()).append("\",");
json.append("\"roomName\":\"").append(emt.getRoomName()).append("\",");
json.append("\"tablestate\":\"").append(emt.getTablestate()).append("\",");
json.append("\"electronicMenuCartid\":\"").append(emt.getElectronicMenuCartid()).append("\",");
//总价格
json.append("\"totalmemberprice\":\"").append(this.getTotalmemberprice()).append("\"");
json.append("},");
}
json.deleteCharAt(json.length()-1);
json.append("]");
this.setResponsejsonstr(json.toString());
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out=response.getWriter();
out.write(this.getResponsejsonstr());
out.flush();
out.close();
}
}
}
/**
* 增加电子菜单购物车商品
* @return
* @throws IOException
*/
@Action(value="addelEctronicMenuCartforAndroid")
public void addelEctronicMenuCartforAndroid() throws IOException{
String goodsid=this.getGoodsid().trim();
String tableNumber=this.getTableNumber().trim();
String tablestate=this.getTablestate().trim();
String state="1";//新增加的菜
String sucflag = null;
List<GoodsT>gtlist1=this.getElectronicMenuCartBygoodsidforcart();
for(GoodsT gt:gtlist1){
ElectronicMenuCartT elemcart=this.getElectronicMenuCartTService().findGoodsInElectronicMenuCartTOrNot(tableNumber, tablestate, goodsid, state);
if(elemcart!=null){
int i=this.getElectronicMenuCartTService().updateElectronicMenuCartTneedquantityBygoodsid(tableNumber, tablestate, goodsid, Integer.parseInt(this.getNeedquantity()), state);
sucflag="success";
}else{
String[]temppicturl=StringUtils.split(gt.getPictureurl(),',');
ElectronicMenuCartT emt=new ElectronicMenuCartT();
emt.setId(this.getSerial().Serialid(Serial.ELECTRONICMENUCARTTINFO));
emt.setElectronicMenuCartid("");
emt.setElectronicMenuOrderid("");
emt.setGoodsid(gt.getGoodsid());
emt.setGoodsname(gt.getGoodsname());
emt.setUserid("");
emt.setUsername("");
emt.setNeedquantity(Integer.parseInt(this.getNeedquantity()));
emt.setPrice(gt.getPrice());
emt.setMemberprice(gt.getMemberprice());
emt.setChangeprice(0.0);
emt.setPoints(gt.getPoints());
emt.setSubtotal(Double.parseDouble(this.getNeedquantity())*gt.getMemberprice());
emt.setAddtime(BaseTools.systemtime());
emt.setQuantity(gt.getQuantity());
emt.setPicture(temppicturl[0]);
emt.setUsersetnum(gt.getUsersetnum());
emt.setWeight(gt.getWeight());
emt.setState("1");
emt.setDeliveryprice(0.0);//外送费
emt.setTaste(this.getTaste());//口味和配料
emt.setIspackaway(this.getIspackaway());
emt.setLunchbox(0);//0个打包盒
emt.setCookingstate("0");//未烹饪
emt.setTableNumber(tableNumber);
emt.setRoomName(this.getRoomName());
emt.setTablestate(tablestate);
if(this.getElectronicMenuCartTService().addElectronicMenuCartT(emt)>0){
sucflag="success";
}
}
}
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out=response.getWriter();
out.write(sucflag);
out.flush();
out.close();
}
/**
* 在增加商品到电子菜单前先查询商品信息
* @return
*/
public List<GoodsT>getElectronicMenuCartBygoodsidforcart(){
if(Validate.StrNotNull(this.getGoodsid())){
List<GoodsT>list1=new ArrayList<GoodsT>();
String[]tempgoodsid=StringUtils.split(this.getGoodsid(), ',');
for(String s:tempgoodsid){
GoodsT gt=this.getGoodsTService().findGoodsById(s);
list1.add(gt);
}
return list1;
}
return Collections.emptyList();
}
/**
* 删除电子菜单商品
* @throws IOException
*/
@Action(value="delElectronicMenuCartTGoodsforAndroid")
public void delElectronicMenuCartTGoodsforAndroid() throws IOException{
if(Validate.StrNotNull(this.getTableNumber())&&Validate.StrNotNull(this.getGoodsid())){
//state从前台获取,控制菜单可删除的位置
String tableNumber=this.getTableNumber().trim();
String goodsid=this.getGoodsid().trim();
String state=this.getState().trim();
String tablestate="1";//使用中
String sucflag=null;
int i=this.getElectronicMenuCartTService().delElectronicMenuCartTGoods(tableNumber, tablestate, goodsid, state);
sucflag="success";
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out=response.getWriter();
out.write(sucflag);
out.flush();
out.close();
}
}
}