package com.jshoperx.action.backstage.goods;
import com.jshoperx.action.backstage.base.BaseTAction;
import com.jshoperx.action.backstage.utils.BaseTools;
import com.jshoperx.action.backstage.utils.enums.BaseEnums.*;
import com.jshoperx.action.backstage.utils.statickey.StaticKey;
import com.jshoperx.entity.*;
import com.jshoperx.service.*;
import com.opensymphony.xwork2.ActionContext;
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.convention.annotation.Result;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import javax.annotation.Resource;
import java.util.*;
@Namespace("")
@ParentPackage("jshoperx")
public class GoodsGroupTOrderAction extends BaseTAction {
private static final long serialVersionUID = 1L;
@Resource
private GroupOrderTService groupOrderTService;
@Resource
private MemberTService memberTService;
@Resource
private ShippingAddressTService shippingAddressTService;
@Resource
private GroupCartService groupCartService;
@Resource
private LogisticsBTService logisticsBTService;
private String orderid;
private String userid;
private String username;
private String paymentid;
private String paymentname;
private String delivermode;
private String deliverynumber;
private String orderstate;
private String logisticsid;
private double freight;
private double amount;
private Double points;
private Date purchasetime;
private Date deliverytime;
private String invoice;
private String shippingaddressid;
private String customernotes;
private String logisticswebaddress;
private Date paytime;
private String orderTag;
private String toBuyer;
private double shouldpay;
private double usepoints;
private String vouchersid;
private String goodid;
private String goodsname;
private Integer needquantity;
private String paystate;
private String shippingstate;
private String deliveraddressid;
private String shippingusername;
private Date createtime;
private String hasprintexpress;
private String hasprintinvoice;
private String hasprintfpinvoice;
private String expressnumber;
private String tradeNo;
private List<Map<String, Object>> rows= new ArrayList<Map<String, Object>>();
private int rp;
private int page = 1;
private int total = 0;
private String Invoicenumber;
private String tradeno;
private String logisticsname;
private String formatedeliverytime;//格式化的发货时间
private Map<String, Object> map = new HashMap<String, Object>();
private boolean sucflag;
public String getTradeno() {
return tradeno;
}
public void setTradeno(String tradeno) {
this.tradeno = tradeno;
}
public String getLogisticsname() {
return logisticsname;
}
public void setLogisticsname(String logisticsname) {
this.logisticsname = logisticsname;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public String getOrderid() {
return orderid;
}
public void setOrderid(String orderid) {
this.orderid = orderid;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPaymentid() {
return paymentid;
}
public void setPaymentid(String paymentid) {
this.paymentid = paymentid;
}
public String getPaymentname() {
return paymentname;
}
public void setPaymentname(String paymentname) {
this.paymentname = paymentname;
}
public String getDelivermode() {
return delivermode;
}
public void setDelivermode(String delivermode) {
this.delivermode = delivermode;
}
public String getDeliverynumber() {
return deliverynumber;
}
public void setDeliverynumber(String deliverynumber) {
this.deliverynumber = deliverynumber;
}
public String getOrderstate() {
return orderstate;
}
public void setOrderstate(String orderstate) {
this.orderstate = orderstate;
}
public String getLogisticsid() {
return logisticsid;
}
public void setLogisticsid(String logisticsid) {
this.logisticsid = logisticsid;
}
public double getFreight() {
return freight;
}
public void setFreight(double freight) {
this.freight = freight;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public Double getPoints() {
return points;
}
public void setPoints(Double points) {
this.points = points;
}
public Date getPurchasetime() {
return purchasetime;
}
public void setPurchasetime(Date purchasetime) {
this.purchasetime = purchasetime;
}
public Date getDeliverytime() {
return deliverytime;
}
public void setDeliverytime(Date deliverytime) {
this.deliverytime = deliverytime;
}
public String getInvoice() {
return invoice;
}
public void setInvoice(String invoice) {
this.invoice = invoice;
}
public String getShippingaddressid() {
return shippingaddressid;
}
public void setShippingaddressid(String shippingaddressid) {
this.shippingaddressid = shippingaddressid;
}
public String getCustomernotes() {
return customernotes;
}
public void setCustomernotes(String customernotes) {
this.customernotes = customernotes;
}
public String getLogisticswebaddress() {
return logisticswebaddress;
}
public void setLogisticswebaddress(String logisticswebaddress) {
this.logisticswebaddress = logisticswebaddress;
}
public Date getPaytime() {
return paytime;
}
public void setPaytime(Date paytime) {
this.paytime = paytime;
}
public String getOrderTag() {
return orderTag;
}
public void setOrderTag(String orderTag) {
this.orderTag = orderTag;
}
public String getToBuyer() {
return toBuyer;
}
public void setToBuyer(String toBuyer) {
this.toBuyer = toBuyer;
}
public double getShouldpay() {
return shouldpay;
}
public void setShouldpay(double shouldpay) {
this.shouldpay = shouldpay;
}
public double getUsepoints() {
return usepoints;
}
public void setUsepoints(double usepoints) {
this.usepoints = usepoints;
}
public String getVouchersid() {
return vouchersid;
}
public void setVouchersid(String vouchersid) {
this.vouchersid = vouchersid;
}
public String getGoodid() {
return goodid;
}
public void setGoodid(String goodid) {
this.goodid = goodid;
}
public String getGoodsname() {
return goodsname;
}
public void setGoodsname(String goodsname) {
this.goodsname = goodsname;
}
public Integer getNeedquantity() {
return needquantity;
}
public void setNeedquantity(Integer needquantity) {
this.needquantity = needquantity;
}
public String getPaystate() {
return paystate;
}
public void setPaystate(String paystate) {
this.paystate = paystate;
}
public String getShippingstate() {
return shippingstate;
}
public void setShippingstate(String shippingstate) {
this.shippingstate = shippingstate;
}
public String getDeliveraddressid() {
return deliveraddressid;
}
public void setDeliveraddressid(String deliveraddressid) {
this.deliveraddressid = deliveraddressid;
}
public String getShippingusername() {
return shippingusername;
}
public void setShippingusername(String shippingusername) {
this.shippingusername = shippingusername;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public String getHasprintexpress() {
return hasprintexpress;
}
public void setHasprintexpress(String hasprintexpress) {
this.hasprintexpress = hasprintexpress;
}
public String getHasprintinvoice() {
return hasprintinvoice;
}
public void setHasprintinvoice(String hasprintinvoice) {
this.hasprintinvoice = hasprintinvoice;
}
public String getHasprintfpinvoice() {
return hasprintfpinvoice;
}
public void setHasprintfpinvoice(String hasprintfpinvoice) {
this.hasprintfpinvoice = hasprintfpinvoice;
}
public String getExpressnumber() {
return expressnumber;
}
public void setExpressnumber(String expressnumber) {
this.expressnumber = expressnumber;
}
public String getTradeNo() {
return tradeNo;
}
public void setTradeNo(String tradeNo) {
this.tradeNo = tradeNo;
}
public List<Map<String,Object>> getRows() {
return rows;
}
public void setRows(List<Map<String,Object>> rows) {
this.rows = rows;
}
public int getRp() {
return rp;
}
public void setRp(int rp) {
this.rp = rp;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public String getInvoicenumber() {
return Invoicenumber;
}
public void setInvoicenumber(String invoicenumber) {
Invoicenumber = invoicenumber;
}
public String getFormatedeliverytime() {
return formatedeliverytime;
}
public void setFormatedeliverytime(String formatedeliverytime) {
this.formatedeliverytime = formatedeliverytime;
}
public boolean isSucflag() {
return sucflag;
}
public void setSucflag(boolean sucflag) {
this.sucflag = sucflag;
}
/**
* 迭代显示数据
* @param list
*/
public void processGroupOrder(List<GroupOrderT> list){
rows.clear();
for(Iterator<GroupOrderT> it = list.iterator();it.hasNext();){
GroupOrderT gt =it.next();
gt.setOrderstate(OrderState.getName(gt.getOrderstate()));
gt.setPaystate(OrderPayState.getName(gt.getPaystate()));
gt.setShippingstate(OrderShippingState.getName(gt.getShippingstate()));
gt.setIsinvoice(OrderIsInvoice.getName(gt.getIsinvoice()));
gt.setDelivermode(OrderDeliverMode.getName(gt.getDelivermode()));
gt.setOrderTag(OrderCreateTag.getName(gt.getOrderTag()));
if(gt.getDeliverytime()!=null){
this.setFormatedeliverytime(BaseTools.formateDbDate(gt.getDeliverytime()));
}else{
this.setFormatedeliverytime(StaticKey.EMPTY);
}
Map<String,Object> cellmap=new HashMap<String,Object>();
cellmap.put("id", gt.getOrderid());
cellmap.put("cell",new Object[]{
gt.getOrderid(),
"<a id='orderdetial' target='_blank' href='InitgtsDetail?orderid=" + gt.getOrderid() + "' name='orderdetail'>" + gt.getOrdername() + "</a>",
gt.getAmount(),
gt.getNeedquantity(),
gt.getUsername(),
gt.getShippingusername(),
gt.getPaymentname(),
gt.getDelivermode(),
gt.getOrderstate(),
gt.getPaystate(),
gt.getShippingstate(),
BaseTools.formateDbDate(gt.getPurchasetime()),
gt.getIsinvoice(),
gt.getOrderTag()
});
rows.add(cellmap);
}
}
/**
* 查询默认所有的订单
*/
public void finddefaultGroupOrder(){
int currentPage = page;
int lineSize= rp;
total = this.groupOrderTService.count(GroupOrderT.class).intValue();
if(StringUtils.isNotBlank(this.getSortname())&&StringUtils.isNotBlank(this.getSortorder())){
Order order=null;
if(StringUtils.equals(this.getSortorder(), StaticKey.ASC)){
order=Order.asc(this.getSortname());
}else{
order=Order.desc(this.getSortname());
}
List<GroupOrderT>list=this.groupOrderTService.findByCriteriaByPage(GroupOrderT.class, order, currentPage, lineSize);
this.processGroupOrder(list);
}
}
/**
* 查询所有团购订单信息
* @return
*/
@Action(value="findAllGroupOrder",results={@Result(name="json",type="json")})
public String findAllGroupOrder(){
if (StaticKey.SC.equals(this.getQtype())) {
this.setTotal(0);
rows.clear();
this.finddefaultGroupOrder();
}
return JSON;
}
/**
* 获取订单详细
*/
public void GetGroupOrderDetail(String orderid) {
GroupOrderT o = this.groupOrderTService.findByPK(GroupOrderT.class, orderid);
o.setOrderstate(OrderState.getName(o.getOrderstate()));
o.setPaystate(OrderPayState.getName(o.getPaystate()));
o.setShippingstate(OrderShippingState.getName(o.getShippingstate()));
o.setIsinvoice(OrderIsInvoice.getName(o.getIsinvoice()));
o.setDelivermode(OrderDeliverMode.getName(o.getDelivermode()));
o.setOrderTag(OrderCreateTag.getName(o.getOrderTag()));
map.put("orderdetail", o);
//获取买家信息
getBuyerInfo(o.getMemberid());
}
/**
* 获取买家信息
*
* @param memberid
*/
public void getBuyerInfo(String memberid) {
MemberT memberT = this.memberTService.findByPK(MemberT.class, memberid);
if (memberT != null) {
map.put("orderbuyerinfo", memberT);
}
}
/**
* 获取订单发货地址
*
* @param orderid
*/
public void getgroupOrderShippingAddress(String orderid) {
Criterion criterion=Restrictions.and(Restrictions.eq("orderid", orderid)).add(Restrictions.eq("state", ShippingIsOrderState.SHIPPING_BIND_ORDER.getState()));
ShippingAddressT st = this.shippingAddressTService.findOneByCriteria(ShippingAddressT.class, criterion);
if (st != null) {
map.put("shipping", st);
}
}
/**
* 获取订单详细信息
*
* @return
*/
@Action(value = "InitgroupOrdersDetail", results = {
@Result(name = "success",type="dispatcher",location = "/jshop/admin/order/grouporderdetail.jsp?session=${usession}"),
@Result(name = "input",type="dispatcher",location = "/jshop/admin/order/grouporderdetail.jsp?session=${usession}")
})
public String InitgroupOrdersDetail() {
map.clear();
String orderid = this.getOrderid().trim();
//获取订单详细
GetGroupOrderDetail(orderid);
//获取订单中的商品列表
getGroupOrderGoodsList(orderid);
//获取发货地址信息
getgroupOrderShippingAddress(orderid);
ActionContext.getContext().put("order", map);
return SUCCESS;
}
/**
* 获取订单中的商品列表
*
* @param orderid
*/
public void getGroupOrderGoodsList(String orderid) {
Criterion criterion=Restrictions.and(Restrictions.eq("orderid", orderid)).add(Restrictions.eq("state", CartGoodstate.HAVE_ADDTOCART_THREE_NUM.getState()));
List<GroupCartT> list = this.groupCartService.findByCriteria(GroupCartT.class, criterion);
if (list != null) {
map.put("ordergoods", list);
}
}
/**
* 更新订单到关闭状态
*
* @return
*/
@Action(value="UpdateGroupOrderToClose",results={
@Result(name="json",type="json")
})
public String UpdateGroupOrderToClose() {
String orderid = this.getOrderid().trim();
//String orderstate = AllOrderState.ORDERSTATE_FIVE_NUM;//关闭
//String paystate = AllOrderState.PAYSTATE_TWO_NUM;//表示关闭订单后的付款状态制空
//String shippingstate = AllOrderState.SHIPPINGSTATE_TWO_NUM;//表示关闭订单后的发货状态制空
GroupOrderT got=this.groupOrderTService.findByPK(GroupOrderT.class, orderid);
if(got!=null){
String orderstate=OrderState.ORDERSTATE_CLOSE_FIVE_NUM.getState();//关闭
String paystate=OrderPayState.ORDERPAYSTATE_CLOSE_TWO_NUM.getState();
String shippingstate=OrderShippingState.ORDERSHIPPINGSTATE_CLOSE_TWO_NUM.getState();
got.setOrderstate(orderstate);
got.setPaystate(paystate);
got.setShippingstate(shippingstate);
this.groupOrderTService.update(got);
this.setSucflag(true);
}
return JSON;
}
/**
* 更新订单到确认状态(当订单被关闭或者货到付款模式需要确认订单)
*
* @return
*/
@Action(value="UpdateGroupOrderToConfirm",results={
@Result(name="json",type="json")
})
public String UpdateGroupOrderToConfirm() {
String orderid = this.getOrderid().trim();
//String orderstate = AllOrderState.ORDERSTATE_ONE_NUM;//已确认
//String paystate = AllOrderState.PAYSTATE_ZERO_NUM;//未付款
//String shippingstate = AllOrderState.SHIPPINGSTATE_ZERO_NUM;//配货,未发货
GroupOrderT got=this.groupOrderTService.findByPK(GroupOrderT.class, orderid);
if(got!=null){
String orderstate=OrderState.ORDERSTATE_CONFIRMED_ONE_NUM.getState();//已确认
String paystate=OrderPayState.ORDERPAYSTATE_UNPAY_ZERO_NUM.getState();//未付款
String shippingstate=OrderShippingState.ORDERSHIPPINGSTATE_UNDELIVER_GOODS_ZERO_NUM.getState();//配货中
got.setOrderstate(orderstate);
got.setPaystate(paystate);
got.setShippingstate(shippingstate);
this.setSucflag(true);
}
return JSON;
}
/**
* 更新订单到发货状态(需要判断订单是否已经付款)
*
* @return
*/
@Action(value="UpdateOrderToDelivery",results={
@Result(name="json",type="json")
})
public String UpdateOrderToDelivery() {
String orderid = this.getOrderid().trim();
//String orderstate = AllOrderState.ORDERSTATE_THREE_NUM;//等待确认收获
//String paystate = this.getPaystate().trim();//付款状态
//String shippingstate = AllOrderState.SHIPPINGSTATE_ONE_NUM;//发货
GroupOrderT got=this.groupOrderTService.findByPK(GroupOrderT.class, orderid);
if(got!=null){
String orderstate=OrderState.ORDERSTATE_WAIT_CONFIRM_RECEIVE_THREE_NUM.getState();//等待确认收获
String paystate=this.getPaystate().trim();//付款状态
String shippingstate=OrderShippingState.ORDERSHIPPINGSTATE_HAVE_DELIVER_GOODS_ONE_NUM.getState();//发货
got.setOrderstate(orderstate);
got.setPaystate(paystate);
got.setShippingstate(shippingstate);
this.groupOrderTService.update(got);
this.setSucflag(true);
}
return JSON;
}
/**
* 更新订单到付款状态(货到付款使用)
*
* @return
*/
@Action(value="UpdateGroupOrderToPay",results={
@Result(name="json",type="json")
})
public String UpdateGroupOrderToPay() {
String orderid = this.getOrderid().trim();
//String orderstate = AllOrderState.ORDERSTATE_ONE_NUM;//已确认
//String paystate = AllOrderState.PAYSTATE_ONE_NUM;//付款
//String shippingstate = AllOrderState.SHIPPINGSTATE_ONE_NUM;//发货
GroupOrderT got=this.groupOrderTService.findByPK(GroupOrderT.class, orderid);
if(got!=null){
String orderstate=OrderState.ORDERSTATE_CONFIRMED_ONE_NUM.getState();//已确认
String paystate=OrderPayState.ORDERPAYSTATE_HAVEPAY_ONE_NUM.getState();//付款
String shippingstate=OrderShippingState.ORDERSHIPPINGSTATE_HAVE_DELIVER_GOODS_ONE_NUM.getState();//发货
got.setOrderstate(orderstate);
got.setPaystate(paystate);
got.setShippingstate(shippingstate);
this.groupOrderTService.update(got);
this.setSucflag(true);
}
return JSON;
}
/**
*更新订单快递单号
*
* @return
*/
@Action(value="UpdateExpressnumberByGroupOrderId",results={
@Result(name="json",type="json")
})
public String UpdateExpressnumberByGroupOrderId() {
if(StringUtils.isNotBlank(this.getExpressnumber())&&StringUtils.isNotBlank(this.getOrderid())){
GroupOrderT got=this.groupOrderTService.findByPK(GroupOrderT.class, this.getOrderid());
if(got!=null){
got.setExpressnumber(this.getExpressnumber());
this.groupOrderTService.update(got);
this.setSucflag(true);
}
}
return JSON;
}
/**
* 更新发货单号
*
* @return
*/
@Action(value="UpdateInvoicenumberByGroupOrderId",results={
@Result(name="json",type="json")
})
public String UpdateInvoicenumberByGroupOrderId() {
if(StringUtils.isNotBlank(this.getInvoicenumber())&&StringUtils.isNotBlank(this.getOrderid())){
GroupOrderT got=this.groupOrderTService.findByPK(GroupOrderT.class, this.getOrderid());
if(got!=null){
got.setDeliverynumber(this.getInvoicenumber());
this.groupOrderTService.update(got);
this.setSucflag(true);
}
}
return JSON;
}
/**
* 获取同步发货必要参数
*
* @return
*/
@Action(value="GetAlipayFhNeedParamsGroup",results={
@Result(name="json",type="json")
})
public String GetAlipayFhNeedParamsGroup() {
if(StringUtils.isNotBlank(this.getOrderid())){
GroupOrderT got=this.groupOrderTService.findByPK(GroupOrderT.class, this.getOrderid());
if(got!=null){
this.setTradeno(got.getTradeNo());//支付宝交易号
this.setExpressnumber(got.getExpressnumber());//快递单号,发货单号
this.setDelivermode(got.getDelivermode());
this.setPaymentid(got.getPaymentid());
LogisticsBusinessT lt = this.logisticsBTService.findByPK(LogisticsBusinessT.class, got.getLogisticsid());
if(lt!=null){
this.setLogisticsname(lt.getLogisticsname());
}
this.setSucflag(true);
}
}
return JSON;
}
}