package com.cku.service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.cku.dao.CkuDogMapper;
import com.cku.dao.CkuMatchSignMapper;
import com.cku.dao.CkuTabGradeMapper;
import com.cku.dao.CkuUserMapper;
import com.cku.dao.EventRelatedMapper;
import com.cku.dao.PublicMapper;
import com.cku.model.CkuDog;
import com.cku.model.CkuMatchSign;
import com.cku.model.CkuUser;
import com.cku.model.EventRelatedModel;
import com.cku.model.PublicModel;
/**
*
*
Title:PublicService
* Description: 公用服务
* Company:
* @author zhuoHeng
* @date 2016年3月17日 下午12:52:45
*/
@Service("publicService")
public class PublicService {
@Autowired
public CkuUserMapper ckuUserMapper;
@Autowired
public CkuDogMapper ckuDogMapper;
@Autowired
public PublicMapper publicMapper;
@Autowired
public CkuMatchSignMapper ckuMatchSignMapper;
@Autowired
public CkuTabGradeMapper ckuTabGradeMapper;
@Autowired
public EventRelatedMapper eventRelatedMapper;
/**
*
* @Description:根据会员号对会员资格校验(当前时间在会员资格到期时间前,会员有效。返回true)
* @author: zhuoHeng
* @version: 2016年3月17日 下午1:10:56
*/
public boolean memberStatus(String idNum){
List memberInfo = ckuUserMapper.getUserMessage(idNum);
if(memberInfo.size()>0){
//系统时间
Date date = new Date();
//判断会员截止时间是否为空
if("".equals(memberInfo.get(0).getMemberDeadlineTime())||memberInfo.get(0).getMemberDeadlineTime()==null){
return true;
}
//会员资格到期时间
Date memberDeadTime = memberInfo.get(0).getMemberDeadlineTime();
//当前时间在会员资格到期时间前,返回true
boolean flag = date.before(memberDeadTime);
if(flag){
return true;
} else {
return false;
}
}else {
return false;
}
}
/**
*
* @Description:查询会员是否在禁赛期内(禁赛为true)
* @author: zhuoHeng
* @version: 2016年3月17日 下午2:09:08
*/
public boolean suspendStatus(String idNum){
List memberInfo = ckuUserMapper.getUserMessage(idNum);
if(memberInfo.size()>0){
//系统时间
Date date = new Date();
//判断会员禁赛时间是否为空,为空不在禁赛期
if("".equals(memberInfo.get(0).getSsJstime())||memberInfo.get(0).getSsJstime()==null){
return true;
}
//禁赛时间
Date suspendTime = memberInfo.get(0).getSsJstime();
//当前时间在禁赛期前,返回true
boolean flag = date.before(suspendTime);
if(flag){
return false;
} else {
return true;
}
} else {
return false;
}
}
/**
*
* @Description:犬只资格验证(包含:是否存在有效cku血统证书号cku、报名犬只失格次数是否小于3次disqualification
* 报名犬只年龄是否大于3个月ageStatus、犬只代数是否大于0 dogGenerations)
* @author: zhuoHeng
* @version: 2016年3月17日 下午2:57:55
*/
@SuppressWarnings("all")
public Map dogStatus(String pedigreeNum,String dogId,String showNums){
List dogMessage = ckuDogMapper.getMatchCost(pedigreeNum,dogId);
//CkuDogScoreModel ckuDogScoreModel = ckuTabGradeMapper.getDogScore(pedigreeNum);
Map map = new HashMap();
if(dogMessage.size()>0){
//查询是否报名了赛事
List ckuMatchSign = ckuMatchSignMapper.getSignByStudbookNum(showNums.substring(0, 7),dogMessage.get(0).getPedigreeNum());
if(ckuMatchSign.size()>0){
map.put("repeated", "yes");
}else{
map.put("repeated", "no");
}
boolean bl = memberStatus(dogMessage.get(0).getMemberNum());
//是否有效会员
if(bl){
map.put("rightVip", "yes");
}else{
map.put("rightVip", "no");
}
boolean suspendFlag = suspendStatus(dogMessage.get(0).getMemberNum());
//是否禁赛期
if(suspendFlag){
map.put("banned", "yes");
}else{
map.put("banned", "no");
}
boolean flag = dogMessage.get(0).getPedigreeNum().contains("CKU");
//犬只状态是否正常
if(dogMessage.get(0).getDelTag()=="0"||dogMessage.get(0).getDelTag()=="5"){
map.put("status", "yes");
}else{
map.put("status", "no");
}
//证书号是否是CKU开头校验
if(flag){
map.put("cku", "yes");
} else {
map.put("cku", "no");
}
//TODO 失格次数校验
map.put("disqualification", "yes");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date ="";
if(showNums!=null&&!"".equals(showNums)){
String[] strs = showNums.split(",");
String strN ="";
for (int i = 0; i < strs.length; i++) {
strN+="'"+strs[i]+"',";
}
strN = strN.substring(0, strN.length()-1);
EventRelatedModel eventRelatedModel = eventRelatedMapper.getSpecificEventByShowNums(strN);
date = df.format(eventRelatedModel.getStarting_data());
}else{
date = df.format(new Date());
}
String dogBirthday = df.format(dogMessage.get(0).getDogBirthday()==null?new Date():dogMessage.get(0).getDogBirthday());
List difference = publicMapper.getTimeDifference(date, dogBirthday);
map.put("age", difference.get(0).getDifference().toString());
//犬龄资格校验
if(difference.get(0).getDifference()>2){
map.put("ageStatus", "yes");
} else {
map.put("ageStatus", "no");
}
//犬只代数校验
if(dogMessage.get(0).getDogGenertions()>0){
map.put("dogGenerations", "yes");
} else {
map.put("dogGenerations", "no");
}
//犬只月龄大于15个月
if(difference.get(0).getDifference()>14){
map.put("dateStatus", "yes");
} else {
map.put("dateStatus", "no");
}
//DNA必须存档(dog pay_DNA=1)
if("1".equals(dogMessage.get(0).getPayDna())){
map.put("payDnaStatus", "yes");
}else{
map.put("payDnaStatus", "no");
}
//犬只代数3代以上
if(dogMessage.get(0).getDogGenertions()>2){
map.put("dogGenerationsStatus", "yes");
} else {
map.put("dogGenerationsStatus", "no");
}
}
return map;
}
/**
*
* @Description:查询主赛事报名犬只是否达到上限、是否过了报名截止日期
* @author: zhuoHeng
* @version: 2016年3月21日 下午5:22:12
*/
public Map enrollStatus(String showNum){
Map map = new HashMap();
List list = ckuMatchSignMapper.getTopDog(showNum);
int listSize = list.size();
if(listSize>0){
map.put("enrollNumber", listSize);
}else {
map.put("enrollNumber", 0);
}
return map;
}
}