当前位置:网站首页>黑马瑞吉外卖之员工账号的禁用和启用以及编辑修改
黑马瑞吉外卖之员工账号的禁用和启用以及编辑修改
2022-08-04 09:49:00 【兰舟千帆】
黑马瑞吉外卖之员工账号的禁用和启用以及编辑修改
前端页面分析
下面我们去分析员工账号的启用与禁用。
首先我们来看前端对这部分信息的展示,是根据这里给出的状态值展示的。

我们点进去这个方法
其实还是将具体的请求方法路径写到了一个js里面,这里发送了一个put请求。提交的参数就是id,和status,我们根据提交过来的参数在后来进行接收,并按照数据修改数据库中的字段值。
当我们处理好数据后,前端接收到返回的状态值1,然后会弹出提示说状态修改成功,然后下面会调用一个方法,一定是用于更新数据列表。
这个方法定义在这里,从这里我们可以看到,它这里还是会做一个分页查询。
下面我们分析员工信息的修改。
我们找到这个方法,点进去


可以看到,其实这个请求路径和我们的状态修改是一样的。

于是这样,我们可以写一个统一的方法,那么两者的请求路径和方法是一样的,于是我们可以遇见一个接收参数的形式。我们用实体类型employee来接收前端提交的参数,因为这些参数我们的实体类都有,这样我们就可以进行一个统一的接收。
不过还有一点就是数据信息的回显,也就是啊,我们修改员工信息的时候,表单的原来数据信息可以进行回显。

所以除了基本的淑女更新外,在修改这里我们需要做一个数据回显的后端逻辑功能。
这是整体的一个前端逻辑。下面我们开始对后面的功能逻辑进行一个编写。
后端状态修改与编辑功能开发。
我们前面分析了请求路径。所以这两个功能我们直接在后端统一开启就行了。这个是我们进行更新状态的操作。
// 根据id修改员工信息
@PutMapping
public R_<String> update(@RequestBody Employee employee)
{
employService.updateById(employee);
return R_.success("员工信息修改成功");
}
Mybatis-plus的updateById()方法来更新一条记录时:只会更新不为null的字段,为null的字段会不变。
但是这样会出现一个问题,前端js并不能正确处理id,因为我们的id根据生成策略它是19位的,但是在分页查询的时候后端给前端传给19位long类型的id只能被js处理到16为,这样的话,在我们这里前端获取id提交给后端的时候也就和本来的id对应不上了,于是我们必须想出一种解决办法。
那么我们可以在服务端给前端传送id的时候统一转换为String类型。我们需要一个消息转换器。这个是课程给出的转换器类
package com.jgdabc.common;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
/** * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象 * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象] * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON] */
/** * 将前端发送的数据过于长超过16位时,long的精度为16位,导致精度不准确,例如id为雪花算法的自动生成, * 导致前端发出的请求后端的接收的数据精度受到影响, * 转换为json格式,就解决了这个问题,包括日期型的相关转化。 */
public class JacksonObjectMapper extends ObjectMapper {
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
public JacksonObjectMapper() {
super();
//收到未知属性时不报异常
this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
//反序列化时,属性不存在的兼容处理
this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
SimpleModule simpleModule = new SimpleModule()
.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
.addSerializer(BigInteger.class, ToStringSerializer.instance)
.addSerializer(Long.class, ToStringSerializer.instance)
.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));
//注册功能模块 例如,可以添加自定义序列化器和反序列化器
this.registerModule(simpleModule);
}
}


编辑回显的话就是这么一个方法
@GetMapping("/{id}")
public R_<Employee> getById(@PathVariable long id)
{
Employee emp = employService.getById(id);
if(emp!=null)
{
return R_.success(emp);
}
return R_.error("没有查询到对应数据");
}
边栏推荐
- 请问同一个oracle cdc表,如果flink job重新提交,是会全量读取一遍源数据还是增量呢?
- 学习在php中将特大数字转成带有千/万/亿为单位的字符串
- EastWave应用:自动计算光子晶体透反率
- v-model原理,在“radio”、“checkbox”、“select”、修饰符
- Anton Paar Anton Paar Density Meter Hydrometer Repair DMA35 Performance Parameters
- 2022-08-03 第六小组 瞒春 学习笔记
- Detailed Explanation of Addresses Delivered by DHCP on Routing/Layer 3 Switches [Huawei eNSP]
- telnet远程登录aaa模式详解【华为eNSP】
- ps抠图怎么抠出来,自学ps软件photoshop2022,ps怎么抠出想要的部分-笔记记录
- 视频加密怎么播放_win播放器加密视频
猜你喜欢

Redis 内存满了怎么办?这样置才正确!

LeetCode中等题之设计循环队列

冰蝎工具开发实现动态二进制加密WebShell

【COS 加码福利】COS 用户实践有奖征文,等你来投稿!

MindSpore:mirrorpad算子速度过慢的问题
![Could you please talk about how the website is accessed?[Interview questions in the web field]](/img/06/5ecc617edc4131c31f71d5e019a64c.png)
Could you please talk about how the website is accessed?[Interview questions in the web field]

PD 源码分析- Checker: region 健康卫士

JSP基本语法
![Detailed explanation of MSTP protocol configuration on Layer 3 switches [Huawei eNSP experiment]](/img/97/6c3662ef36b02bc42eec95abaa6bc5.png)
Detailed explanation of MSTP protocol configuration on Layer 3 switches [Huawei eNSP experiment]

HTB-Sense
随机推荐
Win7C盘不能扩大怎么办?Win7C盘扩展卷不能点怎么解决
sqlilabs less-40
Get the number of cpu cores
关于技术学习的6个观点
LeetCode 6. Z 字形变换 找规律
bash shell数组详解
How to restore the Youxuan database with only data files
Techwiz OLED:OLED器件的发光效率
视频加密怎么播放_win播放器加密视频
Win11系统重装用什么好 一键重装Win11教程
请你谈谈网站是如何进行访问的?【web领域面试题】
IDEA 自动导入的配置(Auto import)
架构设计杂谈
IDEA启动热部署
数据万象内容审核 — 共建安全互联网,专项开展“清朗”直播整治行动
leetcode二叉树系列(一)
TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2
【c】操作符详解(二)
gom登录器配置教程_谷歌浏览器如何使用谷歌搜索引擎
Detailed explanation of telnet remote login aaa mode [Huawei eNSP]