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

深圳网站建设设计首选公司百度的营销中心上班怎么样

深圳网站建设设计首选公司,百度的营销中心上班怎么样,深圳网站建设fantodo,seo竞争对手网站分析JavaWeb_LeadNews_Day3-图片管理, 文章管理 图片管理图片上传实现思路获取用户信息将图片上传至minio 图片列表 文章管理频道列表查询文章列表查询文章发布实现思路具体代码 来源 图片管理 图片上传 实现思路 在GateWay解析前端请求, 获取用户信息, 存储在header中在Interce… JavaWeb_LeadNews_Day3-图片管理, 文章管理 图片管理图片上传实现思路获取用户信息将图片上传至minio 图片列表 文章管理频道列表查询文章列表查询文章发布实现思路具体代码 来源 图片管理 图片上传 实现思路 在GateWay解析前端请求, 获取用户信息, 存储在header中在Interceptor得到header中的用户信息, 存入当前线程将图片上传到minio中, 得到图片路径将用户id, 图片路径及其他数据保存到素材表中 获取用户信息 // GateWay Component public class AuthorizeFilter implements Ordered, GlobalFilter {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest request exchange.getRequest();...String token request.getHeaders().getFirst(token);...try {Claims claimsBody AppJwtUtil.getClaimsBody(token);...// 获取用户信息String userId claimsBody.get(id).toString();// 存储在header中ServerHttpRequest serverHttpRequest request.mutate().headers(httpHeaders - {httpHeaders.add(userId, userId);}).build();// 重置请求exchange.mutate().request(serverHttpRequest);} catch (Exception e) {e.printStackTrace();}...}... }// ThreadLocal public class WmThreadLocalUtil {private final static ThreadLocalWmUser WM_USER_THREAD_LOCAL new ThreadLocal();// 存入线程中public static void setUser(WmUser wmUser){WM_USER_THREAD_LOCAL.set(wmUser);}// 从线程中获取public static WmUser getUser(){return WM_USER_THREAD_LOCAL.get();}// 清理public static void clear(){WM_USER_THREAD_LOCAL.remove();} }// Interceptor public class WmTokenInterceptor implements HandlerInterceptor {/*** 得到header中的用户信息, 并且存入到当前线程中*/Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String userId request.getHeader(userId);if(userId ! null){// 存入当前线程WmUser wmUser new WmUser();wmUser.setId(Integer.valueOf(userId));WmThreadLocalUtil.setUser(wmUser);}return true;}/*** 清理线程中的数据*/Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {WmThreadLocalUtil.clear();} }// WebMvcConfig Configuration public class WebMvcConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new WmTokenInterceptor()).addPathPatterns(/**);} }将图片上传至minio Slf4j Service Transactional public class WmMaterialServiceImpl extends ServiceImplWmMaterialMapper, WmMaterial implements WmMaterialService {Autowiredprivate FileStorageService fileStorageService;/*** 图片上传* param multipartFile* return*/Overridepublic ResponseResult uploadPicture(MultipartFile multipartFile) {// 1. 检查参数if(multipartFile null || multipartFile.getSize() 0){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);}// 2. 上传图片到minio中String fileName UUID.randomUUID().toString().replace(-, );String originalFilename multipartFile.getOriginalFilename();String postfix originalFilename.substring(originalFilename.lastIndexOf(.));String fileId null;try {fileId fileStorageService.uploadImgFile(, fileNamepostfix, multipartFile.getInputStream());log.info(上传图片到minio中, fileId: {}, fileId);} catch (IOException e) {log.error(WmMaterialServiceImpl-上传文件失败);throw new RuntimeException(e);}// 3. 保存到数据库中WmMaterial wmMaterial new WmMaterial();wmMaterial.setUserId(WmThreadLocalUtil.getUser().getId());wmMaterial.setUrl(fileId);wmMaterial.setIsCollection((short) 0);wmMaterial.setType((short) 0);wmMaterial.setCreatedTime(new Date());save(wmMaterial);// 4. 返回结果return ResponseResult.okResult(wmMaterial);} }图片列表 // WmMaterialDto Data public class WmMaterialDto extends PageRequestDto {/*** 1.收藏, 0.未收藏*/private Short isCollection; }// Service Override public ResponseResult findList(WmMaterialDto dto) {// 1. 检查参数dto.checkParam();// 2. 分页查询IPage page new Page(dto.getPage(), dto.getSize());LambdaQueryWrapperWmMaterial queryWrapper new LambdaQueryWrapper();// 是否收藏if(dto.getIsCollection() ! null dto.getIsCollection() 1){queryWrapper.eq(WmMaterial::getIsCollection, 1);}// 按照用户查询queryWrapper.eq(WmMaterial::getUserId, WmThreadLocalUtil.getUser().getId());// 按照时间倒序排序queryWrapper.orderByDesc(WmMaterial::getCreatedTime);page(page, queryWrapper);PageResponseResult result new PageResponseResult(dto.getPage(), dto.getSize(), (int) page.getTotal());result.setData(page.getRecords());// 3. 结果返回return result; }文章管理 频道列表查询 Override public ResponseResult findAll() {return ResponseResult.okResult(list()); }文章列表查询 // WmNewsPageReqDto Data public class WmNewsPageReqDto extends PageRequestDto {/*** 状态*/private Short status;/*** 开始时间*/private Date beginPubDate;/*** 结束时间*/private Date endPubDate;/*** 所属频道ID*/private Integer channelId;/*** 关键字*/private String keyword; }// Service Service Slf4j Transactional public class WmNewsServiceImpl extends ServiceImplWmNewsMapper, WmNews implements WmNewsService {/*** 查询文章* param dto* return*/Overridepublic ResponseResult findAll(WmNewsPageReqDto dto) {// 1. 参数检验dto.checkParam();// 2. 分页查询IPage page new Page(dto.getPage(), dto.getSize());LambdaQueryWrapperWmNews queryWrapper new LambdaQueryWrapper();// 2.1 查询状态queryWrapper.eq(dto.getStatus()!null, WmNews::getStatus, dto.getStatus());// 2.2 查询所属频道queryWrapper.eq(dto.getChannelId()!null, WmNews::getChannelId, dto.getChannelId());// 2.3 查询关键字queryWrapper.like(dto.getKeyword()!null, WmNews::getTitle, dto.getKeyword());// 2.4 查询时间queryWrapper.between(dto.getBeginPubDate()!nulldto.getEndPubDate()!null, WmNews::getPublishTime, dto.getBeginPubDate(), dto.getEndPubDate());// 2.5 根据当前用户查询queryWrapper.eq(WmNews::getUserId, WmThreadLocalUtil.getUser().getId());// 2.6 根据发布时间倒序排序queryWrapper.orderByDesc(WmNews::getPublishTime);// 2.7 查询结果page(page, queryWrapper);// 3. 返回结果PageResponseResult result new PageResponseResult(dto.getPage(), dto.getSize(), (int) page.getTotal());result.setData(page.getRecords());return result;} }文章发布 实现思路 文章提交审核或者存入草稿存在id, 删除文章素材关系表中的关联关系, 修改文章不存在id, 新增文章是草稿, 草稿无需在文章素材关系表中保存关联关系不是草稿, 在文章素材关系表中保存内容图片不是草稿, 在文章素材关系表中保存封面图片 具体代码 // WmNewsDto public class WmNewsDto {private Integer id;/*** 标题*/private String title;/*** 频道id*/private Integer channelId;/*** 标签*/private String labels;/*** 发布时间*/private Date publishTime;/*** 文章内容*/private String content;/*** 文章封面类型 0 无图 1 单图 3 多图 -1 自动*/private Short type;/*** 提交时间*/private Date submitedTime; /*** 状态 提交为1 草稿为0*/private Short status;/*** 封面图片列表 多张图以逗号隔开*/private ListString images; }// Service Service Slf4j Transactional public class WmNewsServiceImpl extends ServiceImplWmNewsMapper, WmNews implements WmNewsService {/*** 发布文章或保存草稿* param dto* return*/Overridepublic ResponseResult submitNews(WmNewsDto dto) {// 1. 检查数据if(dto null || dto.getContent() null){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);}// 2. 保存或修改文章WmNews wmNews new WmNews();// 属性拷贝, 属性名和类型相同才能拷贝BeanUtils.copyProperties(dto, wmNews);// 封面图片: List - Stringif(dto.getImages() ! null dto.getImages().size() 0){String imagesStr StringUtils.join(dto.getImages(), ,);wmNews.setImages(imagesStr);}// 如果当前封面类型为自动-1if(dto.getType() WemediaConstants.WM_NEWS_TYPE_AUTO){wmNews.setType(null);}saveOrUpdateWmNews(wmNews);// 3. 判断是否为草稿, 如果为草稿结束当前方法if(dto.getStatus() WmNews.Status.NORMAL.getCode()){return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);}// 获取到文章内容中的图片信息ListString materials extractUrlInfo(dto.getContent());// 4. 不是草稿, 保存文章内容图片与素材的关系saveRelativeInfoForContent(materials, wmNews.getId());// 5. 不是草稿, 保存文章封面图片与素材的关系saveRelativeInfoForCover(dto, wmNews, materials);return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);}/*** 1. 若封面类型为自动, 则需设置封面类型的数据* 2. 保存封面图片与素材的关系*/private void saveRelativeInfoForCover(WmNewsDto dto, WmNews wmNews, ListString materials) {// 自动类型设置封面类型的数据ListString imgsCover dto.getImages();if(dto.getType() WemediaConstants.WM_NEWS_TYPE_AUTO){if(materials.size() 3){wmNews.setType(WemediaConstants.WM_NEWS_MANY_IMAGE);imgsCover materials.stream().limit(3).collect(Collectors.toList());}else if(materials.size() 1){wmNews.setType(WemediaConstants.WM_NEWS_SINGLE_IMAGE);imgsCover materials.stream().limit(1).collect(Collectors.toList());}else{wmNews.setType(WemediaConstants.WM_NEWS_NONE_IMAGE);}// 修改文章if(imgsCover!null imgsCover.size() 0){wmNews.setImages(StringUtils.join(imgsCover, ,));}updateById(wmNews);}// 保存封面图片与素材的关系if(imgsCover!null imgsCover.size() 0){saveRelativeInfo(imgsCover, wmNews.getId(), WemediaConstants.WM_COVER_REFERENCE);}}/*** 处理文章内容图片与素材的关系* param materials* param newsId*/private void saveRelativeInfoForContent(ListString materials, Integer newsId) {saveRelativeInfo(materials, newsId, WemediaConstants.WM_CONTENT_REFERENCE);}Autowiredprivate WmMaterialMapper wmMaterialMapper;/*** 保存文章图片与素材的关系到数据库中* param materials* param newsId* param type*/private void saveRelativeInfo(ListString materials, Integer newsId, Short type) {if(materialsnull || materials.isEmpty()){return;}// 通过url查询idLambdaQueryWrapperWmMaterial queryWrapper new LambdaQueryWrapper();queryWrapper.in(WmMaterial::getUrl, materials);ListWmMaterial wmMaterialList wmMaterialMapper.selectList(queryWrapper);// 判断素材是否有效if(wmMaterialListnull || wmMaterialList.size()!materials.size()){// 手动抛出异常// 1. 提示调用者素材失效// 2. 进行数据的回滚throw new CustomException(AppHttpCodeEnum.MATERIAL_REFERENCE_FAIL);}ListInteger ids wmMaterialList.stream().map(WmMaterial::getId).collect(Collectors.toList());wmNewsMaterialMapper.saveRelations(ids, newsId, type);}private ListString extractUrlInfo(String content) {ListString materials new ArrayList();ListMap maps JSON.parseArray(content, Map.class);for (Map map : maps) {if(map.get(type).equals(image)){String imgUrl (String) map.get(value);materials.add(imgUrl);}}return materials;}Autowiredprivate WmNewsMaterialMapper wmNewsMaterialMapper;/*** 保存或修改文章* param wmNews*/private void saveOrUpdateWmNews(WmNews wmNews) {// 补全属性wmNews.setUserId(WmThreadLocalUtil.getUser().getId());wmNews.setCreatedTime(new Date());wmNews.setSubmitedTime(new Date());wmNews.setEnable((short) 1); // 默认上架if(wmNews.getId() null){// 保存save(wmNews);}else{// 修改// 删除文章图片和素材的关系LambdaQueryWrapperWmNewsMaterial queryWrapper new LambdaQueryWrapper();queryWrapper.eq(WmNewsMaterial::getNewsId, wmNews.getId());wmNewsMaterialMapper.delete(queryWrapper);updateById(wmNews);}} } 来源 黑马程序员. 黑马头条
http://www.pierceye.com/news/166527/

