1.对申请发布界面的完善
要求申请时间输入框中只能输入数字,不能大于两天,不能大于24小时,不能大于60分钟。
<el-input v-model="appForm.aday" placeholder="天" style="width: 100px" @input="changes1" oninput = "value=value.replace(/[^0-9]/g,'')"></el-input>:
使用outinput属性限制只能输入数字
oninput = "value=value.replace(/[^\d.]/g,'')"
使用@input="changes1"
限制输入数字的范围
changes1(value){
if(value > 2){
this.appForm.aday = 2;
}
},
2.后端处理申请
这里要将申请时间?天?时?分转化为?毫秒,因为时间戳元素是使用的单位是毫秒。然后将封装好的元素同时插入ainfo和aval两个表。
Controller层
@RequestMapping(value = "/insertApplication", method = RequestMethod.POST)
public int insertApplication(HttpServletRequest req) {
JSONObject jsonObject = new JSONObject();
int uid = Integer.parseInt(req.getParameter("uid").trim());
String auname = req.getParameter("auname").trim();
int day = Integer.parseInt(req.getParameter("day").trim());
int hour = Integer.parseInt(req.getParameter("hour").trim());
int minute = Integer.parseInt(req.getParameter("minute").trim());
int atime = (day * 24 * 60 * 60 + hour * 60 * 60 + minute * 60) * 1000;//转化成毫秒
String areason = req.getParameter("areason").trim();
int pid = Integer.parseInt(req.getParameter("pid").trim());
int apg = 2;
System.out.println(uid + "----------------------" + auname + "----------------------" + atime + "----------------------" + areason + "----------------------" + pid);
Application a = new Application();
a.setUid(uid);
a.setAuname(auname);
a.setAtime(atime);
a.setAreason(areason);
a.setPid(pid);
a.setApg(apg);
int result = applicationService.insertApplication(a);
int aid = a.getId();
applicationPlusService.insertAtime(aid, atime, uid);
System.out.println("新插入一条申请!");
return result;
}
Mapper层
<insert id="insertApplication" keyProperty="Application.id" useGeneratedKeys="true" parameterType="com.example.server.domain.Application">
insert into ainfo(uid,auname,atime,areason,pid,apg)
values(#{Application.uid},#{Application.auname},#{Application.atime},#{Application.areason},#{Application.pid},#{Application.apg})
</insert>
<insert id="insertAtime" useGeneratedKeys="true">
insert into aval(aid,atime,uid) values(#{aid},#{atime},#{uid})
</insert>
3.对第一次点击查看秘钥的处理
主要是在Service层的处理
获得当前时间t1,从数据库中获得当前申请的申请时间atime,利用时间戳运算计算出t1+atime即失效时间,将其存入数据库中的aval表中。
Service层:
@Override
public void firstClick(int uid, int aid) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
Date stime = calendar.getTime();//第一次点击查看密匙时的时间,这样得到的是中国时间但是存到数据库,数据库又把它变成了英国时间。。。
int atime = applicationPlusMapper.findAtime(aid, uid);
long etime0 = stime.getTime() + atime;
Date etime = new Date(etime0);
System.out.println("etime:"+etime);
applicationPlusMapper.firstClick(aid,uid,stime,etime,0);
}
Mapper层:
这里使用update更新数据库,我一开始错误使用了insert。
<update id="firstClick">
update aval
<set>
stime = #{stime},
etime = #{etime},
isend = #{isend},
</set>
where aid = #{aid}
</update>