基于Java+SpringBoot+Vue前后端分离常规应急物资管理系统设计和实现

\n文末获取源码联系
\n文末获取源码联系

👇🏻 精彩专栏 推荐订阅👇🏻 不然下次找不到哟

Java项目精品实战案例

微信小程序项目实战

Java项目项目实战

感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询

系统介绍:

当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈进。以前相关行业对于常规应急物资信息的管理和控制,采用人工登记的方式保存相关数据,这种以人力为主的管理模式已然落后。本人结合使用主流的程序开发技术,设计了一款基于SpringBoot+Vue的常规应急物资管理系统,可以较大地减少人力、财力的损耗,方便相关人员及时更新和保存信息。本常规应急物资管理系统是建立在B/S模式的基础之上,通过使用idea平台上编写相关的Java代码,实现对系统的功能模块的设计,使用MySQL数据库设计相关的数据表,实现对系统数据资源的管理和控制,使用SSM框架创建相关的项目主流架构,实现系统的基本框架搭建,最后再通过使用Tomcat浏览器将所研发的系统发布到网上,便于相关的用户运行和使用本系统。本文对系统进行实现的可行性分析,设计的功能及数据库规划,以及设计的主要功能模块测试等内容做了较为详细的介绍,并且在本文中也展示了系统主要的功能模块设计界面和操作界面,并对其做出了必要的解释说明,方便用户对系统进行操作和使用,以及后期的相关人员对系统进行更新和维护。本系统的实现可以极大地提高相关行业的工作效率,提升用户的使用体验,因此在现实生活中运用本系统具有很大的使用价值。

系统的总体功能设计阶段,是通过结合系统分析阶段的相关内容,对系统的整体功能设计进行规划的过程。系统的总体功能设计是系统详细功能设计的一个大方向,也就是说系统的各类子功能模块的设计,都是以总体功能设计为目标而进行的。通过对系统进行需求分析可知,可以大致了解系统具体所需要的相关的主要功能模块。本系统主要的功能需求包括物资信息管理、物资运输管理等模块。管理员功能设计图如图4-1所示,用户功能设计图如图4-2所示。

图4-1管理员功能设计图

图4-2用户功能设计图

程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。

程序操作流程图

功能截图:

5.1管理员角色功能设计

5.1.1管理员首页

通过设计的首页功能模块,管理用户可以成功登录系统,并且选择点击相关的功能模块按钮,操作和实现自己所需要的功能,管理员首页解饿设计如图5-1所示。

图5-1管理员首页界面

本功能模块的核心代码如下:

/**

  • 登录

*/

@IgnoreAuth

@PostMapping(value = “/login”)

public R login(String username, String password, String captcha,
HttpServletRequest request) {

UsersEntity user = usersService.selectOne(new
EntityWrapper().eq(“username”, username));

if(user==null || !user.getPassword().equals(password)) {

return R.error(“账号或密码不正确”);

}

String token = tokenService.generateToken(user.getId(),username, “users”,
user.getRole());

R r = R.ok();

r.put(“token”, token);

r.put(“role”,user.getRole());

r.put(“userId”,user.getId());

return r;

}

/**

  • 列表

*/

@RequestMapping(“/page”)

public R page(@RequestParam Map<String, Object> params,UsersEntity user){

EntityWrapper ew = new EntityWrapper();

PageUtils page = usersService.queryPage(params,
MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));

return R.ok().put(“data”, page);

}

5.1.2个人中心

通过设计的个人中心功能模块,管理用户可以选择修改账号密码,查看个人资料信息,通过不定期的对个人账户密码进行更新,保障个人信息安全,修改密码界面设计如图5-1所示,个人信息界面设计如图5-2所示。

图5-1修改密码界面

图5-2个人信息界面

本功能模块的核心代码如下:

/**

  • 密码重置

*/

@IgnoreAuth

@RequestMapping(value = “/resetPass”)

