项目实训第三周第三次

项目实训第三周第三次记录

1.任务安排

需要完成申诉管理,主要用于管理未签到用户的申诉请求。管理员可以同意用户的申诉请求并修正签到信息,或者拒绝用户的申诉请求并填写拒绝理由。

2.任务分析

2.1显示待审核的申诉请求

找出所有审核申诉的结果为审核中申诉请求。返回给前端所需要的信息,并以对象数组的形式提供给前端,包括申诉id,教学名称,教室名称, 座位号,申诉人用户名 ,申诉时间,申诉缘由。其中申诉id可以不显示在前端,主要用于前端进行同意或拒绝操作时向唯一确定是哪一条申诉请求。排序方式按照申诉时间排序,时间早的申诉会排在前面。

2.2同意申诉请求

如果管理员同意用户的申诉请求,需要将申诉的结果从审核中变成已通过,并发消息告知该用户申诉已经通过。然后将用户对应的活动签到记录修改成已签到,已签退,未违约。然后去获取用户的违约次数,如果用户的违约次数是3,说明用户此时在黑名单里面,申诉成功之后违约次数就会减一,所以此时处于一个临界状态。再去根据用户的user_openid去查看黑名单表,如果用户被禁止参加的活动id不为空,那么就将是否禁止参加全部活动从1变成0,如果用户被禁止参加的活动id为空,那么就直接该条记录删除。并发送消息告知该用户已经被移出黑名单。

2.3拒绝申诉请求

如果管理员同意用户的申诉请求,需要将申诉的结果从审核中变成未通过。并发送消息告知该用户申诉没有通过。

3.具体代码

3.1AppealMapper

@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);

}

3.2AppealService

@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;
    }
}

3.3AppealController

@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);
    }


}
上一篇:空间转录组 概述2


下一篇:RNA分析流程