pc新闻完成

main
王宇航 2024-08-08 09:44:48 +08:00
parent 1ce0806c95
commit 41aaca4378
14 changed files with 666 additions and 13 deletions

View File

@ -0,0 +1,20 @@
package com.wyh.common.validator.news;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Data
@ApiModel("新闻分类创建参数")
public class NewsCateCreateValidate implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "name参数缺失")
@ApiModelProperty(value = "新闻分类名称")
private String name;
}

View File

@ -0,0 +1,18 @@
package com.wyh.common.validator.news;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel("新闻分类搜素参数")
public class NewsCateSearchValidate implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "新闻分类名称")
private String name;
}

View File

@ -0,0 +1,29 @@
package com.wyh.common.validator.news;
import com.wyh.common.validator.annotation.IDMust;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
*
* @author LikeAdmin
*/
@Data
@ApiModel("新闻分类更新参数")
public class NewsCateUpdateValidate implements Serializable {
private static final long serialVersionUID = 1L;
@IDMust(message = "id参数必传且需大于0")
@ApiModelProperty(value = "主键")
private Integer id;
@NotNull(message = "name参数缺失")
@ApiModelProperty(value = "新闻分类名称")
private String name;
}

View File

@ -0,0 +1,44 @@
package com.wyh.common.validator.news;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Data
@ApiModel("新闻信息创建参数")
public class NewsCreateValidate implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "isShow参数缺失")
@ApiModelProperty(value = "是否显示")
private Integer isShow;
@NotNull(message = "sort参数缺失")
@ApiModelProperty(value = "排序")
private Integer sort;
@NotNull(message = "title参数缺失")
@ApiModelProperty(value = "新闻标题")
private String title;
@NotNull(message = "subhead参数缺失")
@ApiModelProperty(value = "副标题")
private String subhead;
@NotNull(message = "newsImg参数缺失")
@ApiModelProperty(value = "新闻主图")
private String newsImg;
@NotNull(message = "content参数缺失")
@ApiModelProperty(value = "新闻内容")
private String content;
@NotNull(message = "cateId参数缺失")
@ApiModelProperty(value = "新闻分类id")
private Integer cateId;
}

View File

@ -0,0 +1,36 @@
package com.wyh.common.validator.news;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel("新闻信息搜素参数")
public class NewsSearchValidate implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "是否显示")
private Integer isShow;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "新闻标题")
private String title;
@ApiModelProperty(value = "副标题")
private String subhead;
@ApiModelProperty(value = "新闻主图")
private String newsImg;
@ApiModelProperty(value = "新闻内容")
private String content;
@ApiModelProperty(value = "新闻分类id")
private Integer cateId;
}

View File

@ -0,0 +1,53 @@
package com.wyh.common.validator.news;
import com.wyh.common.validator.annotation.IDMust;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
*
* @author LikeAdmin
*/
@Data
@ApiModel("新闻信息更新参数")
public class NewsUpdateValidate implements Serializable {
private static final long serialVersionUID = 1L;
@IDMust(message = "id参数必传且需大于0")
@ApiModelProperty(value = "主键")
private String id;
@NotNull(message = "isShow参数缺失")
@ApiModelProperty(value = "是否显示")
private Integer isShow;
@NotNull(message = "sort参数缺失")
@ApiModelProperty(value = "排序")
private Integer sort;
@NotNull(message = "title参数缺失")
@ApiModelProperty(value = "新闻标题")
private String title;
@NotNull(message = "subhead参数缺失")
@ApiModelProperty(value = "副标题")
private String subhead;
@NotNull(message = "newsImg参数缺失")
@ApiModelProperty(value = "新闻主图")
private String newsImg;
@NotNull(message = "content参数缺失")
@ApiModelProperty(value = "新闻内容")
private String content;
@NotNull(message = "cateId参数缺失")
@ApiModelProperty(value = "新闻分类id")
private Integer cateId;
}

View File

@ -0,0 +1,22 @@
package com.wyh.common.vo.news;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel("新闻分类详情Vo")
public class NewsCateDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
private Integer id;
@ApiModelProperty(value = "新闻分类名称")
private String name;
}

View File

@ -0,0 +1,28 @@
package com.wyh.common.vo.news;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel("新闻分类列表Vo")
public class NewsCateListedVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
private Integer id;
@ApiModelProperty(value = "创建时间")
private String createTime;
@ApiModelProperty(value = "更新时间")
private String updateTime;
@ApiModelProperty(value = "新闻分类名称")
private String name;
}

View File

@ -0,0 +1,42 @@
package com.wyh.common.vo.news;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel("新闻信息详情Vo")
public class NewsDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
private String id;
@ApiModelProperty(value = "是否显示")
private Integer isShow;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "新闻标题")
private String title;
@ApiModelProperty(value = "副标题")
private String subhead;
@ApiModelProperty(value = "新闻主图")
private String newsImg;
@ApiModelProperty(value = "新闻内容")
private String content;
@ApiModelProperty(value = "新闻分类id")
private Integer cateId;
@ApiModelProperty(value = "新闻分类名称")
private String cateName;
}