public R resetPass(String username, HttpServletRequest request){

UsersEntity user = usersService.selectOne(new
EntityWrapper().eq(“username”, username));

if(user==null) {

return R.error(“账号不存在”);

}

user.setPassword(“123456”);

usersService.update(user,null);

return R.ok(“密码已重置为:123456”);

}

/**

  • 信息

*/

@RequestMapping(“/info/{id}”)

public R info(@PathVariable(“id”) String id){

UsersEntity user = usersService.selectById(id);

return R.ok().put(“data”, user);

}

5.1.3健康打卡管理

通过设计的健康打卡管理功能模块,管理用户可以管理相关的健康打卡信息记录,比如进行查看健康打卡的详细信息,修改健康打卡的日期信息,删除已经失效的健康打卡信息记录等操作,健康打卡管理界面设计如图5-3所示。

图5-3健康打卡管理界面

本功能模块的核心代码如下:

/**

  • 健康打卡后端修改

*/

@RequestMapping(“/update”)

public R update(@RequestBody DakaEntity daka, HttpServletRequest request){

logger.debug(“update方法:,Controller:{},daka:{}”,this.getClass().getName(),daka.toString());

String role = String.valueOf(request.getSession().getAttribute(“role”));

// if(false)

// return R.error(511,“永远不会进入”);

// else if(“用户”.equals(role))

//
daka.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute(“userId”))));

//根据字段查询是否有相同数据

Wrapper queryWrapper = new EntityWrapper()

.notIn(“id”,daka.getId())

.andNew()

.eq(“yonghu_id”, daka.getYonghuId())

.eq(“insert_time”, new SimpleDateFormat(“yyyy-MM-
dd”).format(daka.getInsertTime()))

;

logger.info(“sql语句:”+queryWrapper.getSqlSegment());

DakaEntity dakaEntity = dakaService.selectOne(queryWrapper);

if(dakaEntity==null){

dakaService.updateById(daka);//根据id更新

return R.ok();

}else {

return R.error(511,“表中有相同数据”);

}

}

5.1.4基础数据管理

通过设计的基础数据管理功能模块,管理用户可以管理相关的物资类型信息记录,比如进行查看物资类型的详细信息,修改物资类型的名称信息,删除已经失效的物资类型信息记录等操作,物资类型管理界面设计如图5-4所示。

图5-4物资类型管理界面

本功能模块的核心代码如下:

/**

  • 基础数据后端修改

*/

@RequestMapping(“/update”)

public R update(@RequestBody DictionaryEntity dictionary, HttpServletRequest
request){

logger.debug(“update方法:,Controller:{},dictionary:{}”,this.getClass().getName(),dictionary.toString());

String role = String.valueOf(request.getSession().getAttribute(“role”));

// if(false)

// return R.error(511,“永远不会进入”);

//根据字段查询是否有相同数据

Wrapper queryWrapper = new EntityWrapper()

.notIn(“id”,dictionary.getId())

.eq(“dic_code”, dictionary.getDicCode())

.eq(“index_name”, dictionary.getIndexName())

;

if(dictionary.getDicCode().contains(“_erji_types”)){

queryWrapper.eq(“super_id”,dictionary.getSuperId());

}

logger.info(“sql语句:”+queryWrapper.getSqlSegment());

DictionaryEntity dictionaryEntity = dictionaryService.selectOne(queryWrapper);

if(dictionaryEntity==null){

dictionaryService.updateById(dictionary);//根据id更新

//如果字典表修改数据的话,把数据再重新查出,放入监听器中

List dictionaryEntities = dictionaryService.selectList(new
EntityWrapper());

ServletContext servletContext = request.getServletContext();

Map<String, Map<Integer,String>> map = new HashMap<>();

for(DictionaryEntity d :dictionaryEntities){

Map<Integer, String> m = map.get(d.getDicCode());

if(m ==null || m.isEmpty()){

m = new HashMap<>();

}

m.put(d.getCodeIndex(),d.getIndexName());

map.put(d.getDicCode(),m);

}

servletContext.setAttribute(“dictionaryMap”,map);

return R.ok();

}else {

return R.error(511,“表中有相同数据”);

}

}

