需要完成申诉管理,主要用于管理未签到用户的申诉请求。管理员可以同意用户的申诉请求并修正签到信息,或者拒绝用户的申诉请求并填写拒绝理由。
找出所有审核申诉的结果为审核中申诉请求。返回给前端所需要的信息,并以对象数组的形式提供给前端,包括申诉id,教学名称,教室名称, 座位号,申诉人用户名 ,申诉时间,申诉缘由。其中申诉id可以不显示在前端,主要用于前端进行同意或拒绝操作时向唯一确定是哪一条申诉请求。排序方式按照申诉时间排序,时间早的申诉会排在前面。
如果管理员同意用户的申诉请求,需要将申诉的结果从审核中变成已通过,并发消息告知该用户申诉已经通过。然后将用户对应的活动签到记录修改成已签到,已签退,未违约。然后去获取用户的违约次数,如果用户的违约次数是3,说明用户此时在黑名单里面,申诉成功之后违约次数就会减一,所以此时处于一个临界状态。再去根据用户的user_openid去查看黑名单表,如果用户被禁止参加的活动id不为空,那么就将是否禁止参加全部活动从1变成0,如果用户被禁止参加的活动id为空,那么就直接该条记录删除。并发送消息告知该用户已经被移出黑名单。
如果管理员同意用户的申诉请求,需要将申诉的结果从审核中变成未通过。并发送消息告知该用户申诉没有通过。
@Mapper public interface AppealMapper { @Select("select appeal_id from appeal where appeal_result=\"2\" order by appeal_time") public int[] find_nodeal_appeal_id(); @Select("select appeal_desc from appeal where appeal_id=#{appeal_id}") public String find_appeal_desc_by_appeal_id(@Param("appeal_id") int appeal_id); @Select("select username from user where user_openid=(select user_openid from " + "user_pick_seat where user_pick_seat_id=(select user_pick_seat_id from " + "appeal where appeal_id=#{appeal_id}))") String find_username_by_appeal_id(@Param("appeal_id") int appeal_id); @Update("update appeal set appeal_result=#{appeal_result},appeal_remark={appeal_remark} " + "where appeal_id=#{appeal_id}") int update_appeal_result_and_remark(@Param("appeal_id") int appeal_id , @Param("appeal_result") String appeal_result, @Param("appeal_remark") String appeal_remark); @Select("select user_openid from user_pick_seat where user_pick_seat_id=" + "(select user_pick_seat_id from appeal where appeal_id=#{appeal_id})") String find_user_openid_by_appeal_id(@Param("appeal_id") int appeal_id); @Select("select defaults from user where user_openid=#{user_openid}") int find_defaults_by_user_openid(@Param("user_openid") String user_openid); @Update("update user set defaults=defaults-1 where user_openid=#{user_openid}") int update_defaults_by_user_openid(@Param("user_openid") String user_openid); @Select("select isall from blacklist where user_openid=#{user_openid}") String find_isall_by_user_openid(@Param("user_openid") String user_openid); @Select("select act_id from blacklist where user_openid=#{user_openid}") String find_act_id_by_user_openid(@Param("user_openid") String user_openid); @Delete("delete from blacklist where user_openid=#{user_openid}") int delete_blacklist_record(@Param("user_openid") String user_openid); @Update("update blacklist set isall=#{isall} where user_openid=#{user_openid}") int update_isall_by_user_openid(@Param("user_openid") String user_openid, @Param("isall") String isall); @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 appeal_time from appeal where appeal_id=#{appeal_id}") Date find_appeal_time_by_appeal_id(@Param("appeal_id") int appeal_id); @Select("select act_name from activity where act_id=(select act_id from act_room_seat " + "where act_room_seat_id=(select act_room_seat_id from user_pick_seat where user_pick_seat_id=" + "(select user_pick_seat_id from appeal where appeal_id=#{appeal_id})))") String find_act_name_by_appeal_id(@Param("appeal_id") int appeal_id); @Select("select room_name from act_room_seat where act_room_seat_id=(select act_room_seat_id " + "from user_pick_seat where user_pick_seat_id=" + "(select user_pick_seat_id from appeal where appeal_id=#{appeal_id}))") String find_room_name_by_appeal_id(@Param("appeal_id") int appeal_id); @Select("select seat_no from seat where seat_id=(select seat_id from act_room_seat where " + "act_room_seat_id=(select act_room_seat_id from user_pick_seat where user_pick_seat_id=" + "(select user_pick_seat_id from appeal where appeal_id=#{appeal_id})))") int find_seat_no_by_appeal_id(@Param("appeal_id") int appeal_id); @Select("select user_pick_seat_id from appeal where appeal_id=#{appeal_id}") int find_user_pick_seat_id_by_appeal_id(@Param("appeal_id") int appeal_id); @Update("update user_pick_seat set sign_in=#{sign_in},sign_out=#{sign_out}," + "defaults=#{defaults} where user_pick_seat_id=#{user_pick_seat_id}") int update_sign_in_and_sign_out_by_user_pick_seat_id(@Param("user_pick_seat_id") int user_pick_seat_id, @Param("sign_in") String sign_in, @Param("sign_out") String sign_out, @Param("defaults") String defaults); }
@Service public class AppealService { @Autowired AppealMapper appealMapper; public Appeal_Record[] find_nodeal_appeal() { int[] appeal_ids=appealMapper.find_nodeal_appeal_id(); Appeal_Record[] appeal_records=new Appeal_Record[appeal_ids.length]; for(int i=0;i<appeal_ids.length;i++) { int appeal_id=appeal_ids[i]; String act_name=appealMapper.find_act_name_by_appeal_id(appeal_id); String room_name=appealMapper.find_room_name_by_appeal_id(appeal_id); int seat_no=appealMapper.find_seat_no_by_appeal_id(appeal_id); String username=appealMapper.find_username_by_appeal_id(appeal_id); Date appeal_time=appealMapper.find_appeal_time_by_appeal_id(appeal_id); String appeal_desc=appealMapper.find_appeal_desc_by_appeal_id(appeal_id); appeal_records[i]=new Appeal_Record(appeal_id,act_name,room_name,seat_no,username,appeal_time,appeal_desc); } return appeal_records; } @Transactional public int agree_appeal(String appeal_id) { int result=0; result+=appealMapper.update_appeal_result_and_remark(Integer.valueOf(appeal_id), "1",""); Date date=new Date(); String user_openid=appealMapper.find_user_openid_by_appeal_id(Integer.valueOf(appeal_id)); int user_pick_seat_id=appealMapper.find_user_pick_seat_id_by_appeal_id(Integer.valueOf(appeal_id)); result+=appealMapper.update_sign_in_and_sign_out_by_user_pick_seat_id(user_pick_seat_id, "1","1","0"); int defaults=appealMapper.find_defaults_by_user_openid(user_openid); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String message_content="您于"+ df.format(appealMapper.find_appeal_time_by_appeal_id(Integer.valueOf(appeal_id)))+ "提交的名为"+appealMapper.find_act_name_by_appeal_id(Integer.valueOf(appeal_id))+"活动的申诉已经通过"; result+=appealMapper.add_message_record(user_openid,"申诉成功",message_content,"0",date); result+=appealMapper.update_defaults_by_user_openid(user_openid); //违约次数原本为3,现在减1变成2。处于临界状态。 if(defaults==3) { String act_id=appealMapper.find_act_id_by_user_openid(user_openid); if(act_id.isEmpty()) { //说明用户因为违约导致禁止参与所有活动,现在违约解除,移出黑名单 result+=appealMapper.delete_blacklist_record(user_openid); result+=appealMapper.add_message_record(user_openid,"黑名单解除", "您已经从黑名单中移除,请保持良好的选座习惯","0",date); } else { result+=appealMapper.update_isall_by_user_openid(user_openid,"0"); } } return result; } public int disagree_appeal(String appeal_id,String appeal_remark) { int result=0; result+=appealMapper.update_appeal_result_and_remark(Integer.valueOf(appeal_id), "0",appeal_remark); String user_openid=appealMapper.find_user_openid_by_appeal_id(Integer.valueOf(appeal_id)); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); String message_content="您于"+ df.format(appealMapper.find_appeal_time_by_appeal_id(Integer.valueOf(appeal_id)))+ "提交的名为"+appealMapper.find_act_name_by_appeal_id(Integer.valueOf(appeal_id))+"活动的申诉没有通过"; result+=appealMapper.add_message_record(user_openid,"申诉失败",message_content,"0",date); return result; } }
@CrossOrigin @Api(tags = "申诉管理") @RestController @RequestMapping(value = "/manage/appealmanage") public class AppealController { @Autowired AppealService appealService; @GetMapping("/find_nodeal_appeal") @ApiOperation(value = "获取所有的未处理的申诉请求") public Appeal_Record[] find_nodeal_appeal(){ return appealService.find_nodeal_appeal(); } @PostMapping("/agree_appeal") @ApiOperation(value = "同意申诉请求") public int agree_appeal(@Param("appeal_id") String appeal_id) { return appealService.agree_appeal(appeal_id); } @PostMapping("/disagree_appeal") @ApiOperation(value = "拒绝申诉请求") public int disagree_appeal(@Param("appeal_id") String appeal_id,@Param("appeal_remark") String appeal_remark) { return appealService.disagree_appeal(appeal_id,appeal_remark); } }