当前位置: 首页 > news >正文

html设计素材网站淘宝不能发布网站开发了

html设计素材网站,淘宝不能发布网站开发了,天津网站建设兼职,东莞网站建设公司招聘信息完整的 FakeRegistrationController 代码#xff0c;这让我可以全面分析后端逻辑#xff0c;特别是为什么空的字段#xff08;如 compareDate#xff09;不返回给前端。我将详细分析代码的每个接口#xff0c;尤其是与 list 请求和字段返回相关的部分#xff0c;并解释原…完整的 FakeRegistrationController 代码这让我可以全面分析后端逻辑特别是为什么空的字段如 compareDate不返回给前端。我将详细分析代码的每个接口尤其是与 list 请求和字段返回相关的部分并解释原因。 代码结构总览 FakeRegistrationController 是一个 RESTful 控制器提供了三个接口 POST /fakeRegistration/registration/save保存或修改假货登记信息。POST /fakeRegistration/compare/save保存或修改比对结果。GET /fakeRegistration/list获取假货登记列表对应前端的 qlist 请求。 我们关心的是 list 接口因为它直接决定了前端表格接收到的数据内容特别是为何空的 compareDate 不返回。 详细分析 list 接口 接口定义 GetMapping(list) ApiOperation(假货登记列表) public BaseResult list(ApiIgnore SessionAttribute(Constants.ADMIN_ID) Integer adminId,BasePage page) {Integer vipAdminId copywritingApiService.getVipAdminId(adminId, 11);PageFakeRegistration fakeRegistrationPage fakeRegistrationService.findByAdminId(vipAdminId, page);ListFakeRegistration fakeRegistrations fakeRegistrationPage.getContent();ListFakeRegistrationListDTO fakeRegistrationListDTOS new ArrayList();for (FakeRegistration fakeRegistration: fakeRegistrations) {FakeRegistrationListDTO fakeRegistrationListDTO JSON.parseObject(JSON.toJSONString(fakeRegistration), FakeRegistrationListDTO.class);if (null ! fakeRegistration.getProductId()) {Product product productService.findById(fakeRegistration.getProductId()).orElseThrow(() - new RuntimeException(未找到商品信息));fakeRegistrationListDTO.setProductName(product.getName());}Admin creator adminService.findById(fakeRegistration.getCreatorId()).orElseThrow(() - new RuntimeException(未找到创建人信息));fakeRegistrationListDTO.setCreatorName(StringUtils.isEmpty(creator.getNickname()) ? creator.getUsername() : creator.getNickname());fakeRegistrationListDTO.setGenuineIdentificationPoints(fakeRegistrationApiService.findIdentification(fakeRegistration.getId(), 1));fakeRegistrationListDTO.setFakeIdentificationPoints(fakeRegistrationApiService.findIdentification(fakeRegistration.getId(), 0));fakeRegistrationListDTOS.add(fakeRegistrationListDTO);}return BaseResult.success(new PageImpl(fakeRegistrationListDTOS, PageRequest.of(fakeRegistrationPage.getNumber(), fakeRegistrationPage.getSize()), fakeRegistrationPage.getTotalElements())); }数据流分析 数据查询 fakeRegistrationService.findByAdminId(vipAdminId, page) 返回一个 PageFakeRegistration其中 FakeRegistration 是数据库实体类包含所有字段如 id, createdDate, compareDate, comparisonStatus 等。fakeRegistrations 是分页内容的 ListFakeRegistration。 数据转换 每个 FakeRegistration 被转换为 FakeRegistrationListDTOFakeRegistrationListDTO fakeRegistrationListDTO JSON.parseObject(JSON.toJSONString(fakeRegistration), FakeRegistrationListDTO.class);这里使用了 FastJSONcom.alibaba.fastjson.JSON进行序列化和反序列化 JSON.toJSONString(fakeRegistration) 将 FakeRegistration 转为 JSON 字符串。JSON.parseObject(..., FakeRegistrationListDTO.class) 将 JSON 字符串转为 FakeRegistrationListDTO 对象。 然后手动补充了 productName从 ProductService 获取。creatorName从 AdminService 获取。genuineIdentificationPoints 和 fakeIdentificationPoints从 FakeRegistrationApiService 获取。 返回结果 返回一个 PageImplFakeRegistrationListDTO最终被序列化为 JSON 响应。 为什么空的字段如 compareDate不返回 FastJSON 的默认行为 FastJSON 在序列化时默认忽略 null 值字段除非显式配置 SerializerFeature.WriteMapNullValue。如果 FakeRegistration 的 compareDate 是 nullJSON.toJSONString(fakeRegistration) 生成的 JSON 字符串不会包含 compareDate。示例FakeRegistration fr new FakeRegistration(); fr.setId(34); fr.setComparisonStatus(1); fr.setCompareDate(null); // 为空 String json JSON.toJSONString(fr); // 输出: {id:34,comparisonStatus:1}反序列化到 FakeRegistrationListDTO 时由于 JSON 中没有 compareDatefakeRegistrationListDTO 的 compareDate 字段不会被赋值最终返回的 JSON 也不会包含它。 业务逻辑 从其他接口看compareDate 只有在 compare/save 接口保存比对结果时才会设置fakeRegistrationOrigin.setCompareDate(new Date());在 registration/save 接口中新建记录时没有设置 compareDate它保持为 null。因此未完成比对的记录comparisonStatus 0 或 1在数据库中 compareDate 就是 NULL序列化后被忽略。 DTO 定义的影响 如果 FakeRegistrationListDTO 中定义了 compareDatepublic class FakeRegistrationListDTO {private Integer id;private Date compareDate; // 假设是这样// 其他字段 }当 JSON.parseObject 处理没有 compareDate 的 JSON 时fakeRegistrationListDTO.compareDate 会是 null但后续的序列化返回给前端时仍由 FastJSON 处理又会被忽略。 其他接口的补充分析 1. registration/save PostMapping(registration/save) public BaseResult save(RequestBody FakeRegistration fakeRegistration, ...) {if(null ! fakeRegistration.getId()) {FakeRegistration fakeRegistrationOrigin fakeRegistrationService.findById(fakeRegistration.getId()).orElseThrow(...);fakeRegistration SqlUtil.mergeObject(fakeRegistration, fakeRegistrationOrigin);if(null ! fakeRegistration.getCompareResult() fakeRegistration.getCompareResult() 1) {fakeRegistrationOrigin.setComparisonStatus(3);} else if(null ! fakeRegistration.getCompareResult() fakeRegistration.getCompareResult() 0) {fakeRegistrationOrigin.setComparisonStatus(2);}} else {fakeRegistration.setAdminId(vipAdminId);fakeRegistration.setCreatorId(adminId);}fakeRegistration fakeRegistrationService.save(fakeRegistration);... }关键点 新建记录时fakeRegistration.getId() null只设置了 adminId 和 creatorId没有初始化 compareDate它默认为 null。修改记录时如果提供了 compareResult会更新 comparisonStatus但不会设置 compareDate。因此compareDate 在这个接口中始终不会被赋值。 2. compare/save PostMapping(compare/save) public BaseResult compareSave(RequestBody FakeRegistrationSaveDTO fakeRegistration, ...) {FakeRegistration fakeRegistrationOrigin fakeRegistrationService.findById(fakeRegistration.getId()).orElseThrow(...);fakeRegistrationOrigin.setCompareResult(fakeRegistration.getCompareResult());fakeRegistrationOrigin.setCompareDate(new Date());fakeRegistrationService.save(fakeRegistrationOrigin);... }关键点 这里显式设置了 compareDate new Date()表示比对完成的时间。只有通过这个接口保存比对结果时compareDate 才会被赋值。这解释了前端数据中只有 comparisonStatus 2 或更高状态的记录有 compareDate。 综合结论为什么空的字段不返回 数据来源 compareDate 在数据库中默认为 NULL除非通过 compare/save 接口保存比对结果时才会被赋值。未完成比对的记录comparisonStatus 0 或 1没有 compareDate 值。 FastJSON 序列化 list 接口中JSON.toJSONString(fakeRegistration) 将 FakeRegistration 转为 JSON 时默认忽略 null 字段。如果 compareDate 是 null它不会出现在 JSON 字符串中。反序列化到 FakeRegistrationListDTO 后compareDate 仍未被赋值最终返回的 JSON 也不包含这个字段。 业务逻辑 设计上compareDate 只有在比对完成时才有意义未完成时保持 null 并被忽略是合理的。 最终返回 Spring Boot 的 RestController 使用 Jackson或其他配置将 PageImplFakeRegistrationListDTO 序列化为 JSON同样忽略 null 字段进一步确保空的 compareDate 不出现在响应中。 前端数据的验证 你的前端数据 id: 34, 33, 32comparisonStatus 0 或 1没有 compareDate因为未调用 compare/save。id: 31, 30, 28comparisonStatus 2有 compareDate因为通过 compare/save 设置了值。 改进建议 如果希望空的 compareDate 也返回例如 compareDate: null 修改 FastJSON 配置 FakeRegistrationListDTO fakeRegistrationListDTO JSON.parseObject(JSON.toJSONString(fakeRegistration, SerializerFeature.WriteMapNullValue),FakeRegistrationListDTO.class );添加 WriteMapNullValue确保 null 字段被包含。 调整 DTO 在 FakeRegistrationListDTO 中显式处理fakeRegistrationListDTO.setCompareDate(fakeRegistration.getCompareDate() ! null ? fakeRegistration.getCompareDate() : null);全局配置 在 Spring Boot 中配置 JacksonBean public ObjectMapper objectMapper() {ObjectMapper mapper new ObjectMapper();mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);return mapper; }总结 空的 compareDate 不返回给前端是因为 业务逻辑未完成比对时数据库中 compareDate 为 NULL。FastJSON 默认行为JSON.toJSONString 忽略 null 字段。设计选择后端选择不返回无意义的空字段。 这种行为是合理的但如果前端需要一致性可以通过上述方式调整后端返回。
http://www.zqtcl.cn/news/54565/