5.1.5物资管理

通过设计的物资管理功能模块,管理用户可以管理相关的物资信息记录,比如进行查看物资的详细信息,修改物资的库存信息,删除已经失效的物资信息记录等操作,物资管理界面设计如图5-5所示。

图5-5物资管理界面

本功能模块的核心代码如下:

/**

  • 物资后端修改

*/

@RequestMapping(“/update”)

public R update(@RequestBody WuziEntity wuzi, HttpServletRequest request){

logger.debug(“update方法:,Controller:{},wuzi:{}”,this.getClass().getName(),wuzi.toString());

String role = String.valueOf(request.getSession().getAttribute(“role”));

// if(false)

// return R.error(511,“永远不会进入”);

//根据字段查询是否有相同数据

Wrapper queryWrapper = new EntityWrapper()

.notIn(“id”,wuzi.getId())

.andNew()

.eq(“wuzi_name”, wuzi.getWuziName())

.eq(“wuzi_types”, wuzi.getWuziTypes())

.eq(“wuzi_kucun_number”, wuzi.getWuziKucunNumber())

.eq(“wuzi_danwei”, wuzi.getWuziDanwei())

.eq(“wuzi_delete”, wuzi.getWuziDelete())

;

logger.info(“sql语句:”+queryWrapper.getSqlSegment());

WuziEntity wuziEntity = wuziService.selectOne(queryWrapper);

if(“”.equals(wuzi.getWuziPhoto()) || “null”.equals(wuzi.getWuziPhoto())){

wuzi.setWuziPhoto(null);

}

if(wuziEntity==null){

wuziService.updateById(wuzi);//根据id更新

return R.ok();

}else {

return R.error(511,“表中有相同数据”);

}

}

5.1.6物资申请管理

通过设计的物资申请管理功能模块,管理用户可以管理相关的物资申请信息记录,比如进行查看物资申请的详细信息,修改物资的申请时间信息,删除已经失效的物资申请信息记录等操作,物资申请管理界面设计如图5-6所示。

图5-6物资申请管理界面

本功能模块的核心代码如下:

/**

  • 物资申请后端保存

*/

@RequestMapping(“/save”)

public R save(@RequestBody WuzishenqingEntity wuzishenqing, HttpServletRequest
request){

logger.debug(“save方法:,Controller:{},wuzishenqing:{}”,this.getClass().getName(),wuzishenqing.toString());

String role = String.valueOf(request.getSession().getAttribute(“role”));

if(false)

return R.error(511,“永远不会进入”);

else if(“用户”.equals(role))

wuzishenqing.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute(“userId”))));

wuzishenqing.setInsertTime(new Date());

wuzishenqing.setWuzishenqingYesnoTypes(1);

wuzishenqing.setCreateTime(new Date());

wuzishenqingService.insert(wuzishenqing);

return R.ok();

}

/**

  • 物资申请后端修改

*/

@RequestMapping(“/update”)

public R update(@RequestBody WuzishenqingEntity wuzishenqing,
HttpServletRequest request){

logger.debug(“update方法:,Controller:{},wuzishenqing:{}”,this.getClass().getName(),wuzishenqing.toString());

wuzishenqingService.updateById(wuzishenqing);//根据id更新

return R.ok();

}

5.1.7物资运输管理

通过设计的物资运输管理功能模块,管理用户可以管理相关的物资运输信息记录,比如进行查看物资运输的详细信息,修改物资运输的当前状态信息,删除已经失效的物资运输信息记录等操作,物资运输管理界面设计如图5-7所示。

图5-7物资运输管理界面

本功能模块的核心代码如下:

/**

  • 物资运输后端保存

*/

@RequestMapping(“/save”)

