Mybatis Flex+SpringBoot

一、UserHaveLogsVo------创建一对多的日志

一个管理员对应多个操作日志,所以需要用list列表来装userinfolog

二、业务逻辑:

在userinfocontroller下创建查询日志的方法:

userinfocontroller的代码:

package com.qzimp.fujiancuo.controller;

import com.mybatisflex.core.paginate.Page;

import com.qzimp.fujiancuo.entity.vo.AdminHaveLogsVo;

import com.qzimp.fujiancuo.entity.vo.UserHaveLogsVo;

import org.springframework.web.bind.annotation.DeleteMapping;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.PutMapping;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.beans.factory.annotation.Autowired;

import com.qzimp.fujiancuo.entity.Userinfo;

import com.qzimp.fujiancuo.service.UserinfoService;

import org.springframework.web.bind.annotation.RestController;

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiOperation;

import io.swagger.annotations.ApiParam;

import java.io.Serializable;

import java.util.List;

/**

 *  控制层。

 *

 * @since 2024-11-21

 */

@RestController

@Api("接口")

@RequestMapping("/userinfo")

public class UserinfoController {

    @Autowired

    private UserinfoService userinfoService;

    /**

     * 添加。

     *

     * @param userinfo

     * @return {@code true} 添加成功,{@code false} 添加失败

     */

    @PostMapping("save")

    @ApiOperation("保存")

    public boolean save(@RequestBody @ApiParam("") Userinfo userinfo) {

        return userinfoService.save(userinfo);

    }

    /**

     * 根据主键删除。

     *

     * @param id 主键

     * @return {@code true} 删除成功,{@code false} 删除失败

     */

    @DeleteMapping("remove/{id}")

    @ApiOperation("根据主键")

    public boolean remove(@PathVariable @ApiParam("主键") Serializable id) {

        return userinfoService.removeById(id);

    }

    /**

     * 根据主键更新。

     *

     * @param userinfo

     * @return {@code true} 更新成功,{@code false} 更新失败

     */

    @PutMapping("update")

    @ApiOperation("根据主键更新")

    public boolean update(@RequestBody @ApiParam("主键") Userinfo userinfo) {

        return userinfoService.updateById(userinfo);

    }

    /**

     * 查询所有。

     *

     * @return 所有数据

     */

    @GetMapping("list")

    @ApiOperation("查询所有")

    public List<Userinfo> list() {

        return userinfoService.list();

    }

    /**

     * 根据主键获取详细信息。

     * @param id 主键

     * @return 详情

     */

    @GetMapping("getInfo/{id}")

    @ApiOperation("根据主键获取")

    public Userinfo getInfo(@PathVariable @ApiParam("主键") Serializable id) {

        return userinfoService.getById(id);

    }

    /**

     * 分页查询。

     * @param page 分页对象

     * @return 分页对象

     */

    @GetMapping("page")

    @ApiOperation("分页查询")

    public Page<Userinfo> page(@ApiParam("分页信息") Page<Userinfo> page) {

        return userinfoService.page(page);

    }

    @GetMapping("getUserHaveLogs")

    public UserHaveLogsVo getUserHaveLogs(String loginName){

        return  userinfoService.queryUserHaveLogs(loginName);

    }

}

在userinfoService下创建方法

在userinfoserviceImpl实现该方法

userinfoserviceImpl的代码:

package com.qzimp.fujiancuo.service.impl;

import cn.hutool.core.date.DateUtil;

import cn.hutool.jwt.JWT;

import com.mybatisflex.core.query.QueryWrapper;

import com.mybatisflex.spring.service.impl.ServiceImpl;

import com.qzimp.fujiancuo.entity.Admin;

import com.qzimp.fujiancuo.entity.AdminLog;

import com.qzimp.fujiancuo.entity.Userinfo;

import com.qzimp.fujiancuo.entity.UserinfoLog;

import com.qzimp.fujiancuo.entity.vo.AdminHaveLogsVo;

import com.qzimp.fujiancuo.entity.vo.ResultCode;

import com.qzimp.fujiancuo.entity.vo.UserHaveLogsVo;

import com.qzimp.fujiancuo.exceptions.ApiException;

import com.qzimp.fujiancuo.mapper.UserinfoMapper;

import com.qzimp.fujiancuo.service.UserinfoLogService;

import com.qzimp.fujiancuo.service.UserinfoService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import java.util.List;

/**

 *  服务层实现。

 *

 * @since 2024-11-21

 */

@Service

public class UserinfoServiceImpl extends ServiceImpl<UserinfoMapper, Userinfo> implements UserinfoService {

    @Autowired

    private  UserinfoMapper userinfoMapper;

    @Autowired

    private UserinfoLogService userinfoLogService;

    @Override

    public Userinfo findUserinfoByLoginName(String loginName) {

        QueryWrapper queryWrapper=new QueryWrapper();

        queryWrapper.eq("login_name",loginName);

        return userinfoMapper.selectOneByQuery(queryWrapper);

    }

    @Override

    public Userinfo login(String loginName, String password) {

        QueryWrapper queryWrapper=new QueryWrapper();

        queryWrapper.eq("login_name",loginName);

        queryWrapper.eq("password",password);

        Userinfo userinfo= userinfoMapper.selectOneByQuery(queryWrapper);

        if(userinfo==null){

            throw  new ApiException(ResultCode.USER_LOGIN_NAME_NOT_EXIST);

        }

        //生成token

        final  String token= JWT.create()

                .setNotBefore(DateUtil.date())

                .setKey("abcdef".getBytes())

                .sign();

        userinfo.setToken(token);

        //更新token

        int ok= userinfoMapper.update(userinfo);

        if(ok<1){

            if(userinfo==null){

                throw  new ApiException(ResultCode.USER_TOKEN_UPDATE_FAILURE);

            }

        }

        return  userinfo;

    }

    @Override

    public UserHaveLogsVo queryUserHaveLogs(String loginName) {

        //获取管理员信息通过管理员账号

        Userinfo userinfo=this.queryUserinfoByName(loginName);

        if(userinfo==null){

            throw  new ApiException(ResultCode.CUSTOM_ERROR,"用户账户账户不存在");

        }

        // 通过管理员编号获取日志信息

        List<UserinfoLog> logList= userinfoLogService.queryUserinfoLogs(userinfo.getId());

        //把所有的信息放到包装类AdminHaveLogsVo

        UserHaveLogsVo userHaveLogsVo=new UserHaveLogsVo();

        userHaveLogsVo.setLoginName(loginName);

        userHaveLogsVo.setUserinfoLogList(logList);

        return userHaveLogsVo;

    }

    private Userinfo queryUserinfoByName(String loginName) {

        QueryWrapper queryWrapper=new QueryWrapper();

        queryWrapper.eq("login_name",loginName);

        return userinfoMapper.selectOneByQuery(queryWrapper);

    }

}

查看用户名是否存在

再到userinfologsserviceImpl实现查询每条日志打包成list

测试运行:

先在mysql添加数据

再到http://localhost:8081/doc.html测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值