相关文章:

  • wordpress 注册邮件设置aso优化注意什么
  • 怎样做一个购物型的网站番禺区手机版网站建设
  • 商城网站制作需要多少费用东莞建网站的公
  • 兰州网站建设多少钱系统开发人员有哪几类
  • 购物网站 购物车界面如何做pc端ui设计
  • 盐城网站设计公司自动生成设计图
  • seo爱站网网页制作和网页制作
  • 陕西省建设厅官方网站百度收录有什么用
  • 自己做的博客网站站长之家app
  • 佛山新网站建设服务公司网站备案没公司名称
  • 深圳制作网站的公司简介wordpress外贸
  • 网站项目的工作流程运营网站开发工作招聘
  • 汤原建设局网站温州网站制作建设
  • 网站制作珠海公司国家商标注册查询官网入口
  • 咸阳做网站托管qq是腾讯还是阿里
  • 做app和做网站那个难门户网站含义
  • 家居网站建设费用企业建设网站的
  • HTML5网站建设案例诸城企业网站建设
  • 能做SEO优化的网站建设凡客诚品官方商城
  • 甘肃省城乡城乡建设厅网站首页以net结尾的网站
  • 电子商务网站建设 大纲wordpress 皮主题
  • 在线制作网站系统静态网站
  • 电商网站改版思路企业如何 建设好自己的网站
  • 建筑设计地图网站电子商务网站建设与管理 技能实训
  • 怎样为企业设计网站微信公众号和网站建设
  • 静态网站设计怎么做宏润建设集团股份有限公司网站
  • 服务器网站建设实训报告商丘专业做网站公司
  • 海外网站代理html5响应式网站建设平台
  • 公司做网站设计要注意网易企业邮箱收费版
  • 企业网站建设建设门户网站建设哪里有