public R save(@RequestBody WuziyunshuEntity wuziyunshu, HttpServletRequest
request){

logger.debug(“save方法:,Controller:{},wuziyunshu:{}”,this.getClass().getName(),wuziyunshu.toString());

String role = String.valueOf(request.getSession().getAttribute(“role”));

if(false)

return R.error(511,“永远不会进入”);

wuziyunshu.setUpdateTime(new Date());

wuziyunshu.setInsertTime(new Date());

wuziyunshu.setCreateTime(new Date());

wuziyunshuService.insert(wuziyunshu);

return R.ok();

}

/**

  • 物资运输后端修改

*/

@RequestMapping(“/update”)

public R update(@RequestBody WuziyunshuEntity wuziyunshu, HttpServletRequest
request){

logger.debug(“update方法:,Controller:{},wuziyunshu:{}”,this.getClass().getName(),wuziyunshu.toString());

wuziyunshu.setUpdateTime(new Date());

wuziyunshuService.updateById(wuziyunshu);//根据id更新

return R.ok();

}

5.1.8用户管理

通过设计的用户管理功能模块,管理用户可以管理相关的用户信息资料,比如进行查看用户的详细资料,修改用户的联系方式,删除已经注销的用户信息记录等操作,用户管理界面设计如图5-8所示。

图5-8用户管理界面

本功能模块的核心代码如下:

/**

  • 用户后端修改

*/

@RequestMapping(“/update”)

public R update(@RequestBody YonghuEntity yonghu, HttpServletRequest request){

logger.debug(“update方法:,Controller:{},yonghu:{}”,this.getClass().getName(),yonghu.toString());

String role = String.valueOf(request.getSession().getAttribute(“role”));

// if(false)

// return R.error(511,“永远不会进入”);

//根据字段查询是否有相同数据

Wrapper queryWrapper = new EntityWrapper()

.notIn(“id”,yonghu.getId())

.andNew()

.eq(“username”, yonghu.getUsername())

.or()

.eq(“yonghu_phone”, yonghu.getYonghuPhone())

.or()

.eq(“yonghu_id_number”, yonghu.getYonghuIdNumber())

;

logger.info(“sql语句:”+queryWrapper.getSqlSegment());

YonghuEntity yonghuEntity = yonghuService.selectOne(queryWrapper);

if(“”.equals(yonghu.getYonghuPhoto()) ||
“null”.equals(yonghu.getYonghuPhoto())){

yonghu.setYonghuPhoto(null);

}

if(yonghuEntity==null){

yonghuService.updateById(yonghu);//根据id更新

return R.ok();

}else {

return R.error(511,“账户或者用户手机号或者用户身份证号已经被使用”);

}

}

5.1.9部门管理

通过设计的部门管理功能模块,管理用户可以管理相关的部门信息记录,比如进行查看部门的详细信息,修改部门的职责信息,删除已经失效的部门信息记录等操作,部门管理界面设计如图5-9所示。

图5-9部门管理界面

本功能模块的核心代码如下:

/**

  • 部门后端修改

*/

@RequestMapping(“/update”)

public R update(@RequestBody BumenEntity bumen, HttpServletRequest request){

logger.debug(“update方法:,Controller:{},bumen:{}”,this.getClass().getName(),bumen.toString());

String role = String.valueOf(request.getSession().getAttribute(“role”));

// if(false)

// return R.error(511,“永远不会进入”);

//根据字段查询是否有相同数据

Wrapper queryWrapper = new EntityWrapper()

.notIn(“id”,bumen.getId())

.andNew()

.eq(“bumen_name”, bumen.getBumenName())

.eq(“bumen_zhize”, bumen.getBumenZhize())

.eq(“bumen_number”, bumen.getBumenNumber())

;

logger.info(“sql语句:”+queryWrapper.getSqlSegment());

BumenEntity bumenEntity = bumenService.selectOne(queryWrapper);

if(bumenEntity==null){

bumenService.updateById(bumen);//根据id更新

return R.ok();

}else {

return R.error(511,“表中有相同数据”);

}

}

5.2用户功能设计

5.2.1用户首页