View File

@ -0,0 +1,46 @@
package com.wyh.common.vo.news;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel("新闻信息列表Vo")
public class NewsListedVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
private String id;
@ApiModelProperty(value = "创建时间")
private String createTime;
@ApiModelProperty(value = "更新时间")
private String updateTime;
@ApiModelProperty(value = "是否显示")
private Integer isShow;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "新闻标题")
private String title;
@ApiModelProperty(value = "副标题")
private String subhead;
@ApiModelProperty(value = "新闻主图")
private String newsImg;
@ApiModelProperty(value = "新闻分类id")
private Integer cateId;
@ApiModelProperty(value = "新闻分类名称")
private String cateName;
}

View File

@ -146,20 +146,7 @@ public class LoginController {
return AjaxResult.success(vo);
}
public static void main(String[] args) {
String phoneNumber = "17647557909";
String regex = "^1[3-9]\\\\d{9}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(phoneNumber);
if (matcher.matches()) {
System.out.println("手机号格式正确");
} else {
System.out.println("手机号格式不正确");
}
}
@NotLogin
@PostMapping("/sendSms")
@ApiOperation(value="发送短信" , notes="发送短信验证码")

View File

@ -0,0 +1,60 @@
package com.wyh.front.controller;
import com.wyh.common.aop.NotLogin;
import com.wyh.common.aop.NotPower;
import com.wyh.common.core.AjaxResult;
import com.wyh.common.core.PageResult;
import com.wyh.common.validator.annotation.IDMust;
import com.wyh.common.validator.news.NewsCreateValidate;
import com.wyh.common.validator.news.NewsSearchValidate;
import com.wyh.common.validator.news.NewsUpdateValidate;
import com.wyh.common.vo.news.NewsCateListedVo;
import com.wyh.common.vo.news.NewsDetailVo;
import com.wyh.common.vo.news.NewsListedVo;
import com.wyh.front.service.INewsService;
import com.wyh.front.validate.common.IdValidate;
import com.wyh.front.validate.common.PageValidate;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.java.Log;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("front/news")
@Api(tags = "新闻信息")
public class NewsController {
@Resource
INewsService iNewsService;
@NotLogin
@GetMapping("/list")
@ApiOperation(value="新闻信息列表")
public AjaxResult<PageResult<NewsListedVo>> list(@Validated PageValidate pageValidate,
@Validated NewsSearchValidate searchValidate) {
PageResult<NewsListedVo> list = iNewsService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
@NotLogin
@GetMapping("/detail")
@ApiOperation(value="新闻信息详情")
public AjaxResult<NewsDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
NewsDetailVo detail = iNewsService.detail(id);
return AjaxResult.success(detail);
}
@NotLogin
@GetMapping("/cate/all")
@ApiOperation(value="新闻分类列表(下拉框)")
public AjaxResult<List<NewsCateListedVo>> all(){
return AjaxResult.success(iNewsService.all());
}
}

View File

@ -0,0 +1,65 @@
package com.wyh.front.service;
import com.wyh.common.core.PageResult;
import com.wyh.common.validator.news.NewsCreateValidate;
import com.wyh.common.validator.news.NewsSearchValidate;
import com.wyh.common.validator.news.NewsUpdateValidate;
import com.wyh.common.vo.news.NewsCateListedVo;
import com.wyh.common.vo.news.NewsDetailVo;
import com.wyh.common.vo.news.NewsListedVo;
import com.wyh.front.validate.common.PageValidate;
import java.util.List;
/**
*
* @author LikeAdmin
*/
public interface INewsService {
/**
*
*
* @author LikeAdmin
* @param pageValidate
* @param searchValidate
* @return PageResult<NewsListedVo>
*/
PageResult<NewsListedVo> list(PageValidate pageValidate, NewsSearchValidate searchValidate);
/**
*
*
* @author LikeAdmin
* @param id ID
* @return NewsDetailVo
*/
NewsDetailVo detail(Integer id);
/**
*
*
* @author LikeAdmin
* @param createValidate
*/
void add(NewsCreateValidate createValidate);
/**
*
*
* @author LikeAdmin
* @param updateValidate
*/
void edit(NewsUpdateValidate updateValidate);
/**
*
*
* @author LikeAdmin
* @param id ID
*/
void del(Integer id);
List<NewsCateListedVo> all();
}

View File

