package me.jcala.blog.service;
import me.jcala.blog.domain.Info;
import me.jcala.blog.mapping.InfoMapper;
import me.jcala.blog.service.inter.InfoSer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@Service
public class InfoSerImpl implements InfoSer {
private static final int MODIFYPASSSUC=0;//修改密码成功
private static final int PASSERROE=1;//密码错误
private static final int SySTEMERROE=2;//系统错误
private static final Logger LOGGER = LoggerFactory.getLogger(InfoSerImpl.class);
@Autowired
private InfoMapper infoMapper;
@Override
@Cacheable(value = "profileOfInfo",key = "1")
public Info getInfo() throws RuntimeException{
return infoMapper.select();
}
@Override
public boolean login(Info user) {
int num=0;
try {
num=infoMapper.selectByPw(user.getUsername(),user.getPassword());
} catch (Exception e) {
LOGGER.error(e.getMessage());
}
if (num>0){
return true;
}else {
return false;
}
}
@Override
public boolean checkPass(String oldPass){
int num=infoMapper.selectByOldPass(oldPass);
return num>0;
}
@Override
@CacheEvict(value = "profileOfInfo",key = "1")
public boolean updateInfo(Info info) {
boolean result=true;
try {
infoMapper.update(info);
} catch (Exception e) {
LOGGER.error(e.getMessage());
result=false;
}
return result;
}
@Override
@Transactional(isolation = Isolation.READ_COMMITTED)
public int modifyPw(String oldPass,String newPass) {
int result;
if (checkPass(oldPass)){
try {
infoMapper.updataPass(newPass);
result=MODIFYPASSSUC;
} catch (Exception e) {
LOGGER.error(e.getMessage());
result=SySTEMERROE;
}
}else {
result=PASSERROE;
}
return result;
}
@Override
public void addSession(HttpServletRequest request,Info info){
HttpSession session = request.getSession(true);
session.setAttribute("cur_user",info);
session.setMaxInactiveInterval(600);
}
@Override
public void destroySession(HttpServletRequest request){
HttpSession session = request.getSession(false);
session.removeAttribute("cur_user");
}
@Override
public String getResumeMd(){
String md="";
try {
md=infoMapper.selectMd();
} catch (Exception e) {
LOGGER.error(e.getMessage());
}
return md;
}
@Override
@CacheEvict(value = "resumeView",key = "1")
public boolean updateResume(Info info){
boolean result=true;
try {
infoMapper.updateResume(info);
} catch (Exception e) {
result=false;
LOGGER.error(e.getMessage());
}
return result;
}
@Override
@Cacheable(value = "resumeView",key = "1")
public String getResumeView() throws RuntimeException{
return infoMapper.selectResume();
}
@Override
@CacheEvict(value = "profileOfInfo",key = "1")
public void updateAvatar(String avatar) throws RuntimeException{
infoMapper.updateAvater(avatar);
}
}