通过设计的首页功能模块,管理用户可以成功登录系统,并且选择点击相关的功能模块按钮,操作和实现自己所需要的功能,管理员首页解饿设计如图5-10所示。

图5-10用户首页界面

本功能模块的核心代码如下:

/**

  • 首页后端保存

*/

@RequestMapping(“/save”)

public R save(@RequestBody YonghuEntity yonghu, HttpServletRequest request){

logger.debug(“save方法:,Controller:{},yonghu:{}”,this.getClass().getName(),yonghu.toString());

String role = String.valueOf(request.getSession().getAttribute(“role”));

if(false)

return R.error(511,“永远不会进入”);

Wrapper queryWrapper = new EntityWrapper()

.eq(“username”, yonghu.getUsername())

.or()

.eq(“yonghu_phone”, yonghu.getYonghuPhone())

.or()

.eq(“yonghu_id_number”, yonghu.getYonghuIdNumber())

;

logger.info(“sql语句:”+queryWrapper.getSqlSegment());

YonghuEntity yonghuEntity = yonghuService.selectOne(queryWrapper);

if(yonghuEntity==null){

yonghu.setCreateTime(new Date());

yonghu.setPassword(“123456”);

yonghuService.insert(yonghu);

return R.ok();

}else {

return R.error(511,“账户或者用户手机号或者用户身份证号已经被使用”);

}

}

5.2.2个人中心

通过设计的个人中心管理功能模块,用户可以选择查看个人资料信息,选择更新个人相关的资料信息记录;也可以选择修改账号密码,通过不定期的对个人账户密码进行更新,保障个人信息安全,修改密码界面设计如图5-11所示,个人信息界面设计如图5-12所示。

图5-11修改密码界面

图5-12个人信息界面

本功能模块的核心代码如下:

//查询是否重复

//账户

List yonghuEntities_username = yonghuService.selectList(new
EntityWrapper().in(“username”, seachFields.get(“username”)));

if(yonghuEntities_username.size() >0 ){

ArrayList repeatFields = new ArrayList<>();

for(YonghuEntity s:yonghuEntities_username){

repeatFields.add(s.getUsername());

}

return R.error(511,“数据库的该表中的 [账户] 字段已经存在 存在数据为:”+repeatFields.toString());

}

//用户手机号

List yonghuEntities_yonghuPhone = yonghuService.selectList(new
EntityWrapper().in(“yonghu_phone”,
seachFields.get(“yonghuPhone”)));

if(yonghuEntities_yonghuPhone.size() >0 ){

ArrayList repeatFields = new ArrayList<>();

for(YonghuEntity s:yonghuEntities_yonghuPhone){

repeatFields.add(s.getYonghuPhone());

}

return R.error(511,“数据库的该表中的 [用户手机号] 字段已经存在 存在数据为:”+repeatFields.toString());

}

//用户身份证号

List yonghuEntities_yonghuIdNumber =
yonghuService.selectList(new
EntityWrapper().in(“yonghu_id_number”,
seachFields.get(“yonghuIdNumber”)));

if(yonghuEntities_yonghuIdNumber.size() >0 ){

ArrayList repeatFields = new ArrayList<>();

for(YonghuEntity s:yonghuEntities_yonghuIdNumber){

repeatFields.add(s.getYonghuIdNumber());

}

return R.error(511,“数据库的该表中的 [用户身份证号] 字段已经存在 存在数据为:”+repeatFields.toString());

}

yonghuService.insertBatch(yonghuList);

return R.ok();

}

5.2.3健康打卡管理

通过设计的健康打卡管理功能模块,用户可以管理相关的健康打卡信息记录,比如进行查看健康打卡的详细信息,修改健康打卡的日期信息,删除已经失效的健康打卡信息记录等操作,健康打卡管理界面设计如图5-13所示。

图5-13健康打卡管理界面

本功能模块的核心代码如下:

/**

  • 健康打卡后端详情

*/

@RequestMapping(“/info/{id}”)