@ -0,0 +1,203 @@
package com.wyh.front.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wyh.common.core.PageResult;
import com.wyh.common.entity.News;
import com.wyh.common.entity.news.NewsCate;
import com.wyh.common.mapper.news.NewsCateMapper;
import com.wyh.common.mapper.news.NewsMapper;
import com.wyh.common.util.TimeUtils;
import com.wyh.common.validator.news.NewsCreateValidate;
import com.wyh.common.validator.news.NewsSearchValidate;
import com.wyh.common.validator.news.NewsUpdateValidate;
import com.wyh.common.vo.news.NewsCateListedVo;
import com.wyh.common.vo.news.NewsDetailVo;
import com.wyh.common.vo.news.NewsListedVo;
import com.wyh.front.service.INewsService;
import com.wyh.front.validate.common.PageValidate;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
/**
*
* @author LikeAdmin
*/
@Service
public class NewsServiceImpl implements INewsService {
@Resource
NewsMapper newsMapper;
@Resource
NewsCateMapper newsCateMapper;
/**
*
*
* @author LikeAdmin
* @param pageValidate
* @param searchValidate
* @return PageResult<NewsListedVo>
*/
@Override
public PageResult<NewsListedVo> list(PageValidate pageValidate, NewsSearchValidate searchValidate) {
Integer page = pageValidate.getPageNo();
Integer limit = pageValidate.getPageSize();
QueryWrapper<News> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_delete", 0);
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
newsMapper.setSearch(queryWrapper, searchValidate, new String[]{
"=:isShow@is_show:long",
"=:sort:long",
"like:title:str",
"=:subhead:str",
"=:newsImg@news_img:str",
"=:content:str",
"=:cateId@cate_id:long",
});
IPage<News> iPage = newsMapper.selectPage(new Page<>(page, limit), queryWrapper);
List<NewsListedVo> list = new LinkedList<>();
for(News item : iPage.getRecords()) {
NewsListedVo vo = new NewsListedVo();
BeanUtils.copyProperties(item, vo);
if (item.getCateId() != null) {
NewsCate newsCate = newsCateMapper.selectById(item.getCateId());
if (newsCate != null) {
vo.setCateName(newsCate.getName());
}
}
vo.setCreateTime(TimeUtils.timestampToDate(item.getCreateTime()));
vo.setUpdateTime(TimeUtils.timestampToDate(item.getUpdateTime()));
list.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
/**
*
*
* @author LikeAdmin
* @param id
* @return News
*/
@Override
public NewsDetailVo detail(Integer id) {
News model = newsMapper.selectOne(
new QueryWrapper<News>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
NewsDetailVo vo = new NewsDetailVo();
BeanUtils.copyProperties(model, vo);
if (model.getCateId() != null) {
NewsCate newsCate = newsCateMapper.selectById(model.getCateId());
if (newsCate != null) {
vo.setCateName(newsCate.getName());
}
}
return vo;
}
/**
*
*
* @author LikeAdmin
* @param createValidate
*/
@Override
public void add(NewsCreateValidate createValidate) {
News model = new News();
model.setCreateTime(System.currentTimeMillis() / 1000);
model.setUpdateTime(System.currentTimeMillis() / 1000);
model.setIsShow(createValidate.getIsShow());
model.setSort(createValidate.getSort());
model.setTitle(createValidate.getTitle());
model.setSubhead(createValidate.getSubhead());
model.setNewsImg(createValidate.getNewsImg());
model.setContent(createValidate.getContent());
model.setCateId(createValidate.getCateId());
newsMapper.insert(model);
}
/**
*
*
* @author LikeAdmin
* @param updateValidate
*/
@Override
public void edit(NewsUpdateValidate updateValidate) {
News model = newsMapper.selectOne(
new QueryWrapper<News>()
.eq("id", updateValidate.getId())
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
model.setId(updateValidate.getId());
model.setUpdateTime(System.currentTimeMillis() / 1000);
model.setIsShow(updateValidate.getIsShow());
model.setSort(updateValidate.getSort());
model.setTitle(updateValidate.getTitle());
model.setSubhead(updateValidate.getSubhead());
model.setNewsImg(updateValidate.getNewsImg());
model.setContent(updateValidate.getContent());
model.setCateId(updateValidate.getCateId());
newsMapper.updateById(model);
}
/**
*
*
* @author LikeAdmin
* @param id ID
*/
@Override
public void del(Integer id) {
News model = newsMapper.selectOne(
new QueryWrapper<News>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
model.setIsDelete(1);
model.setDeleteTime(System.currentTimeMillis() / 1000);
newsMapper.updateById(model);
}
@Override
public List<NewsCateListedVo> all() {
List<NewsCate> newsCates = newsCateMapper.selectList(Wrappers.<NewsCate>lambdaQuery().eq(NewsCate::getIsDelete, 0));
List<NewsCateListedVo> list = new LinkedList<>();
for(NewsCate item : newsCates) {
NewsCateListedVo vo = new NewsCateListedVo();
BeanUtils.copyProperties(item, vo);
vo.setCreateTime(TimeUtils.timestampToDate(item.getCreateTime()));
vo.setUpdateTime(TimeUtils.timestampToDate(item.getUpdateTime()));
list.add(vo);
}
return list;
}
}