拉勾教育后台管理系统(SSM)(广告和用户管理模块开发)【学习笔记】

广告模块

1、广告模块功能分析

     在任务二中,首先先来完成拉勾教育后台管理系统的 广告管理模块, 广告模块包含了广告位列表查询、添加&修改广告位、回显广告位名称、广告分页查询、图片上传接口、新建&修改广告、显广告信息、广告状态上下线等接口的编写

  • 实现以下功能:
    • 广告位列表查询
    • 添加&修改广告位
    • 回显广告位名称
    • 广告分页查询
    • 图片上传接口
    • 新建&修改广告接口
    • 回显广告信息
    • 广告状态上下线

2、广告管理模块表设计

在这里插入图片描述
在这里插入图片描述

3、广告管理模块接口实现

3.1、广告位列表查询

接口地址: http://localhost:8080/ssm-web/PromotionSpace/findAllPromotionSpace

请求方式: GET

接口描述: 获取广告位列表数据

请求示例:

http://localhost:8080/ssm-web/PromotionSpace/findAllPromotionSpace

响应参数:

参数名称参数说明类型schema
successboolean
stateinteger(int32)integer(int32)
messagestring
contentobject

响应示例:

{
	"success": true,
	"state": 200,
	"message": "响应成功",
	"content": [{
		"id": 1,
		"name": "首页顶部推荐位",
		"spaceKey": "666",
		"createTime": 1594703011000,
		"updateTime": 1594962801000,
		"isDel": 0
	},
	{
		"id": 2,
		"name": "首页侧边广告位",
		"spaceKey": "888",
		"createTime": 1594703011000,
		"updateTime": 1594957982000,
		"isDel": 0
	}......
}
3.1.1、实体类
@AllArgsConstructor
@NoArgsConstructor
@Data
public class PromotionSpace {
    private Integer id;
    private String name;
    private String spaceKey;
    private Date createTime;
    private Date updateTime;
    private Integer isDel;
}
3.1.2、dao层
public interface PromotionSpaceMapper {
    public List<PromotionSpace> findAllPromotionSpace();
}
<select id="findAllPromotionSpace" resultType="PromotionSpace">
    select * from promotion_space
</select>
3.1.3、service层
@Service
@Transactional
public class PromotionSpaceServiceImpl implements PromotionSpaceService {
    @Autowired
    private PromotionSpaceMapper promotionSpaceMapper;
    @Override
    public List<PromotionSpace> findAllPromotionSpace() {
        return promotionSpaceMapper.findAllPromotionSpace();
    }
}
3.1.4、web层
@RestController
@RequestMapping("/PromotionSpace")
public class PromotionSpaceController {
    @Autowired
    private PromotionSpaceService promotionSpaceService;

    /*查询所有广告位成功*/
    @RequestMapping("/findAllPromotionSpace")
    public ResponseResult findAllPromotionSpace(){
        List<PromotionSpace> list = promotionSpaceService.findAllPromotionSpace();
        ResponseResult res = new ResponseResult(true, 200, "查询所有广告位成功", list);
        return res;
    }
}
3.1.5、postman测试

在这里插入图片描述

3.2、添加&修改广告位

接口地址: http://localhost:8080/ssm-web/PromotionSpace/saveOrUpdatePromotionSpace

请求方式: POST

接口描述: 添加&修改广告位

请求参数:

参数名称参数说明in是否必须数据类型备注
id广告位ID修改必须携带ID
name广告位名称
// 新增
{
	"name": "页面头部广告位"
}
// 更新
{
    "id":173,
	"name": "页面头部广告位"
}

响应参数:

参数名称参数说明类型schema
successboolean
stateinteger(int32)integer(int32)
messagestring
contentobject

响应示例:

{
	"success": true,
	"state": 200,
	"message": "响应成功",
	"content": null
}
3.2.1、dao层
/*添加广告位*/
public void savePromotionSpace(PromotionSpace promotionSpace);

/*修改广告位*/
public void updatePromotionSpace(PromotionSpace promotionSpace);
<insert id="savePromotionSpace" parameterType="PromotionSpace">
    insert into promotion_space values(null,#{name},#{spaceKey},#{createTime},#{updateTime},#{isDel})
</insert>

<update id="updatePromotionSpace" parameterType="PromotionSpace">
    update promotion_space set name=#{name}, updateTime=#{updateTime} where id=#{id}
</update>
3.2.2、service层
@Override
public void savePromotionSpace(PromotionSpace promotionSpace) {
    // 补全信息
    UUID uuid = UUID.randomUUID();
    promotionSpace.setSpaceKey(uuid.toString());
    Date date = new Date();
    promotionSpace.setUpdateTime(date);
    promotionSpace.setCreateTime(date);

    promotionSpaceMapper.savePromotionSpace(promotionSpace);
}

@Override
public void updatePromotionSpace(PromotionSpace promotionSpace) {
    // 补全信息
    Date date = new Date();
    promotionSpace.setUpdateTime(date);
    promotionSpaceMapper.updatePromotionSpace(promotionSpace);
}
3.2.3、web层
@RequestMapping("/saveOrUpdatePromotionSpace")
    public ResponseResult saveOrUpdatePromotionSpace(@RequestBody PromotionSpace promotionSpace){
        if(promotionSpace.getId() == null){
            promotionSpaceService.savePromotionSpace(promotionSpace);
            return new ResponseResult(true, 200, "新增广告位成功", null);
        }else{
            promotionSpaceService.updatePromotionSpace(promotionSpace);
            return new ResponseResult(true, 200, "修改广告位成功", null);
        }
    }
3.2.4、postman测试

在这里插入图片描述
在这里插入图片描述

3.3、回显广告位名称

接口地址: http://localhost:8080/ssm-web/PromotionSpace/findPromotionSpaceById

请求方式: GET

接口描述: 修改操作,回显广告位名称

请求参数:

参数名称参数说明in是否必须数据类型备注
id广告位ID修改必须携带ID

响应结果:

{
	"success": true,
	"state": 200,
	"message": "响应成功",
	"content": {
		"id": 1,
		"name": "首页顶部推荐位",
		"spaceKey": null,
		"createTime": null,
		"updateTime": null,
		"isDel": null
	}
}
3.3.1、dao层
<select id="findPromotionSpaceById" resultType="PromotionSpace">
    select id, name from promotion_space where id = #{id}
</select>
3.3.2、service层
/*回显广告位名称*/
@Override
public PromotionSpace findPromotionSpaceById(Integer id) {
    return promotionSpaceMapper.findPromotionSpaceById(id);
}
3.3.3、web层
@RequestMapping("/findPromotionSpaceById")
public ResponseResult findPromotionSpaceById(@RequestParam Integer id){
    PromotionSpace promotionSpace = promotionSpaceService.findPromotionSpaceById(id);
    ResponseResult res = new ResponseResult(true, 200, "回显广告信息成功", promotionSpace);
    return res;
}
3.3.4、postman测试

在这里插入图片描述

3.4、广告分页查询

接口地址: <http://localhost:8080/ssm-web/PromotionAd/findAllPromotionAdByPage

请求方式: GET

接口描述: 分页获取广告列表数据

请求参数:

参数名称参数说明in是否必须数据类型schema
currentPage当前页falseinteger(int32)
pageSize每页显示条数falseinteger(int32)

请求示例:

http://localhost:8080/ssm-web/PromotionAd/findAllPromotionAdByPage?currentPage=1&pageSize=5

**响应结果示例: **

{
	"success": true,
	"state": 200,
	"message": "响应成功",
	"content": {
		"pageNum": 1,
		"pageSize": 5,
		"size": 5,
		"orderBy": null,
		"startRow": 1,
		"endRow": 5,
		"total": 17,
		"pages": 4,
		"list": [{
			"id": 1074,
			"name": "java高级训练营",
			"spaceId": 1,
			"keyword": null,
			"htmlContent": null,
			"text": "Java高级训练营 Java高级训练营 Java高级训练营",
			"link": "https://localhost:8080/upload",
			"startTime": 1597634487000,
			"endTime": 1597741425000,
			"status": 0,
			"createTime": 1594708114000,
			"updateTime": 1597636191000,
			"priority": 0,
			"img": "http://localhost:8080/upload/1597634499619.jpg"
		}......
}
3.4.1、实体类
@AllArgsConstructor
@NoArgsConstructor
@Data
public class PromotionAd {
    // 标识
    private Integer id;
    // 广告名
    private String name;
    // 广告位id
    private Integer spaceId;
    // 精确搜索关键词
    private String keyword;
    // 静态广告的内容
    private String htmlContent;
    // 文字一
    private String text;
    // 链接一
    private String link;
    // 开始时间
    private Date startTime;
    // 结束时间
    private Date endTime;
    private Integer status;
    private Date createTime;
    private Date updateTime;
    // 优先级
    private Integer priority;
    private String img;

    // 声明一方关系PromotionSpace
    private PromotionSpace promotionSpace;
}
@AllArgsConstructor
@NoArgsConstructor
@Data
public class PromotionAdVo {
    private Integer currentPage = 1;
    private Integer pageSize = 10;
}
3.4.2、dao层

applicationContext-dao.xml

<!--sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--配置数据源-->
        <property name="dataSource" ref="dataSource"/>
        <!--domain别名-->
        <property name="typeAliasesPackage" value="com.lzy.domain"/>

        <!--开启自动驼峰命名规则-->
        <property name="configuration">
            <bean class="org.apache.ibatis.session.Configuration">
                <property name="mapUnderscoreToCamelCase" value="true"/>
                <property name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl"/>
            </bean>
        </property>

        <!--配置分页插件-->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageHelper">
                    <property name="properties">
                        <value>helperDialect=mysql</value>
                    </property>
                </bean>
            </array>
        </property>
    </bean>
<!--分页查询广告-->
<select id="findAllPromotionAdByPage" resultMap="id_space">
    select * from promotion_ad
</select>
<resultMap id="id_space" type="PromotionAd">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="spaceId" column="spaceId"/>
    <result property="keyword" column="keyword"/>
    <result property="htmlContent" column="htmlContent"/>
    <result property="text" column="text"/>
    <result property="link" column="link"/>
    <result property="startTime" column="startTime"/>
    <result property="endTime" column="endTime"/>
    <result property="createTime" column="createTime"/>
    <result property="updateTime" column="updateTime"/>
    <result property="status" column="status"/>
    <result property="priority" column="priority"/>
    <result property="img" column="img"/>

    <association property="promotionSpace" select="com.lzy.dao.PromotionSpaceMapper.findPromotionSpaceById" column="spaceId">

    </association>
</resultMap>
3.4.3、service层
@Service
@Transactional
public class PromotionAdServiceImpl implements PromotionAdService {
    @Autowired
    private PromotionAdMapper promotionAdMapper;

    /*获取所有广告列表*/
    @Override
    public PageInfo findAllAdByPage(PromotionAdVo promotionAdVo) {
        /*设置分页查询*/
        PageHelper.startPage(promotionAdVo.getCurrentPage(), promotionAdVo.getPageSize());
        List<PromotionAd> allPromotionAdByPage = promotionAdMapper.findAllPromotionAdByPage();
        PageInfo<PromotionAd> promotionAdPageInfo = new PageInfo<>(allPromotionAdByPage);
        return promotionAdPageInfo;
    }
}
3.4.4、web层
@RestController
@RequestMapping("/PromotionAd")
public class PromotionAdController {
    @Autowired
    private PromotionAdService promotionAdService;

    /*分页查询广告位*/
    @RequestMapping("/findAllPromotionAdByPage")
    public ResponseResult findAllPromotionAdByPage(PromotionAdVo promotionAdVo){
        PageInfo allAdByPage = promotionAdService.findAllAdByPage(promotionAdVo);
        return new ResponseResult(true, 200, "分页查询成功", allAdByPage);
    }
}
3.4.5、postman层

在这里插入图片描述

3.5、图片上传接口

接口地址: http://localhost:8080/ssm-web/PromotionAd/PromotionAdUpload

请求方式: POST

接口描述: 广告模块图片上传

请求参数:

file

响应参数:

参数名称参数说明类型schema
successboolean
stateinteger(int32)integer(int32)
messagestring
contentobject

响应结果示例:

{
	"success": true,
	"state": 200,
	"message": "响应成功",
	"content": {
		"fileName": "1597730889723.jpg",
		"filePath": "http://localhost:8080/upload/1597730889723.jpg"
	}
}
3.5.1、web层
/*图片上传*/
    @RequestMapping("/PromotionAdUpload")
    public ResponseResult PromotionAdUpload (MultipartFile file, HttpServletRequest request){
        try {
            /*判断文件是否为空*/
            if(file.isEmpty()){
                throw new RuntimeException();
            }
            /*获得存储位置*/
            String realPath = request.getServletContext().getRealPath("/");
            String webappsPath = realPath.substring(0, realPath.indexOf("ssm"));

            /*获取文件名*/
            String fileName = file.getOriginalFilename();
            String newFileName = System.currentTimeMillis() + fileName.substring(fileName.lastIndexOf("."));

            /*存储位置*/
            String uploadPath = webappsPath + "upload\\";
            File filePath = new File(uploadPath, newFileName);

            /*判断目录是否存在*/
            if(!filePath.getParentFile().exists()){
                filePath.getParentFile().mkdirs();
                System.out.println("创建目录" + filePath);
            }

            /*存储文件*/
            file.transferTo(filePath);

            /*将文件名和路径返回*/
            Map<Object, Object> map = new HashMap<>();
            map.put("fileName", newFileName);
            map.put("filePath", "http://localhost:8080/upload/" + newFileName);

            ResponseResult res = new ResponseResult(true, 200, "文件上传成功", map);
            return res;
        } catch (IOException e) {
           e.printStackTrace();
           return null;
        }
    }

写了第二遍了,加深点印象

3.5.2、postman测试

在这里插入图片描述

3.6、新建&修改广告

接口地址: http://localhost:8080/ssm-web/PromotionAd/saveOrUpdatePromotionAd

请求方式: POST

接口描述: 新建&修改广告接口

请求参数:

字段说明类型是否必需备注
id广告idint添加操作不用携带, 修改操作必须携带ID
name广告名称String
spaceId广告位置String
startTime开始时间Date
endTime到期时间Date
status上线/下线int
img广告图片String
link广告链接String
text广告备注String

请求示例:

//新增
{
	"name": "GO高训练营",
	"img": "http://localhost:8080/upload/1597731135966.jpg",
	"link": "www.xxxx.com",
	"sort": 0,
	"spaceId": 1,
	"startTime": "2020-08-18T06:12:08.000Z",
	"endTime": "2020-08-19T16:00:00.000Z",
	"status": 1,
	"text": "学go"
}
//修改
{
	"id": 1094,
	"name": "GO高训练营",
	"img": "http://localhost:8080/upload/1597731135966.jpg",
	"link": "www.xxxx.com",
	"sort": 0,
	"spaceId": 1,
	"startTime": "2020-08-18T06:12:08.000Z",
	"endTime": "2020-08-19T16:00:00.000Z",
	"status": 1,
	"text": "学go"
}
3.6.1、dao层
<!--保存广告信息-->
<insert id="savePromotionAd" parameterType="promotionAd">
    INSERT INTO promotion_ad VALUES(NULL,#{name},#{spaceId},#{keyword},#{htmlContent},#{text},#{link},#{startTime},#{endTime},#{createTime},#{updateTime},#{status},#{priority},#{img});
</insert>

<!--修改广告信息-->
<update id="updatePromotionAd" parameterType="promotionAd">
    update promotion_ad
    <trim prefix="set" suffixOverrides=",">
        <if test="name != null and name != ''">
            name = #{name},
        </if>
        <if test="spaceId != null and spaceId != ''">
            spaceId = #{spaceId},
        </if>
        <if test="link != null">
            link=#{link},
        </if>
        <if test="status != null and status != '' or status == 0">
            status=#{status},
        </if>
        <if test="img != null">
            img=#{img},
        </if>
        <if test="text != null">
            text=#{text},
        </if>
        <if test="startTime != null">
            startTime=#{startTime},
        </if>
        <if test="endTime != null">
            endTime=#{endTime},
        </if>
        <if test="updateTime != null">
            updateTime=#{updateTime},
        </if>
    </trim>
    <where>
        <if test="id != null and id != ''">
            id = #{id}
        </if>
    </where>
</update>
3.6.2、service层
@Override
public void savePromotionAd(PromotionAd promotionAd) {
    // 补全信息
    Date date = new Date();
    promotionAd.setCreateTime(date);
    promotionAd.setUpdateTime(date);

    promotionAdMapper.savePromotionAd(promotionAd);
}

@Override
public void updatePromotionAd(PromotionAd promotionAd) {
    // 补全信息
    Date date = new Date();
    promotionAd.setUpdateTime(date);

    promotionAdMapper.updatePromotionAd(promotionAd);
}
3.6.3、web层
 @RequestMapping("/saveOrUpdatePromotionAd")
    public ResponseResult saveOrUpdatePromotionAd(@RequestBody PromotionAd promotionAd){
        if(promotionAd.getId() == null){
            promotionAdService.savePromotionAd(promotionAd);
            return new ResponseResult(true, 200, "保存广告信息成功", null);
        }else{
            promotionAdService.updatePromotionAd(promotionAd);
            return new ResponseResult(true, 200, "修改广告信息成功", null);
        }
    }
3.6.4、postman测试

在这里插入图片描述

在这里插入图片描述

3.7、回显广告信息

接口地址: http://localhost:8080/ssm-web/PromotionAd/findPromotionAdById

请求方式: GET

接口描述: 接收广告ID,返回广告详细信息

请求参数:

参数名称参数说明in是否必须数据类型schema
id广告idtrueint

请求示例

http://10.1.194.181:8080/ssm-web/PromotionAd/findPromotionAdById?id=1091

响应结果示例

{
	"success": true,
	"state": 200,
	"message": "响应成功",
	"content": {
		"id": 1091,
		"name": "Python高级训练营",
		"spaceId": 1,
		"keyword": null,
		"htmlContent": null,
		"text": "大家一起学Python",
		"link": "www.xxxx.com",
		"startTime": 1597731128000,
		"endTime": 1597852800000,
		"status": 1,
		"createTime": null,
		"updateTime": null,
		"priority": null,
		"img": "http://localhost:8080/upload/1597731135966.jpg"
	}
}
3.7.1、dao层
<select id="findPromotionAdById" resultType="promotionAd">
    SELECT
        id,
        NAME,
        spaceId,
        startTime,
        endTime,
        STATUS,
        img,
        link,
        TEXT
    FROM promotion_ad WHERE id = #{id}
</select>

3.7.2、service层

/*回显广告信息*/
@Override
public PromotionAd findPromotionAdById(Integer id) {
    return promotionAdMapper.findPromotionAdById(id);
}
3.7.3、web层
/*回显广告信息*/
@RequestMapping("/findPromotionAdById")
public ResponseResult findPromotionAdById(@RequestParam Integer id){
    PromotionAd promotionAdById = promotionAdService.findPromotionAdById(id);
    return new ResponseResult(true, 200, "回显广告信息成功", promotionAdById);
}
3.7.4、postman测试

在这里插入图片描述

3.8、广告状态上下线

接口地址: http://localhost:8080/ssm-web/PromotionAd/updatePromotionAdStatus

请求方式: GET

接口描述: 修改广告上下线状态

请求参数:

参数名称参数说明in是否必须数据类型schema
id广告idtrueint
status课程状态trueint

请求参数示例

http://localhost:8080/ssm-web/PromotionAd/updatePromotionAdStatus?id=1074&status=1

响应示例:

{
	"success": true,
	"state": 200,
	"message": "响应成功",
	"content": {
		"status": 1
	}
}
3.8.1、dao层
<update id="updatePromotionAdStatus" parameterType="promotionAd">
    update promotion_ad set status = #{status}, updateTime = #{updateTime} where id = #{id}
</update>
3.8.2、service层
/*广告状态上下线*/
@Override
public void updatePromotionAdStatus(Integer id, Integer status) {
    // 补全信息
    PromotionAd promotionAd = new PromotionAd();
    promotionAd.setId(id);
    promotionAd.setStatus(status);
    promotionAd.setUpdateTime(new Date());
    promotionAdMapper.updatePromotionAdStatus(promotionAd);
}
3.8.3、web层
 /*广告上下线状态*/
@RequestMapping("/updatePromotionAdStatus")
public ResponseResult updatePromotionAdStatus(@RequestParam Integer id, @RequestParam Integer status){
    promotionAdService.updatePromotionAdStatus(id, status);
    Map<String, Integer> map = new HashMap<>();
    return new ResponseResult(true, 200, "修改广告上下线", map);
}
3.8.4、postman测试

在这里插入图片描述

用户模块

1、用户模块功能分析

      在任务二中,再来完成拉勾教育后台管理系统的用户管理模块, 广告管理模块包含了用户分页&条件查询、用户状态设置,(登陆、权限控制)等接口的编写

  • 实现以下功能:
    • 登陆(权限模块)
    • 权限控制(权限模块)
    • 用户分页&条件查询
    • 用户状态设置
    • 分配角色(权限模块)
      在这里插入图片描述

2、用户管理模块表设计

在这里插入图片描述

3、用户管理模块接口实现

3.1、用户分页&条件查询

接口地址: http://localhost:8080/ssm-web/user/findAllUserByPage

请求方式: POST

接口描述: 分页获取用户数据&条件查询用户数据

请求参数:

参数名称参数说明in是否必须数据类型备注
currentPage当前页falseinteger(int32)
pageSize每页显示条数falseinteger(int32)
username用户名falseString输入手机号即可
startCreateTime注册起始时间falseDate
endCreateTime注册结束时间falseDate

请求参数示例:

{
	"currentPage": "1",
	"pageSize": "10",
	"endCreateTime": "2020-07-13",
	"startCreateTime": "2020-07-09",
	"username": "15321919577"
}
3.1.1、dao层
<select id="findAllUserByPage" parameterType="userVo" resultType="user">
    SELECT
        id,
        NAME,
        portrait,
        phone,
        PASSWORD,
        STATUS,
        create_time
        FROM USER
    <where>
        <if test="true">
            and is_del != 1
        </if>
        <if test="username != null">
            and name = #{username}
        </if>
        <if test="startCreateTime != null and endCreateTime != null">
            and create_time BETWEEN #{startCreateTime} AND #{endCreateTime}
        </if>
    </where>
</select>
3.1.2、service层
@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public PageInfo findAllUserByPage(UserVo userVo) {
        PageHelper.startPage(userVo.getCurrentPage(), userVo.getPageSize());
        List<User> allUserByPage = userMapper.findAllUserByPage(userVo);
        PageInfo<User> pageInfo = new PageInfo<>(allUserByPage);
        System.out.println("总条数:"+pageInfo.getTotal());
        System.out.println("总页数:"+pageInfo.getPages());
        System.out.println("当前页:"+pageInfo.getPageNum());
        System.out.println("每页显示长度:"+pageInfo.getPageSize());
        System.out.println("是否第一页:"+pageInfo.isIsFirstPage());
        System.out.println("是否最后一页:"+pageInfo.isIsLastPage());
        return pageInfo;
    }
}
3.1.3、web层
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/findAllUserByPage")
    public ResponseResult findAllUserByPage(@RequestBody UserVo userVo){
        PageInfo allUserByPage = userService.findAllUserByPage(userVo);
        ResponseResult res = new ResponseResult(true, 200, "查询所有用户", allUserByPage);
        List list = allUserByPage.getList();
        System.out.println(list);
        return res;
    }
}
3.1.4、postman测试

在这里插入图片描述

3.2、用户状态设置

接口地址: http://localhost:8080/ssm-web/user/updateUserStatus

请求方式: GET

接口描述: 修改用户状态

请求参数:

参数名称参数说明in是否必须数据类型备注
id用户idinteger(int32)
status用户状态String用户状态:ENABLE能登录,DISABLE不能登录

请求参数示例:

http://10.1.194.181:8080/ssm-web/user/updateUserStatus?id=100030011&status=ENABLE

响应参数示例:

{
	"success": true,
	"state": 200,
	"message": "响应成功",
	"content": "DISABLE"
}
3.2.1、dao层
<update id="updateUserStatus">
    UPDATE USER SET STATUS = #{status} where id = #{id};
</update>
3.2.2、service层
@Override
public void updateUserStatus(Integer id, String status) {
    userMapper.updateUserStatus(id, status);
}
3.2.3、web层
 /*修改用户状态*/
@RequestMapping("/updateUserStatus")
public ResponseResult updateUserStatus(@RequestParam Integer id, @RequestParam String status){
    if("ENABLE".equalsIgnoreCase(status)){
        status = "DISABLE";
    }else{
        status = "ENABLE";
    }
    userService.updateUserStatus(id, status);
    return new ResponseResult(true, 200, "修改用户状态成功", status);
}
3.2.4、postman测试

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着Java技术的广泛应用,越来越多的计算机相关专业学生选择Java作为毕业设计的编程语言。为了帮助大家更好地完成毕业设计,我们特地整理了一系列Java毕业设计项目参考资源,包括源代码、MD文档、笔记等等,希望能对您的学习与研究提供有力支持。 项目源代码:涵盖了多个Java毕业设计项目的完整代码,包括登录注册、用户管理、数据增删改查等功能模块的实现。这些代码均经过严格测试,可直接运行,方便您快速了解项目结构和实现细节。 MD文档:详细介绍了每个项目的需求分析、系统设计、系统实现和测试等环节,让您能够全面了解项目的开发流程和关键技术。此外,还附带了详细的API文档,方便您查阅各个功能模块的接口和参数说明。 笔记资料:整理了Java毕业设计中常见的问题和解决方案,包括数据库设计、界面美化、性能优化等方面的技巧。这些笔记资料均由经验丰富的程序员撰写,可为您提供宝贵的经验分享和指导。 视频教程:为了帮助您更好地学习和理解Java毕业设计的实现过程,我们还提供了多个视频教程,由专业讲师详细讲解各个项目的开发过程和技术要点。通过观看这些视频教程,您可以更加深入地掌握Java编程和项目开发的技能。 总之,本资源包内容丰富、实用性强,是您完成Java毕业设计的必备宝典。无论您是即将毕业的本科生还是研究生,都值得拥有这份宝贵的参考资料。在此,我们诚挚地邀请您加入 平台,与众多技术同行一起交流学习,共同进步!随着Java技术的广泛应用,越来越多的计算机相关专业学生选择Java作为毕业设计的编程语言。为了帮助大家更好地完成毕业设计,我们特地整理了一系列Java毕业设计项目参考资源,包括源代码、MD文档、笔记等等,希望能对您的学习与研究提供有力支持。 项目源代码:涵盖了多个Java毕业设计项目的完整代码,包括登录注册、用户管理、数据增删改查等功能模块的实现。这些代码均经过严格测试,可直接运行,方便您快速了解项目结构和实现细节。 MD文档:详细介绍了每个项目的需求分析、系统设计、系统实现和测试等环节,让您能够全面了解项目的开发流程和关键技术。此外,还附带了详细的API文档,方便您查阅各个功能模块的接口和参数说明。 笔记资料:整理了Java毕业设计中常见的问题和解决方案,包括数据库设计、界面美化、性能优化等方面的技巧。这些笔记资料均由经验丰富的程序员撰写,可为您提供宝贵的经验分享和指导。 视频教程:为了帮助您更好地学习和理解Java毕业设计的实现过程,我们还提供了多个视频教程,由专业讲师详细讲解各个项目的开发过程和技术要点。通过观看这些视频教程,您可以更加深入地掌握Java编程和项目开发的技能。 总之,本资源包内容丰富、实用性强,是您完成Java毕业设计的必备宝典。无论您是即将毕业的本科生还是研究生,都值得拥有这份宝贵的参考资料。在此,我们诚挚地邀请您加入 平台,与众多技术同行一起交流学习,共同进步!随着Java技术的广泛应用,越来越多的计算机相关专业学生选择Java作为毕业设计的编程语言。为了帮助大家更好地完成毕业设计,我们特地整理了一系列Java毕业设计项目参考资源,包括源代码、MD文档、笔记等等,希望能对您的学习与研究提供有力支持。 项目源代码:涵盖了多个Java毕业设计项目的完整代码,包括登录注册、用户管理、数据增删改查等功能模块的实现。这些代码均经过严格测试,可直接运行,方便您快速了解项目结构和实现细节。 MD文档:详细介绍了每个项目的需求分析、系统设计、系统实现和测试等环节,让您能够全面了解项目的开发流程和关键技术。此外,还附带了详细的API文档,方便您查阅各个功能模块的接口和参数说明。 笔记资料:整理了Java毕业设计中常见的问题和解决方案,包括数据库设计、界面美化、性能优化等方面的技巧。这些笔记资料均由经验丰富的程序员撰写,可为您提供宝贵的经验分享和指导。 视频教程:为了帮助您更好地学习和理解Java毕业设计的实现过程,我们还提供了多个视频教程,由专业讲师详细讲解各个项目的开发过程和技术要点。通过观看这些视频教程,您可以更加深入地掌握Java编程和项目开发的技能。 总之,本资源包内容丰富、实用性强,是您完成Java毕业设计的必备宝典。无论您是即将毕业的本科生还是研究生,都值得拥有这份宝贵的参考资料。在此,我们诚挚地邀请您加入 平台,与众多技术同行一起交流学习,共同进步!随着Java技术的广泛应用,越来越多的计算机相关专业学生选择Java作为毕业设计的编程语言。为了帮助大家更好地完成毕业设计,我们特地整理了一系列Java毕业设计项目参考资源,包括源代码、MD文档、笔记等等,希望能对您的学习与研究提供有力支持。 项目源代码:涵盖了多个Java毕业设计项目的完整代码,包括登录注册、用户管理、数据增删改查等功能模块

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值