public R info(@PathVariable(“id”) Long id, HttpServletRequest request){

logger.debug(“info方法:,Controller:{},id:{}”,this.getClass().getName(),id);

DakaEntity daka = dakaService.selectById(id);

if(daka !=null){

//entity转view

DakaView view = new DakaView();

BeanUtils.copyProperties( daka , view );//把实体数据重构到view中

//级联表

YonghuEntity yonghu = yonghuService.selectById(daka.getYonghuId());

if(yonghu != null){

BeanUtils.copyProperties( yonghu , view ,new String[]{ “id”, “createTime”,
“insertTime”, “updateTime”});//把级联的数据添加到view中,并排除id和创建时间字段

view.setYonghuId(yonghu.getId());

}

//修改对应字典表字段

dictionaryService.dictionaryConvert(view, request);

return R.ok().put(“data”, view);

}else {

return R.error(511,“查不到数据”);

}

}

5.2.4物资管理

通过设计的物资管理功能模块,管理用户可以查看相关的物资信息记录,可以查到物资名称、物资图片、物资类型、物资库存等详细信息,物资管理界面设计如图5-14所示。

图5-14物资管理界面

本功能模块的核心代码如下:

/**

  • 物资后端详情

*/

@RequestMapping(“/info/{id}”)

public R info(@PathVariable(“id”) Long id, HttpServletRequest request){

logger.debug(“info方法:,Controller:{},id:{}”,this.getClass().getName(),id);

WuziEntity wuzi = wuziService.selectById(id);

if(wuzi !=null){

//entity转view

WuziView view = new WuziView();

BeanUtils.copyProperties( wuzi , view );//把实体数据重构到view中

//修改对应字典表字段

dictionaryService.dictionaryConvert(view, request);

return R.ok().put(“data”, view);

}else {

return R.error(511,“查不到数据”);

}

}

5.2.5物资申请管理

通过设计的物资申请管理功能模块,用户可以管理相关的物资申请信息记录,比如进行查看物资申请的详细信息,新增相关的物资申请信息记录,物资申请管理界面设计如图5-15所示。

图5-15物资申请管理界面

本功能模块的核心代码如下:

/**

  • 物资申请后端详情

*/

@RequestMapping(“/info/{id}”)

public R info(@PathVariable(“id”) Long id, HttpServletRequest request){

logger.debug(“info方法:,Controller:{},id:{}”,this.getClass().getName(),id);

WuzishenqingEntity wuzishenqing = wuzishenqingService.selectById(id);

if(wuzishenqing !=null){

//entity转view

WuzishenqingView view = new WuzishenqingView();

BeanUtils.copyProperties( wuzishenqing , view );//把实体数据重构到view中

//级联表

WuziEntity wuzi = wuziService.selectById(wuzishenqing.getWuziId());

if(wuzi != null){

BeanUtils.copyProperties( wuzi , view ,new String[]{ “id”, “createTime”,
“insertTime”, “updateTime”});//把级联的数据添加到view中,并排除id和创建时间字段

view.setWuziId(wuzi.getId());

}

//级联表

YonghuEntity yonghu = yonghuService.selectById(wuzishenqing.getYonghuId());

if(yonghu != null){

BeanUtils.copyProperties( yonghu , view ,new String[]{ “id”, “createTime”,
“insertTime”, “updateTime”});//把级联的数据添加到view中,并排除id和创建时间字段

view.setYonghuId(yonghu.getId());

}

//修改对应字典表字段

dictionaryService.dictionaryConvert(view, request);

return R.ok().put(“data”, view);

}else {

return R.error(511,“查不到数据”);

}

}

5.2.6物资运输管理

通过设计的物资运输管理功能模块,用户可以查看相关的物资运输信息记录,比如查到物资名称、物资图片、单位、运输数量、当前状态等详细信息,物资运输管理界面设计如图5-16所示。

图5-16物资运输管理界面

