项目实训第四周第一次记录
1.任务安排
需要完成报修管理,用于管理确认用户上传的座位报修信息。管理员可判断报修信息是否属实,如果确认报修信息属实,该座位会自动设置为不可选择,并确认是否修复。有违规报修占座嫌疑的用户,只要有一次,就不允许该用户发送报修申请。
2.任务分析
2.1显示待审核的报修请求
找出所有待审核的报修请求。返回给前端所需要的信息,包括报修记录自增id,教室名称,座位照片,手势认证数字,报修人用户名,报修时间,备注。其中报修自增id可以不显示,主要用于前端进行同意或拒绝操作时可以唯一确定是哪一条报修请求。按照报修时间进行排序,报修时间早的记录会排在前面。
2.2显示未修复的报修请求
找出所有未修复的报修请求。返回给前端所需要的信息,包括报修记录自增id,教室名称,座位照片,手势认证数字,报修人用户名,报修时间,备注。其中报修自增id可以不显示,主要用于前端进行同意或拒绝操作时可以唯一确定是哪一条报修请求,因为已经通过了管理员的核实,所以手势认证数字也可以不在前端显示,但是在传送数据时为了保持和上面待审核的报修请求格式一致仍然会发送给前端。按照报修时间进行排序,报修时间早的记录会排在前面。
2.3同意报修请求
首先将维修请求从待审核变成未修复,并找到报修的座位将该座位状态从可能损坏变为已损坏。然后需要发送信息告诉用户,报修审核已经通过。
2.4拒绝报修请求
首先将维修请求从待审核变成已修复,并找到报修的座位将座位状态从可能损坏变为可正常使用。然后找到报修的用户,将用户的报修状态变为0,表示用户因为违规报修,有占座嫌疑,所以不可再报修。然后需要发送信息告诉用户,报修审核没有通过,而且由于违规报修导致不可再报修。
2.5修复座位
首先将维修请求从未修复变成已修复,并找到报修的座位将座位状态从已损坏变为可正常使用。然后需要发送信息告诉提交报修请求的用户,所报修的座位已经修复完毕。
3.具体代码
3.1RepairMapper
@Mapper
public interface RepairMapper {
/*@Select("select repair_id,room_name,picture,number,seat_no,user_openid,time," +
"repair_desc from repair natural join seat where repaired=\"2\"" )
public ArrayList<Repair_Record> find_nodeal_repair();
@Select("select repair_id,room_name,picture,number,seat_no,user_openid,time," +
"repair_desc from repair natural join seat where repaired=\"0\"" )
public ArrayList<Repair_Record> find_wait_repair();*/
@Select("select repair_id from repair where repaired=\"2\" order by time")
public int[] find_nodeal_repair_id();
@Select("select repair_id from repair where repaired=\"0\" order by time")
public int[] find_wait_repair_id();
@Select("select number from repair where repair_id=#{repair_id}")
public int find_number_by_repair_id(@Param("repair_id") int repair_id);
@Select("select picture from repair where repair_id=#{repair_id}")
public String find_picture_by_repair_id(@Param("repair_id") int repair_id);
@Select("select repair_desc from repair where repair_id=#{repair_id}")
public String find_repair_desc_by_repair_id(@Param("repair_id") int repair_id);
@Select("select username from user where user_openid=#{user_openid}")
public String find_username_by_user_openid(@Param("user_openid") String user_openid);
@Update("update repair set repaired=#{repaired} where repair_id=#{repair_id} ")
public int update_repaired_by_repair_id(@Param("repair_id") int repair_id,
@Param("repaired") String repaired);
@Update("update user set repair_status=#{repair_status} where user_openid=" +
"(select useropen_id from repair where repair_id=#{repair_id})")
public int update_repair_status_by_repair_id(@Param("repair_id") int repair_id,
@Param("repair_status") String repair_status);
@Update("update seat set seat_status=#{seat_status} where seat_id=(select seat_id from repair where repair_id=#{repair_id})")
public int update_seat_status_by_repair_id(@Param("repair_id") int repair_id,
@Param("repair_status") String seat_status);
@Insert("insert into message(user_openid,message_title,message_content,hasRead,time) " +
"values(#{user_openid},#{message_title},#{message_content},#{hasRead},#{time})")
public int add_message_record(@Param("user_openid") String user_openid,@Param("message_title") String message_title,
@Param("message_content") String message_content,@Param("hasRead") String hasRead,
@Param("time") Date time);
@Select("select user_openid from repair where repair_id=#{repair_id}")
public String find_user_openid_by_repair_id(@Param("repair_id") int repair_id);
@Select("select seat_id from repair where repair_id=#{repair_id}")
public int find_seat_id_by_repair_id(@Param("repair_id") int repair_id);
@Select("select time from repair where repair_id=#{repair_id}")
public Date find_time_by_repair_id(@Param("repair_id") int repair_id);
@Select("select room_name from seat where seat_id=#{seat_id}")
public String find_room_name_by_seat_id(@Param("seat_id") int seat_id);
@Select("select seat_no from seat where seat_id=#{seat_id}")
public int find_seat_no_by_seat_id(@Param("seat_id") int seat_id);
}
3.2RepairService
@Service
public class RepairService {
@Autowired
RepairMapper repairMapper;
public Repair_Record[] find_nodeal_repair()
{
int[] repair_ids=repairMapper.find_nodeal_repair_id();
Repair_Record[] repair_records=new Repair_Record[repair_ids.length];
for(int i=0;i<repair_ids.length;i++)
{
int repair_id=repair_ids[i];
int seat_id=repairMapper.find_seat_id_by_repair_id(Integer.valueOf(repair_id));
String room_name=repairMapper.find_room_name_by_seat_id(seat_id);
String picture=repairMapper.find_picture_by_repair_id(repair_id);
int number=repairMapper.find_number_by_repair_id(repair_id);
int seat_no=repairMapper.find_seat_no_by_seat_id(seat_id);
String user_openid=repairMapper.find_user_openid_by_repair_id(repair_id);
String username=repairMapper.find_username_by_user_openid(user_openid);
Date time=repairMapper.find_time_by_repair_id(repair_id);
String repair_desc=repairMapper.find_repair_desc_by_repair_id(repair_id);
repair_records[i]=new Repair_Record(repair_id,room_name,picture,number,seat_no,user_openid,username,time,repair_desc);
}
return repair_records;
}
public Repair_Record[] find_wait_repair()
{
int[] repair_ids=repairMapper.find_wait_repair_id();
Repair_Record[] repair_records=new Repair_Record[repair_ids.length];
for(int i=0;i<repair_ids.length;i++)
{
int repair_id=repair_ids[i];
int seat_id=repairMapper.find_seat_id_by_repair_id(Integer.valueOf(repair_id));
String room_name=repairMapper.find_room_name_by_seat_id(seat_id);
String picture=repairMapper.find_picture_by_repair_id(repair_id);
int number=repairMapper.find_number_by_repair_id(repair_id);
int seat_no=repairMapper.find_seat_no_by_seat_id(seat_id);
String user_openid=repairMapper.find_user_openid_by_repair_id(repair_id);
String username=repairMapper.find_username_by_user_openid(user_openid);
Date time=repairMapper.find_time_by_repair_id(repair_id);
String repair_desc=repairMapper.find_repair_desc_by_repair_id(repair_id);
repair_records[i]=new Repair_Record(repair_id,room_name,picture,number,seat_no,user_openid,username,time,repair_desc);
}
return repair_records;
}
@Transactional
public int agree_repair(String repair_id)
{
int result=0;
//将维修请求从待审核变成未修复
result+=repairMapper.update_repaired_by_repair_id(Integer.valueOf(repair_id),"0");
//将座位状态从可能损坏变为已损坏
result+=repairMapper.update_seat_status_by_repair_id(Integer.valueOf(repair_id),"4");
String user_openid= repairMapper.find_user_openid_by_repair_id(Integer.valueOf(repair_id));
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time= df.format(repairMapper.find_time_by_repair_id(Integer.valueOf(repair_id)));
int seat_id=repairMapper.find_seat_id_by_repair_id(Integer.valueOf(repair_id));
String room_name=repairMapper.find_room_name_by_seat_id(seat_id);
int seat_no=repairMapper.find_seat_no_by_seat_id(seat_id);
String message_title="报修审核通知";
String message_content="您于"+time+"提交的教室名称为"+room_name+"中座位编号为"
+seat_no+"的座位报修请求已经通过。请耐心等待座位维修完成";
Date date=new Date();
result+=repairMapper.add_message_record(user_openid,message_title,message_content,"0",date);
return result;
}
@Transactional
public int disagree_repair(String repair_id)
{
int result=0;
//将维修请求从待审核变成已修复
result+=repairMapper.update_repaired_by_repair_id(Integer.valueOf(repair_id),"1");
//将座位状态从可能损坏变为可正常使用
result+=repairMapper.update_seat_status_by_repair_id(Integer.valueOf(repair_id),"1");
//将用户的报修状态变为0,表示用户不可报修
result+=repairMapper.update_repair_status_by_repair_id(Integer.valueOf(repair_id),"0");
String user_openid= repairMapper.find_user_openid_by_repair_id(Integer.valueOf(repair_id));
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time= df.format(repairMapper.find_time_by_repair_id(Integer.valueOf(repair_id)));
int seat_id=repairMapper.find_seat_id_by_repair_id(Integer.valueOf(repair_id));
String room_name=repairMapper.find_room_name_by_seat_id(seat_id);
int seat_no=repairMapper.find_seat_no_by_seat_id(seat_id);
String message_title="报修审核通知";
String message_content="您于"+time+"提交的教室名称为"+room_name+"中座位编号为"
+seat_no+"的座位报修请求没有通过.由于您的违规操作,您将不可进行报修操作.";
Date date=new Date();
result+=repairMapper.add_message_record(user_openid,message_title,message_content,"0",date);
return result;
}
@Transactional
public int repair_seat(String repair_id)
{
int result=0;
//将维修请求从未修复变成已修复
result+=repairMapper.update_repaired_by_repair_id(Integer.valueOf(repair_id),"1");
//将座位状态从已损坏变为可正常使用
result+=repairMapper.update_seat_status_by_repair_id(Integer.valueOf(repair_id),"1");
String user_openid= repairMapper.find_user_openid_by_repair_id(Integer.valueOf(repair_id));
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time= df.format(repairMapper.find_time_by_repair_id(Integer.valueOf(repair_id)));
int seat_id=repairMapper.find_seat_id_by_repair_id(Integer.valueOf(repair_id));
String room_name=repairMapper.find_room_name_by_seat_id(seat_id);
int seat_no=repairMapper.find_seat_no_by_seat_id(seat_id);
String message_title="座位维修通知";
String message_content="您于"+time+"提交的教室名称为"+room_name+"中座位编号为"
+seat_no+"的座位已经完成维修,您可以正常使用该座位.";
Date date=new Date();
result+=repairMapper.add_message_record(user_openid,message_title,message_content,"0",date);
return result;
}
}
3.3RepairController
@CrossOrigin
@Api(tags = "报修管理")
@RestController
@RequestMapping(value = "/manage/repairmanage")
public class RepairController {
@Autowired
RepairService repairService;
@GetMapping("/find_nodeal_repair")
@ApiOperation(value = "获取所有的未处理的报修请求")
public Repair_Record[] find_nodeal_repair(){
return repairService.find_nodeal_repair();
}
@GetMapping("/find_wait_repair")
@ApiOperation(value = "获取所有的等待维修的报修请求")
public Repair_Record[] find_wait_repair(){
return repairService.find_wait_repair();
}
@PostMapping("/agree_repair")
@ApiOperation(value = "同意用户的报修请求")
public int agree_repair(@Param("repair_id") String repair_id){
return repairService.agree_repair(repair_id);
}
@PostMapping("/disagree_repair")
@ApiOperation(value = "拒绝用户的报修请求")
public int disagree_repair(@Param("repair_id") String repair_id){
return repairService.disagree_repair(repair_id);
}
@PostMapping("/repair_seat")
@ApiOperation(value = "修复座位")
public int repair_seat(@Param("repair_id") String repair_id){
return repairService.repair_seat(repair_id);
}
}