package com.jyw.recruitstudent.controller;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.jyw.model.*;
import com.jyw.recruitstudent.service.AuditionInfoService;
import com.jyw.recruitstudent.service.StudentInfoService;
import com.jyw.recruitstudent.service.TrackRecordInfoService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 招生线索
* Created by 59545 on 2016/11/13.
*/
@Controller
@RequestMapping("/recruitstudent/")
@SessionAttributes("staff")
public class RecruitStudentController {
/**
* 学员信息的业务逻辑接口
*/
@Resource(name = "studentInfoServiceImpl")
private StudentInfoService studentInfoService;
/**
* 跟踪记录的业务逻辑接口
*/
@Resource(name = "trackRecordInfoServiceImpl")
private TrackRecordInfoService trackRecordInfoService;
/**
* 试听记录的逻辑接口
*/
@Resource(name = "auditionInfoServiceImpl")
private AuditionInfoService auditionInfoService;
/**
* 查询学生信息表里面标识为0,
* 也就是来咨询,但是未报名分配班级的学员信息
*
* @param map
* @return
*/
@RequestMapping("list.do")
public String list(Map<String, Object> map,@ModelAttribute("staff") StaffInfo staffInfo, StudentInfo stuinfo,@RequestParam(required = false,defaultValue = "1") int pageNum) {
StudentInfoCriteria criteria = new StudentInfoCriteria();
if (staffInfo != null) {
//获取领取学员人的信息,也就是当前登录用户的信息
criteria.or().andStaffIdEqualTo(staffInfo.getStaffId());
}
//判断输入的姓名和学员意向是否为空
if (StringUtils.isNotEmpty(stuinfo.getStudentName()) && stuinfo.getStudentSate() != null) {
criteria.or()
.andStudentSateEqualTo(stuinfo.getStudentSate())
.andStudentNameLike("%" + stuinfo.getStudentName() + "%")
.andStaffIdEqualTo(staffInfo.getStaffId())
.andStudentMarkEqualTo("1");
} else if (stuinfo.getStudentSate() != null) { //根据学员意向查询
criteria.or()
.andStudentSateEqualTo(stuinfo.getStudentSate())
.andStudentMarkEqualTo("1")
.andStaffIdEqualTo(staffInfo.getStaffId());
} else if (StringUtils.isNotEmpty(stuinfo.getStudentName())) {
criteria.or()
.andStudentMarkEqualTo("1")
.andStaffIdEqualTo(staffInfo.getStaffId())
.andStudentNameLike("%" + stuinfo.getStudentName() + "%");//模糊查询
} else {
criteria.or()
.andStudentMarkEqualTo("1")
.andStaffIdEqualTo(staffInfo.getStaffId());//-1表示无效 0表示未分配学员 1已分配学员 2报名学员
}
PageHelper.startPage(pageNum,10);
List<StudentInfo> list = studentInfoService.selectByExample(criteria);
PageInfo page = new PageInfo(list);
map.put("page", page);
return "recruitstudent/recruitstudent/recruitstudent_list";
}
/**
* 添加学员
*
* @param map
* @return
*/
@RequestMapping("add.do")
public String add(StudentInfo studentInfo, Map<String, Object> map,@ModelAttribute("staff") StaffInfo staffInfo) {
studentInfo.setStudentMark("1");
int count = studentInfoService.insert(studentInfo);
if (count > 0) {
map.put("info", "添加学员成功");
} else {
map.put("info", "添加学员失败");
}
return list(map, staffInfo, studentInfo,1);
}
/**
* 根据编号查询学员信息
* 与跟踪记录和试听记录相关联
* @param studentId
* @param map
* @return
*/
@RequestMapping("show.do")
public String show(@RequestParam("studentId") Integer studentId, Map<String, Object> map) {
StudentInfo studentInfo = studentInfoService.selectByPrimaryKey(studentId);
map.put("stuinfo", studentInfo);
TrackRecordInfo trackRecordInfo=new TrackRecordInfo();
trackRecordInfo.setStudentId(studentId);
//获取跟踪记录相关信息
List<TrackRecordInfo> tracklist=trackRecordInfoService.selectByStudentId(trackRecordInfo);
map.put("tracklist",tracklist);
//获取试听记录相关信息
AuditionInfoCriteria criteria1=new AuditionInfoCriteria();
criteria1.or().andStudentIdEqualTo(studentId);
List<AuditionInfo> auditlist=auditionInfoService.selectByExample(criteria1);
map.put("auditlist",auditlist);
return "recruitstudent/recruitstudent/recruitstudent_show";
}
/**
* 加载修改页面
*
* @param studentId
* @param map
* @return
*/
@RequestMapping("load.do")
public String load(@RequestParam("studentId") Integer studentId, Map<String, Object> map) {
StudentInfo studentInfo = studentInfoService.selectByPrimaryKey(studentId);
map.put("stuinfo", studentInfo);
return "recruitstudent/recruitstudent/recruitstudent_update";
}
/**
* 修改学生信息
*
* @param map
* @return
*/
@RequestMapping("update.do")
public String update(StudentInfo studentInfo, Map<String, Object> map,@ModelAttribute("staff") StaffInfo staffInfo) {
//studentInfo.setStudentMark("1");
int count = studentInfoService.updateByPrimaryKeySelective(studentInfo);
if (count > 0) {
map.put("info", "修改学员成功");
} else {
map.put("info", "修改学员失败");
}
return list(map, staffInfo, studentInfo,1);
}
/**
* 删除学员信息,并不是数据库里删除
* 而是把学员状态改成-1
* //-1表示无效 0表示未分配学员 1已分配学员 2报名学员
*/
@RequestMapping("delete.do")
public String delete(@RequestParam("studentId") Integer Id, StudentInfo studentInfo, Map<String, Object> map,@ModelAttribute("staff") StaffInfo staffInfo) {
studentInfo.setStudentMark("-1");//-1表示无效 0表示未分配学员 1已分配学员 2报名学员
studentInfo.setStudentId(Id);
int count = studentInfoService.updateByPrimaryKeySelective(studentInfo);
if (count > 0) {
map.put("info", "删除学员成功");
} else {
map.put("info", "删除学员失败");
}
return list(map, staffInfo, studentInfo,1);
}
/**
* 时间属性的编辑器
*/
@InitBinder
public void initBinder(ServletRequestDataBinder bin) {
bin.registerCustomEditor(Date.class, new CustomDateEditor(
new SimpleDateFormat("yyyy-MM-dd"), true));
}
}