代码实现:

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
    
    @Autowired
    private UserService userService;
    
    @Autowired
    private TokenService tokenService;

    /**
     * 登录
     */
    @IgnoreAuth
    @PostMapping(value = "/login")
    public R login(String username, String password, String role, HttpServletRequest request) {
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user != null){
            if(!user.getRole().equals(role)){
                return R.error("权限不正常");
            }
            if(user==null || !user.getPassword().equals(password)) {
                return R.error("账号或密码不正确");
            }
            String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
            return R.ok().put("token", token);
        }else{
            return R.error("账号或密码或权限不对");
        }

    }
    
    /**
     * 注册
     */
    @IgnoreAuth
    @PostMapping(value = "/register")
    public R register(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 退出
     */
    @GetMapping(value = "logout")
    public R logout(HttpServletRequest request) {
        request.getSession().invalidate();
        return R.ok("退出成功");
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
    @RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user==null) {
            return R.error("账号不存在");
        }
        user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
    
    /**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
        PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
        Integer id = (Integer)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

论文参考:

*

链接点击直达:下载链接

👇🏻 精彩专栏 推荐订阅👇🏻 不然下次找不到哟

Java项目精品实战案例

微信小程序项目实战

Java项目项目实战

感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询

系统介绍:

传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,商品信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大用户的需求,因此就应运而生出相应的宠物商城网站。

本宠物商城网站分为管理员还有用户两个权限,管理员可以管理用户的基本信息内容,可以管理汽车信息以及汽车的租赁信息,能够与用户进行相互交流等操作,用户可以查看商品信息,可以查看公告以及查看管理员回复信息等操作。

该宠物商城网站采用的是WEB应用程序开发中最受欢迎的B/S三层结构模式,使用占用空间小但功能齐全的MySQL数据库进行数据的存储操作,系统开发技术使用到了JAVA技术。该宠物商城网站能够解决许多传统手工操作的难题,比如数据查询耽误时间长,数据管理步骤繁琐等问题。总的来说,宠物商城网站性能稳定,功能较全,投入运行使用性价比很高。

宠物商城网站的开发也是有对应的流程,开发之前必须要进行用户功能需求的分析,最后根据功能需求进行网站设计还有数据库相关数据的设计工作,此次开发的宠物商城网站开发流程如图3.1所示。

程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。

程序操作流程图

功能截图:

5.1 管理员功能模块的实现

5.1.1 商品列表

如图5.1显示的就是商品列表页面,此页面提供给管理员的功能有:查看商品、新增商品、修改商品、删除商品等。

图5.1 商品列表页面

5.1.2 商品收藏管理

管理员可以对商品收藏进行管理,可以设置查看所有用户的收藏,可以删除某个用户的收藏。商品收藏管理界面如图5.2所示。

图5.2 商品收藏管理页面

5.1.3 百科类型管理

百科类型管理页面显示所有百科类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的百科类型信息执行编辑更新,失效的百科类型信息也能让管理员快速删除。下图就是百科类型管理页面。百科类型管理界面如图5.3所示。

图5.3百科类型管理界面

代码实现:

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
    
    @Autowired
    private UserService userService;
    
    @Autowired
    private TokenService tokenService;

    /**
     * 登录
     */
    @IgnoreAuth
    @PostMapping(value = "/login")
    public R login(String username, String password, String role, HttpServletRequest request) {
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user != null){
            if(!user.getRole().equals(role)){
                return R.error("权限不正常");
            }
            if(user==null || !user.getPassword().equals(password)) {
                return R.error("账号或密码不正确");
            }
            String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
            return R.ok().put("token", token);
        }else{
            return R.error("账号或密码或权限不对");
        }

    }
    
    /**
     * 注册
     */
    @IgnoreAuth
    @PostMapping(value = "/register")
    public R register(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 退出
     */
    @GetMapping(value = "logout")
    public R logout(HttpServletRequest request) {
        request.getSession().invalidate();
        return R.ok("退出成功");
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
    @RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user==null) {
            return R.error("账号不存在");
        }
        user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
    
    /**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
        PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
        Integer id = (Integer)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

论文参考:

*

链接点击直达:下载链接

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值