diff --git a/app/src/api/news.ts b/app/src/api/news.ts index e9be6baf..c26c5a86 100644 --- a/app/src/api/news.ts +++ b/app/src/api/news.ts @@ -15,3 +15,38 @@ export function getArticleCate() { export function getArticleList(data: Record) { return request.get({ url: '/article/list', data: data }) } + +/** + * @description 获取文章详情 + * @param { number } id + * @return { Promise } + */ +export function getArticleDetail(data: { id: number }) { + return request.get({ url: '/article/detail', data: data }) +} + +/** + * @description 加入收藏 + * @param { number } articleId + * @return { Promise } + */ +export function addCollect(data: { articleId: number }) { + return request.post({ url: '/article/addCollect', data: data }) +} + +/** + * @description 取消收藏 + * @param { number } id + * @return { Promise } + */ +export function cancelCollect(data: { articleId: number }) { + return request.post({ url: '/article/cancelCollect', data: data }) +} + +/** + * @description 获取收藏列表 + * @return { Promise } + */ +export function getCollect() { + return request.get({ url: '/article/collect' }) +} diff --git a/app/src/components/news-card/news-card.vue b/app/src/components/news-card/news-card.vue index 57189362..66347442 100644 --- a/app/src/components/news-card/news-card.vue +++ b/app/src/components/news-card/news-card.vue @@ -1,5 +1,5 @@ diff --git a/app/src/pages/news_detail/news_detail.vue b/app/src/pages/news_detail/news_detail.vue index 02409e35..417415ab 100644 --- a/app/src/pages/news_detail/news_detail.vue +++ b/app/src/pages/news_detail/news_detail.vue @@ -1,8 +1,95 @@ + + + + {{ newsData.title }} + + 作者: {{ newsData.author }} + {{ newsData.createTime }} + + + {{ newsData.visit }} + + + + + + + + + 摘要: {{ newsData.summary }} + + + + + + + + + + + + + + 收藏 + + + + + - - \ No newline at end of file + + const newsData = ref< any >({}) + let newsId = '' + + + const getData = async (id) => { + newsData.value = await getArticleDetail({ id }) + } + + const handleAddCollect = async (articleId: number) => { + try{ + if( newsData.value.collect ) { + await cancelCollect({ articleId }) + } else await addCollect({ articleId }) + getData(newsId) + }catch(e){ + //TODO handle the exception + } + } + + onLoad((options: any) => { + newsId = options.id + getData(newsId) + }) + + + diff --git a/server/like-admin/src/main/java/com/mdd/admin/controller/user/UserController.java b/server/like-admin/src/main/java/com/mdd/admin/controller/user/UserController.java index e987224e..7c9a67d7 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/controller/user/UserController.java +++ b/server/like-admin/src/main/java/com/mdd/admin/controller/user/UserController.java @@ -1,8 +1,8 @@ package com.mdd.admin.controller.user; +import com.baomidou.mybatisplus.core.toolkit.Assert; import com.mdd.admin.service.user.IUserService; import com.mdd.admin.validate.common.PageParam; -import com.mdd.admin.validate.user.UserInfoParam; import com.mdd.admin.vo.user.UserVo; import com.mdd.common.core.AjaxResult; import com.mdd.common.core.PageResult; @@ -55,12 +55,15 @@ public class UserController { * 用户编辑 * * @author fzr - * @param userInfoParam 用户参数 + * @param params 参数 * @return Object */ @PostMapping("/edit") - public Object edit(@Validated @RequestBody UserInfoParam userInfoParam) { - iUserService.edit(userInfoParam); + public Object edit(@RequestBody Map params) { + Assert.notNull(params.get("id"), "id参数缺失"); + Assert.notNull(params.get("field"), "field参数缺失"); + Assert.notNull(params.get("value"), "value参数缺失"); + iUserService.edit(params); return AjaxResult.success(); } diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/user/IUserService.java b/server/like-admin/src/main/java/com/mdd/admin/service/user/IUserService.java index bc7072fa..3e6c4bec 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/user/IUserService.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/user/IUserService.java @@ -1,7 +1,6 @@ package com.mdd.admin.service.user; import com.mdd.admin.validate.common.PageParam; -import com.mdd.admin.validate.user.UserInfoParam; import com.mdd.admin.vo.user.UserVo; import com.mdd.common.core.PageResult; @@ -35,8 +34,8 @@ public interface IUserService { * 用户编辑 * * @author fzr - * @param userInfoParam 参数 + * @param params 参数 */ - void edit(UserInfoParam userInfoParam); + void edit(Map params); } diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/user/impl/UserServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/user/impl/UserServiceImpl.java index 0312cb68..5e9e05a4 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/user/impl/UserServiceImpl.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/user/impl/UserServiceImpl.java @@ -6,8 +6,6 @@ import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mdd.admin.service.user.IUserService; import com.mdd.admin.validate.common.PageParam; -import com.mdd.admin.validate.user.UserInfoParam; -import com.mdd.admin.vo.article.ArticleListVo; import com.mdd.admin.vo.user.UserVo; import com.mdd.common.core.PageResult; import com.mdd.common.entity.user.User; @@ -17,7 +15,6 @@ import com.mdd.common.mapper.user.UserMapper; import com.mdd.common.utils.StringUtil; import com.mdd.common.utils.TimeUtil; import com.mdd.common.utils.UrlUtil; -import org.checkerframework.checker.units.qual.A; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -136,39 +133,55 @@ public class UserServiceImpl implements IUserService { * 用户编辑 * * @author fzr - * @param userInfoParam 参数 + * @param params 参数 */ @Override - public void edit(UserInfoParam userInfoParam) { - User user = userMapper.selectOne(new QueryWrapper() - .eq("id", userInfoParam.getId()) - .eq("is_delete", 0) - .last("limit 1")); + public void edit(Map params) { + Integer id = Integer.parseInt(params.get("id")); + String field = params.get("field").trim(); + String value = params.get("value").trim(); - Assert.notNull(user, "用户不存在!"); + User user = userMapper.selectOne(new QueryWrapper() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); - if (!user.getUsername().equals(userInfoParam.getUsername())) { - User u = userMapper.selectOne(new QueryWrapper() - .eq("username", userInfoParam.getUsername()) - .eq("is_delete", 0) - .last("limit 1")); - System.out.println(u); - if (StringUtil.isNotNull(u) && !u.getId().equals(userInfoParam.getId())) { - throw new OperateException("当前账号已存在!"); + Assert.notNull(user, "用户不存在!"); + + switch (field) { + case "username": + if (!user.getUsername().equals(value)) { + User u = userMapper.selectOne(new QueryWrapper() + .eq("username", value) + .eq("is_delete", 0) + .last("limit 1")); + + if (StringUtil.isNotNull(u) && !u.getId().equals(id)) { + throw new OperateException("当前账号已存在!"); + } } - } - - if (!userInfoParam.getMobile().equals("")) { - if(!Pattern.matches("^[1][3,4,5,6,7,8,9][0-9]{9}$", userInfoParam.getMobile())){ - throw new OperateException("手机号格式不正确!"); + user.setUsername(value); + break; + case "realName": + user.setRealName(value); + break; + case "sex": + user.setSex(Integer.parseInt(value)); + break; + case "mobile": + if (!value.equals("")) { + if(!Pattern.matches("^[1][3,4,5,6,7,8,9][0-9]{9}$", value)){ + throw new OperateException("手机号格式不正确!"); + } } - } + user.setMobile(value); + break; + default: + throw new OperateException("不被支持的字段类型!"); + } - user.setUsername(userInfoParam.getUsername()); - user.setRealName(userInfoParam.getRealName()); - user.setSex(userInfoParam.getSex()); - user.setMobile(userInfoParam.getMobile()); - userMapper.updateById(user); + user.setUpdateTime(System.currentTimeMillis() / 1000); + userMapper.updateById(user); } } diff --git a/server/like-admin/src/main/java/com/mdd/admin/validate/user/UserInfoParam.java b/server/like-admin/src/main/java/com/mdd/admin/validate/user/UserInfoParam.java deleted file mode 100644 index d347fe31..00000000 --- a/server/like-admin/src/main/java/com/mdd/admin/validate/user/UserInfoParam.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.mdd.admin.validate.user; - -import com.mdd.common.validator.annotation.IDMust; -import com.mdd.common.validator.annotation.IntegerContains; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Pattern; -import java.io.Serializable; - -/** - * 用户信息参数 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -public class UserInfoParam implements Serializable { - - private static final long serialVersionUID = 1L; - - @IDMust(message = "id参数必传且需大于0") - private Integer id; - - @NotNull(message = "username参数缺失") - @NotEmpty(message = "账号不能为空") - private String username; - - @NotNull(message = "realName参数缺失") - @NotEmpty(message = "真实名称不能为空") - private String realName; - - @NotNull(message = "sex参数缺失") - @IntegerContains(values = {0, 1, 2}, message = "请正确选择性别") - private Integer sex; - - private String mobile; - -} diff --git a/server/like-front/src/main/java/com/mdd/front/controller/ArticleController.java b/server/like-front/src/main/java/com/mdd/front/controller/ArticleController.java index 6d429d00..da7fba89 100644 --- a/server/like-front/src/main/java/com/mdd/front/controller/ArticleController.java +++ b/server/like-front/src/main/java/com/mdd/front/controller/ArticleController.java @@ -107,10 +107,10 @@ public class ArticleController { */ @PostMapping("/cancelCollect") public Object cancelCollect(@RequestBody Map params) { - Assert.notNull(params.get("id"), "id参数缺失"); - Integer id = Integer.parseInt(params.get("id")); + Assert.notNull(params.get("articleId"), "id参数缺失"); + Integer articleId = Integer.parseInt(params.get("articleId")); Integer userId = LikeFrontThreadLocal.getUserId(); - iArticleService.cancelCollect(id, userId); + iArticleService.cancelCollect(articleId, userId); return AjaxResult.success(); } diff --git a/server/like-front/src/main/java/com/mdd/front/service/IArticleService.java b/server/like-front/src/main/java/com/mdd/front/service/IArticleService.java index a51ce3e8..ff68b1e3 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/IArticleService.java +++ b/server/like-front/src/main/java/com/mdd/front/service/IArticleService.java @@ -66,9 +66,9 @@ public interface IArticleService { * 取消收藏 * * @author fzr - * @param id 主键 + * @param articleId 主键 * @param userId 用户ID */ - void cancelCollect(Integer id, Integer userId); + void cancelCollect(Integer articleId, Integer userId); } diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/ArticleServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/ArticleServiceImpl.java index 5dd6f86e..8523b6cc 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/impl/ArticleServiceImpl.java +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/ArticleServiceImpl.java @@ -230,14 +230,14 @@ public class ArticleServiceImpl implements IArticleService { * 取消收藏 * * @author fzr - * @param id 主键 + * @param articleId 文章ID * @param userId 用户ID */ @Override - public void cancelCollect(Integer id, Integer userId) { + public void cancelCollect(Integer articleId, Integer userId) { ArticleCollect articleCollect = articleCollectMapper.selectOne( new QueryWrapper() - .eq("id", id) + .eq("article_id", articleId) .eq("user_id", userId) .eq("is_delete", 0) .last("limit 1"));