package vo;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import cn.bran.japid.util.StringUtils;
import com.withiter.models.merchant.Comment;
import com.withiter.models.merchant.Merchant;
import com.withiter.models.merchant.Tese;
import com.withiter.utils.DistanceUtils;
public class MerchantVO {
private static Logger logger = LoggerFactory.getLogger(MerchantVO.class);
public String id;
public String name = "";
public String address = "";
public String[] telephone = {""};
public String cateType;
public List<String> tags = null;
public float averageCost = 0f;
public float grade = 0f;
public float kouwei = 0f;
public float huanjing = 0f;
public float fuwu = 0f;
public float xingjiabi = 0f;
public List<Tese> teses;
public String nickName;
public String description;
public String openTime;
public String closeTime;
public int markedCount;
public boolean enable = false;
public boolean online = false;
public boolean youhui = false;
public Date joinedDate = new Date();
public String dianpingFen = "0";
public String dianpingLink = "";
/**
* add by CROSS 2013-9-27
* eg: {2,4,6,8} 此商家有2人,4人,6人,8人桌
*/
public String[] seatType;
public String x;
public String y;
public String merchantImage;
public String merchantImageBig;
public String cityCode;
public String commentAverageCost;
public float commentXingjiabi;
public float commentKouwei;
public float commentHuanjing;
public float commentFuwu;
public String commentContent;
public String commentDate;
//是否关注商家
public boolean isAttention;
//用户和商家之间距离
public double distance;
//希望开通数量
public long openNum;
//取消号码时候弹出优惠提示的条件
public int checkTime;
//聊天室人数
public int socketNumber = 0;
/**
* @param m
* @return
*/
public static MerchantVO build(Merchant m) {
MerchantVO vo = new MerchantVO();
vo.id = m.id();
vo.address = m.address;
vo.averageCost = m.averageCost;
vo.cateType = m.cateType;
vo.closeTime = m.closeTime;
vo.description = m.description;
vo.enable = m.enable;
vo.online = m.online;
vo.youhui = m.youhui;
vo.fuwu = m.fuwu;
vo.grade = m.grade;
vo.huanjing = m.huanjing;
vo.joinedDate = m.joinedDate;
vo.kouwei = m.kouwei;
vo.markedCount = m.markedCount;
vo.name = m.name;
vo.nickName = m.nickName;
vo.openTime = m.openTime;
vo.tags = m.tags;
vo.telephone = m.telephone;
vo.teses = m.teses;
vo.xingjiabi = m.xingjiabi;
vo.x = m.x;
vo.y = m.y;
vo.seatType = m.seatType;
vo.cityCode = m.cityCode;
vo.dianpingFen = m.dianpingFen;
vo.dianpingLink = m.dianpingLink;
try {
vo.merchantImage = URLDecoder.decode(m.merchantImage, "UTF-8");
vo.merchantImageBig = URLDecoder.decode(m.merchantImageBig, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return vo;
}
public static MerchantVO build(Merchant m, Comment c) {
MerchantVO vo = build(m);
vo.commentAverageCost = String.valueOf(c.averageCost);
vo.commentContent = StringUtils.isEmpty(c.accountId) ? "暂无评论" : c.content;
vo.commentDate = StringUtils.isEmpty(c.content) ? "" : new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.modified);
vo.commentFuwu = c.fuwu;
vo.commentHuanjing = c.huanjing;
vo.commentKouwei = c.kouwei;
vo.commentXingjiabi = c.xingjiabi;
return vo;
}
public static MerchantVO build(Merchant m, Comment c,boolean isAttention) {
MerchantVO vo = build(m, c);
vo.isAttention=isAttention;
return vo;
}
public static MerchantVO build(Merchant m, Comment c,boolean isAttention, long num) {
MerchantVO vo = build(m, c, isAttention);
vo.openNum = num;
return vo;
}
public static MerchantVO buildSimpleVo(Merchant m) {
MerchantVO vo = new MerchantVO();
vo.id = m.id();
vo.enable = m.enable;
return vo;
}
/**
* @param m
* @param userX 经度
* @param userY 纬度
* @return
*/
public static MerchantVO build(Merchant m, double userX, double userY) {
MerchantVO vo = build(m);
if(userX != 0 && userY != 0){
vo.distance = DistanceUtils.GetDistance(Double.parseDouble(m.y), Double.parseDouble(m.x), userX, userY);
}else{
vo.distance = -1;
}
return vo;
}
/**
* @param m
* @param userX 经度
* @param userY 纬度
* @param openNum 希望开通数
* @return
*/
public static MerchantVO build(Merchant m, double userX, double userY, long openNum) {
MerchantVO vo = build(m);
vo.openNum = openNum;
if(userX != 0 && userY != 0){
vo.distance = DistanceUtils.GetDistance(Double.parseDouble(m.y), Double.parseDouble(m.x), userX, userY);
}else{
vo.distance = -1;
}
return vo;
}
}