相关文章:

  • 天津河西做网站公司怎么设置网站的关键字
  • 做网站会提供源代码吗朝阳网站制作设计
  • 企业做网站找谁有什么建筑网站
  • 自己做的网站显示iis7游戏网站怎么建设
  • 淘宝联盟怎么做自已的网站什么叫利用网站做蜘蛛池
  • 做网站要多少带宽镇江网站建设联系思创
  • 唐朝网站的地址软件设计师报考条件
  • seo网站建设刘贺稳营销专家a西宁市网站建设多少钱
  • 上海哪家公司做网站最好网站建设服务合同 付款方式
  • 做网站需要源码吗软件代理商招募
  • 陕西省西安市制作网站上海云建站模板
  • wordpress注册审批汕头网站优化
  • 想招代理去什么网站做网站seo优化的公司
  • 网站制作是什么公司建设企业官方网站的流程
  • 深圳哪家网站建设公司好门户网站制作平台
  • 互联网网站模版工作室网站开发
  • 现在从事网站开发如何销售团队
  • 公司网站设计素材淘宝官网首页
  • 建设公司网站的目的seo推广软件下载
  • 排名好的成都网站建设十堰网络销售
  • 网站qq号获取网站运营与建设作业
  • 网站建设要经历哪些步骤建设银行官网学生交费网站
  • 如何注册网站平台怎么免费搭建一个网站
  • 淘宝客网站建设平台怎么获取网站数据做统计数据
  • 做网站找外包公司要要搞清楚什么抖音开放平台是干嘛的
  • 可以中英切换的网站怎么做四川住房建设厅官方网站
  • 网站制作网站设计优客工场 网站开发
  • 微网站建设开发用系统建购物网站
  • 小说网站建立浙江省和住房建设厅网站
  • 网站去掉后缀html代码运行框wordpress6