1.技术咨询讨论:
企鹅:2970980236
2.使用技术:
后端 Java springboot
前端 vue
3.系统简介:
分为学生端和管理员端:
(1)学生端用的微信小程序,方便使用。
(2)管理员端用的PC端,方便管理。
(3)代码注释非常清晰,明了。
4.优点:
springboot 是Java的一个框架,学习简单,代码简洁,方便管理
vue 是前端比较新的技术。
5.系统演示:
6.代码演示:
代码注释清晰完善,适合研究学习,代码解释注释非常清晰,非常清晰。
package com.controller;
// 缴费信息;后端接口
// 这段代码是一个controller,对应前端Jiaofeixinxi页面后端接口的定义。提供了一系列操作缴费信息的接口。
@RestController
@RequestMapping("/jiaofeixinxi")
public class JiaofeixinxiController {
@Autowired
private JiaofeixinxiService jiaofeixinxiService;
// 后端列表
// page方法:后端分页查询接口,传入Map参数和JiaofeixinxiEntity对象,返回分页列表数据。
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,JiaofeixinxiEntity jiaofeixinxi,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("xuesheng")) {
jiaofeixinxi.setXuehao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<JiaofeixinxiEntity> ew = new EntityWrapper<JiaofeixinxiEntity>();
PageUtils page = jiaofeixinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiaofeixinxi), params), params));
return R.ok().put("data", page);
}
// 前端列表
// list方法:前端分页查询接口,传入Map参数和JiaofeixinxiEntity对象,返回分页列表数据。
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,JiaofeixinxiEntity jiaofeixinxi,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("xuesheng")) {
jiaofeixinxi.setXuehao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<JiaofeixinxiEntity> ew = new EntityWrapper<JiaofeixinxiEntity>();
PageUtils page = jiaofeixinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiaofeixinxi), params), params));
return R.ok().put("data", page);
}
// 列表
// lists方法:根据JiaofeixinxiEntity对象中的条件查询缴费信息列表。
@RequestMapping("/lists")
public R list( JiaofeixinxiEntity jiaofeixinxi){
EntityWrapper<JiaofeixinxiEntity> ew = new EntityWrapper<JiaofeixinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( jiaofeixinxi, "jiaofeixinxi"));
return R.ok().put("data", jiaofeixinxiService.selectListView(ew));
}
// 查询
// query方法:根据JiaofeixinxiEntity对象中的条件查询某一条缴费信息的详细信息。
@RequestMapping("/query")
public R query(JiaofeixinxiEntity jiaofeixinxi){
EntityWrapper< JiaofeixinxiEntity> ew = new EntityWrapper< JiaofeixinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( jiaofeixinxi, "jiaofeixinxi"));
JiaofeixinxiView jiaofeixinxiView = jiaofeixinxiService.selectView(ew);
return R.ok("查询缴费信息成功").put("data", jiaofeixinxiView);
}
// 后端详情
// info方法:后端查询某一条缴费信息的详细信息。
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
JiaofeixinxiEntity jiaofeixinxi = jiaofeixinxiService.selectById(id);
return R.ok().put("data", jiaofeixinxi);
}
// 前端详情
// detail方法:前端查询某一条缴费信息的详细信息。
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
JiaofeixinxiEntity jiaofeixinxi = jiaofeixinxiService.selectById(id);
return R.ok().put("data", jiaofeixinxi);
}
// 后端保存
// save方法:后端保存接口,传入JiaofeixinxiEntity对象进行保存操作。
@RequestMapping("/save")
public R save(@RequestBody JiaofeixinxiEntity jiaofeixinxi, HttpServletRequest request){
jiaofeixinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(jiaofeixinxi);
jiaofeixinxiService.insert(jiaofeixinxi);
return R.ok();
}
// 前端保存
// add方法:前端保存接口,传入JiaofeixinxiEntity对象进行保存操作。
@RequestMapping("/add")
public R add(@RequestBody JiaofeixinxiEntity jiaofeixinxi, HttpServletRequest request){
jiaofeixinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(jiaofeixinxi);
jiaofeixinxi.setUserid((Long)request.getSession().getAttribute("userId"));
jiaofeixinxiService.insert(jiaofeixinxi);
return R.ok();
}
// 修改
// update方法:根据传入的JiaofeixinxiEntity对象的主键进行更新操作。
@RequestMapping("/update")
public R update(@RequestBody JiaofeixinxiEntity jiaofeixinxi, HttpServletRequest request){
//ValidatorUtils.validateEntity(jiaofeixinxi);
jiaofeixinxiService.updateById(jiaofeixinxi);//全部更新
return R.ok();
}
// 删除
// delete方法:根据传入的主键数组进行批量删除操作。
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
jiaofeixinxiService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
// 提醒接口
// remindCount方法:根据用户传入的查询条件,查询某一类型缴费的提醒数量。
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<JiaofeixinxiEntity> wrapper = new EntityWrapper<JiaofeixinxiEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("xuesheng")) {
wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));
}
int count = jiaofeixinxiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}