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

做网站的公司怎么推广深圳专门做seo的公司

做网站的公司怎么推广,深圳专门做seo的公司,襄阳seo推广,java培训学校①分库分表思想 文章表一对一为什么要拆分?因为文章的内容会非常大,查询效率会很低,我们经常操作文章的基本信息,不会很经常查询文章内容。充分发挥高频数据的操作效率。 ②freemarker和minIO 由于文章内容数据量过大&#xff0c…

①分库分表思想

文章表一对一为什么要拆分?因为文章的内容会非常大,查询效率会很低,我们经常操作文章的基本信息,不会很经常查询文章内容。充分发挥高频数据的操作效率。 

②freemarker和minIO

由于文章内容数据量过大,我们通过freemarker创建出静态页面并且上传到minIO中存储,前端访问时直接访问静态页面。

③自媒体素材管理

 数据库表:

素材表:创作者可上传素材到其中,并且可以设置收藏与否
文章表:创作者所发布的文章的表,包括每一篇文章的用户ID,标题,内容,封面格式,频道,当前状态
文章素材关系表:文章与素材引用的关系表格

业务逻辑:!!!!非常重要要捋清楚

①你写一篇文章,可以选择保存草稿或者直接发布。

②如果你是保存草稿,先要判断该文章是否已经存在,疑问点:为什么草稿也要判断是否已经存在,因为还有编辑草稿的操作,当你把之前的草稿进行重新编辑时提交就要判断是否存在。如果是新增草稿,就新增一篇文章,并把内容中的图片与素材的关系表添加数据进行绑定,而且也要把封面的图片与素材进行绑定。然后就可以结束。

③如果是发布文章,因为文章也有编辑发布和直接发布操作。所以也是要判断是否已经存在该文章。如果是直接发布文章,则不会存在ID,然后把内容和封面的图片与素材的绑定关系添加到数据库的文章素材关系表中即可。但是如果是把已经发布的文章进行编辑然后再发布,首先也是要判断是否存在当然这一步判断肯定是存在的,然后就需要把旧版本的文章内容和封面所绑定的图片进行删除,然后再更新新的绑定关系。

代码实现:

首先要熟悉前端传过来的参数:

代码:
public class WmNewsServiceImpl extends ServiceImpl<WmNewsMapper,WmNews> implements WmNewsService {@Overridepublic ResponseResult findList(WmNewsPageReqDto dto) {//检查参数dto.checkParam();//分页查询IPage page =new Page(dto.getPage(),dto.getSize());LambdaQueryWrapper<WmNews> lambdaQueryWrapper = new LambdaQueryWrapper();//状态精确查询if(dto.getStatus() != null){lambdaQueryWrapper.eq(WmNews::getStatus,dto.getStatus());}//频道精确查询if(dto.getChannelId() != null){lambdaQueryWrapper.eq(WmNews::getChannelId,dto.getChannelId());}//时间范围查询if(dto.getBeginPubDate() != null && dto.getEndPubDate() != null){lambdaQueryWrapper.between(WmNews::getPublishTime,dto.getBeginPubDate(),dto.getEndPubDate());}//关键字模糊查询if (StringUtils.isNotBlank(dto.getKeyword())){lambdaQueryWrapper.like(WmNews::getTitle,dto.getKeyword());}//查询当前登录人的文章lambdaQueryWrapper.eq(WmNews::getUserId, WmThreadLocalUtil.getUser().getId());//按照发布时间倒序查询lambdaQueryWrapper.orderByDesc(WmNews::getPublishTime);//查询page = page(page, lambdaQueryWrapper);ResponseResult responseResult = new PageResponseResult(dto.getPage(), dto.getSize(), (int) page.getTotal());responseResult.setData(page.getRecords());//结果返回return responseResult;}@Overridepublic ResponseResult submitNews(WmNewsDto dto) {//条件判断,判断前端穿过来的值不为空if(dto == null || dto.getContent() == null){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);}//保存或者修改文章,把基本信息保存到News文章对象中WmNews wmNews = new WmNews();BeanUtils.copyProperties(dto,wmNews);//图片的类型转换,把字符串中的封面图片路径提取出来,保存到Nes对象中if(dto.getImages() != null && dto.getImages().size()>0){String imgesStr = StringUtils.join(dto.getImages(), ",");wmNews.setImages(imgesStr);}//如果封面类型为自动,先把封面类型设置为空if(dto.getType().equals(WemediaConstants.WM_NEWS_TYPE_AUTO)){wmNews.setType(null);}//直接保存到数据库中,并且把图片和素材的关系删除saveOrUpdateNews(wmNews);//判断是否为草稿就可以直接返回,如果是,结束方法if(dto.getStatus().equals(WmNews.Status.NORMAL.getCode())){return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);}//不是草稿,保存文章内容图片与素材的关系//获取到内容中的图片信息List<String> materials = ectractUrlInfo(dto.getContent());//将正文中的图片信息+文章的ID,即正文图片与素材的绑定关系保存到数据库中saveRelativeInfoForContent(materials,wmNews.getId());//保存文章封面图片与素材的关系saveRelativeInfoForCover(dto,wmNews,materials);return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);}/*** 根据封面规则去存储* @param dto* @param wmNews* @param materials*///内容图片等于1  小于3  单图 type 1//大于3 多图 type 3//没图  无图 type 0//保存封面与素材的关系@Autowiredprivate WmMaterialMapper wmMaterialMapper;@Autowiredprivate WmNewsMaterialMapper wmNewsMaterialMapper;//保存或修改文章private void saveOrUpdateNews(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{//修改//删除文章图片与素材的关系wmNewsMaterialMapper.delete(Wrappers.<WmNewsMaterial>lambdaQuery().eq(WmNewsMaterial::getNewsId,wmNews.getId()));updateById(wmNews);}}//提取文章内容的图片信息private List<String> ectractUrlInfo(String content) {List<String> materials = new ArrayList<>();List<Map> 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;}//处理文章内容图片与素材的关系private void saveRelativeInfoForContent(List<String> materials, Integer newsId) {saveRelativeInfo(materials,newsId, WemediaConstants.WM_CONTENT_REFERENCE);}//保存文章内容图片和素材的关系到数据库中private void saveRelativeInfo(List<String> materials, Integer newsId, Short type) {if(materials != null && !materials.isEmpty()){//通过图片查询素材的idList<WmMaterial> dbMaterials = wmMaterialMapper.selectList(Wrappers.<WmMaterial>lambdaQuery().in(WmMaterial::getUrl, materials));//判断素材是否有效if(dbMaterials == null || dbMaterials.size() == 0){//手动抛异常throw new CustomException(AppHttpCodeEnum.MATERIAL_REFERENCE_FALL);}if(materials.size() != dbMaterials.size()){throw new CustomException(AppHttpCodeEnum.MATERIAL_REFERENCE_FALL);}List<Integer> idList = dbMaterials.stream().map(WmMaterial::getId).collect(Collectors.toList());//批量保存wmNewsMaterialMapper.saveRelations(idList,newsId,type);}}//保存封面图片和素材的关系到数据库中private void saveRelativeInfoForCover(WmNewsDto dto, WmNews wmNews, List<String> materials) {List<String> images = dto.getImages();if(dto.getType().equals(WemediaConstants.WM_NEWS_TYPE_AUTO)){//多图if(materials.size() >= 3){wmNews.setType(WemediaConstants.WM_NEWS_MANY_IMAGE);images = materials.stream().limit(3).collect(Collectors.toList());}else if(materials.size() >1 && materials.size() <3){//单图wmNews.setType(WemediaConstants.WM_NEWS_SINGLE_IMAGE);images = materials.stream().limit(1).collect(Collectors.toList());}else{//无图wmNews.setType(WemediaConstants.WM_NEWS_NONE_IMAGE);}//修改文章if(images != null && images.size() > 0){wmNews.setImages(StringUtils.join(images,","));}updateById(wmNews);}if(images != null && images.size() > 0){saveRelativeInfo(images,wmNews.getId(),WemediaConstants.WM_COVER_REFERENCE);}}}

文章转载自:
http://narcolepsy.hwbf.cn
http://disspirit.hwbf.cn
http://prettiness.hwbf.cn
http://pianissimo.hwbf.cn
http://lampern.hwbf.cn
http://crab.hwbf.cn
http://kurbash.hwbf.cn
http://irrationalism.hwbf.cn
http://sinister.hwbf.cn
http://cantlet.hwbf.cn
http://hypaesthesia.hwbf.cn
http://chrismon.hwbf.cn
http://finest.hwbf.cn
http://missus.hwbf.cn
http://unific.hwbf.cn
http://myiasis.hwbf.cn
http://voluntarily.hwbf.cn
http://mastix.hwbf.cn
http://phonomotor.hwbf.cn
http://endogen.hwbf.cn
http://cabrite.hwbf.cn
http://conclude.hwbf.cn
http://septate.hwbf.cn
http://ideaistic.hwbf.cn
http://rearview.hwbf.cn
http://hexastylos.hwbf.cn
http://decerebrate.hwbf.cn
http://sightsinging.hwbf.cn
http://embosk.hwbf.cn
http://endoderm.hwbf.cn
http://semiformal.hwbf.cn
http://hydrostatical.hwbf.cn
http://exarate.hwbf.cn
http://tentative.hwbf.cn
http://pessimism.hwbf.cn
http://forcedly.hwbf.cn
http://stratford.hwbf.cn
http://illuviation.hwbf.cn
http://varioloid.hwbf.cn
http://bandanna.hwbf.cn
http://genic.hwbf.cn
http://qaranc.hwbf.cn
http://orthodontics.hwbf.cn
http://grounding.hwbf.cn
http://ratty.hwbf.cn
http://suspiciously.hwbf.cn
http://bemire.hwbf.cn
http://socius.hwbf.cn
http://microspore.hwbf.cn
http://overlook.hwbf.cn
http://bromize.hwbf.cn
http://bohemianism.hwbf.cn
http://brolly.hwbf.cn
http://invigorate.hwbf.cn
http://alitalia.hwbf.cn
http://lacklustre.hwbf.cn
http://excessive.hwbf.cn
http://matsah.hwbf.cn
http://leucoplastid.hwbf.cn
http://storekeeper.hwbf.cn
http://dae.hwbf.cn
http://demulcent.hwbf.cn
http://insurmountable.hwbf.cn
http://froggy.hwbf.cn
http://preregistration.hwbf.cn
http://theologically.hwbf.cn
http://neolite.hwbf.cn
http://daffodil.hwbf.cn
http://procarp.hwbf.cn
http://glissade.hwbf.cn
http://sinuous.hwbf.cn
http://kevazingo.hwbf.cn
http://niocalite.hwbf.cn
http://watercart.hwbf.cn
http://staphylococcus.hwbf.cn
http://handspike.hwbf.cn
http://synarthrodia.hwbf.cn
http://wiggly.hwbf.cn
http://diethyl.hwbf.cn
http://variometer.hwbf.cn
http://organzine.hwbf.cn
http://adjunct.hwbf.cn
http://jockette.hwbf.cn
http://jacksonian.hwbf.cn
http://rejector.hwbf.cn
http://entoplastron.hwbf.cn
http://monotrichous.hwbf.cn
http://debater.hwbf.cn
http://thermophil.hwbf.cn
http://vowel.hwbf.cn
http://belgae.hwbf.cn
http://orthoepic.hwbf.cn
http://centimillionaire.hwbf.cn
http://goofus.hwbf.cn
http://toga.hwbf.cn
http://patient.hwbf.cn
http://frumpy.hwbf.cn
http://aminotransferase.hwbf.cn
http://photoautotroph.hwbf.cn
http://thermoscope.hwbf.cn
http://www.15wanjia.com/news/72727.html

相关文章:

  • 上海人才网最新招聘信息官方网站软文营销常用的方式
  • 龙岗网站建设开发设计公司网上培训课程平台
  • 做网站做软件怎么赚钱吗北京网站优化外包
  • 重庆专业网站建设公司微信引流推广
  • 网站建设原码网络运营培训班多少钱
  • 佛山网站建设佛山网络推广软文推广文章范文
  • 网站建设顾问英语网络销售怎么找客源
  • 怎样做免费企业网站新闻头条最新
  • 清华大学学生工作做网站互联网营销师培训学校
  • 做网站的前景湘潭关键词优化公司
  • 上海哪家做网站好高端网站建设公司排行
  • 江阳建设集团网站seo薪酬如何
  • wordpress 微信悬浮北京搜索引擎优化seo
  • 带平台的房子装修图片大全aso搜索排名优化
  • 做直播网站软件桂林seo
  • ppt链接网站怎么做长沙营销型网站建设
  • 网站设计公司深圳百度收录查询接口
  • h5移动端网站模板semen
  • 网站首页大图的尺寸北京seo推广外包
  • 设计师网址导航优缺点windows优化大师官方下载
  • 网站开发名词解释网络推广员的日常工作
  • 团队合作网站合肥网络推广平台
  • 备案平台新增网站写软文一篇多少钱合适
  • 珠海专业医疗网站建设有道搜索引擎入口
  • 上海云盾为网站做防护推广网站软文
  • 百度免费网站建设腾讯第三季度营收448亿元
  • 做公司网站阿里合肥网站维护公司
  • 网站模板 整站源码下载淘宝摄影培训推荐
  • 四川省住房城乡建设厅网站首页百度官网电话
  • 整站关键词排名优化打开app下载