功能描述:
用户选好课程点击立即购买,调用后端接口,开始创建商品订单。
需要校验必要数据:用户是否登录;
接口的请求入参,课程是否存在,课程是否上架;
该用户之前是否成功购买过该课程;
如校验不通过提示相应的文案。
查看该用户是否存在有效未成功的订单;
如果存在直接返回对应的订单号;
如果不存在创建新的课程订单,返回新的订单号。
功能接口:/saveOrder?orderNo={orderNo}&user_id={userid}&course_id={courseid}&activity_course_id={acid}&source_type={stype}
src\main\resources\com\renda\mapper\OrderDao.xm
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.renda.mapper.OrderDao">
<insert id="saveOrder">
insert into `user_course_order`
(`order_no`,`user_id`,`course_id`,`activity_course_id`,`source_type`,`status`,`create_time`,`update_time`,`is_del`)
values
(#{orderNo},#{user_id},#{course_id},#{activity_course_id},#{source_type},0,sysdate(),sysdate(),0)
</insert>
</mapper>
com.renda.mapper.OrderDao
@Service
public interface OrderDao {
/**
* 生成订单
*
* @param orderNo 订单编号
* @param user_id 用户编号
* @param course_id 课程编号
* @param activity_course_id 活动课程编号
* @param source_type 订单来源类型
*/
void saveOrder(@Param("orderNo") String orderNo,
@Param("user_id") String user_id,
@Param("course_id") String course_id,
@Param("activity_course_id") String activity_course_id,
@Param("source_type") String source_type);
}
com.renda.order.OrderService
public interface OrderService {
/**
* 生成订单
*
* @param orderNo 订单编号
* @param user_id 用户编号
* @param course_id 课程编号
* @param activity_course_id 活动课程编号
* @param source_type 订单来源类型
*/
void saveOrder(String orderNo, String user_id, String course_id, String activity_course_id, String source_type);
}
com.renda.order.impl.OrderServiceImpl
@Service // Dubbo 暴露服务
public class OrderServiceImpl implements OrderService {
@Autowired
private OrderDao orderDao;
@Override
public void saveOrder(String orderNo, String user_id, String course_id, String activity_course_id, String source_type) {
orderDao.saveOrder(orderNo, user_id, course_id, activity_course_id, source_type);
}
}
src\test\java\order\TestOrder.java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring/spring-*.xml"})
public class TestOrder {
@Autowired
private OrderService orderService;
@Test
public void saveOrder() {
String orderNo = UUID.randomUUID().toString();
String user_id = "100030011";
String course_id = "7";
// 0 表示本课程没有活动
String activity_course_id = "0";
String source_type = "1";
orderService.saveOrder(orderNo, user_id, course_id, activity_course_id, source_type);
}
}
com.renda.order.OrderService
public interface OrderService {
void saveOrder(String orderNo, String user_id, String course_id, String activity_course_id, String source_type);
}
com.renda.order.controller.OrderController
@RestController
@RequestMapping("order")
public class OrderController {
// 远程消费
@Reference
private OrderService orderService;
@GetMapping("saveOrder")
public String saveOrder(String orderNo, String user_id, String course_id, String activity_course_id, String source_type) {
orderService.saveOrder(orderNo, user_id, course_id, activity_course_id, source_type);
return orderNo;
}
}
浏览器访问:http://localhost:8002/order/saveOrder?orderNo=1&user_id=100030018&course_id=1&activity_course_id=0&source_type=1
功能描述:
1、修改订单状态。
2、删除订单。
3、查询已登录用户的全部订单。
功能接口:
/order/updateOrder?orderNo={orderNo}&status={status}
/order/deleteOrder/{orderNo}
/order/getOrdersByUserId/{userid}
com.renda.entity.UserCourseOrder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class UserCourseOrder implements Serializable {
private static final long serialVersionUID = 777308790778683330L;
...
}
src\main\resources\com\renda\mapper\OrderDao.xm
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.renda.mapper.OrderDao">
<resultMap type="com.renda.entity.UserCourseOrder" id="orderMap">
<result property="id" column="id" jdbcType="INTEGER"/>
<result property="orderNo" column="order_no" jdbcType="VARCHAR"/>
<result property="userId" column="user_id" jdbcType="OTHER"/>
<result property="courseId" column="course_id" jdbcType="OTHER"/>
<result property="activityCourseId" column="activity_course_id" jdbcType="INTEGER"/>
<result property="sourceType" column="source_type" jdbcType="OTHER"/>
<result property="status" column="status" jdbcType="OTHER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="isDel" column="is_del" jdbcType="OTHER"/>
</resultMap>
...
<update id="updateOrder">
update user_course_order set status = #{status} where order_no = #{orderNo} and is_del = 0
</update>
<update id="deleteOrder">
update user_course_order set is_del= 1 where order_no = #{orderNo}
</update>
<select id="getOrdersByUserId" resultMap="orderMap">
select * from user_course_order where is_del = 0 and user_id = #{userId}
</select>
</mapper>
com.renda.mapper.OrderDao
@Service
public interface OrderDao {
...
/**
* 修改订单状态
*
* @param orderNo 订单编号
* @param status 订单状态 0已创建 10已支付 20已完成 30已取消 40已过期
* @return 受影响的行数
*/
Integer updateOrder(@Param("orderNo") String orderNo, @Param("status") int status);
/**
* 删除订单
*
* @param orderNo 订单编号
* @return 受影响的行数
*/
Integer deleteOrder(@Param("orderNo") String orderNo);
/**
* 查询登录用户的全部订单
*
* @param userId 用户编号
* @return 所有订单
*/
List<UserCourseOrder> getOrdersByUserId(@Param("userId") String userId);
}
com.renda.order.OrderService
public interface OrderService
...
Integer updateOrder(String orderNo, int status);
Integer deleteOrder(String orderNo);
List<UserCourseOrder> getOrdersByUserId(String userId);
}
com.renda.order.impl.OrderServiceImpl
@Service // Dubbo 暴露服务
public class OrderServiceImpl implements OrderService {
...
@Override
public Integer updateOrder(String orderNo, int status) {
return orderDao.updateOrder(orderNo,status);
}
@Override
public Integer deleteOrder(String orderNo) {
return orderDao.deleteOrder(orderNo);
}
@Override
public List<UserCourseOrder> getOrdersByUserId(String userId) {
return orderDao.getOrdersByUserId(userId);
}
}
com.renda.order.OrderService
public interface OrderService {
...
Integer updateOrder(String orderNo, int status);
Integer deleteOrder(@Param("orderNo") String orderNo);
List<UserCourseOrder> getOrdersByUserId(String userId);
}
com.renda.order.controller.OrderController
@RestController
@RequestMapping("order")
public class OrderController {
...
@GetMapping("updateOrder")
public Integer updateOrder(String orderNo, Integer status) {
System.out.println("订单编号 = " + orderNo);
System.out.println("状态编码 = " + status);
Integer integer = orderService.updateOrder(orderNo, status);
System.out.println("订单更新 = " + integer);
return integer;
}
@GetMapping("deleteOrder/{orderno}")
public Integer deleteOrder(@PathVariable("orderno") String orderno) {
Integer integer = orderService.deleteOrder(orderno);
return integer;
}
@GetMapping("getOrdersByUserId/{userid}")
public List<UserCourseOrder> getOrdersByUserId(@PathVariable("userid") String userid) {
List<UserCourseOrder> list = orderService.getOrdersByUserId(userid);
return list;
}
}
浏览器访问:
http://localhost:8002/order/updateOrder?orderNo=1&status=20
http://localhost:8002/order/getOrdersByUserId/100030018
http://localhost:8002/order/deleteOrder/1
功能描述:
1、课程Id和评论内容都不能为空。
2、保存留言时需要保存用户的 ID,以便于查看留言时候判断留言是否是某个用户写的。
功能接口:/course/comment/saveCourseComment?courseid={courseid}&userid={userid}&username={username}&comment={comment}
com.renda.entity.CourseComment
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class CourseComment implements Serializable {
private static final long serialVersionUID = 922554392538715061L;
...
}
com.renda.entity.CourseCommentFavoriteRecord
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class CourseCommentFavoriteRecord implements Serializable {
private static final long serialVersionUID = ;
...
}
com.renda.mapper.CourseCommentDao
@Service
public interface CourseCommentDao {
/**
* 保存留言
*
* @param comment 留言内容对象
* @return 受影响的行数
*/
Integer saveComment(CourseComment comment);
}
src\main\resources\com\renda\mapper\CourseCommentDao.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.renda.mapper.CourseCommentDao">
<resultMap type="com.renda.entity.CourseComment" id="commentMap">
<result property="id" column="cc_id" jdbcType="OTHER"/>
<result property="courseId" column="course_id" jdbcType="INTEGER"/>
<result property="sectionId" column="section_id" jdbcType="INTEGER"/>
<result property="lessonId" column="lesson_id" jdbcType="INTEGER"/>
<result property="userId" column="cc_user_id" jdbcType="INTEGER"/>
<result property="userName" column="user_name" jdbcType="VARCHAR"/>
<result property="parentId" column="parent_id" jdbcType="INTEGER"/>
<result property="isTop" column="is_top" jdbcType="OTHER"/>
<result property="comment" column="comment" jdbcType="VARCHAR"/>
<result property="likeCount" column="like_count" jdbcType="INTEGER"/>
<result property="isReply" column="is_reply" jdbcType="OTHER"/>
<result property="type" column="type" jdbcType="INTEGER"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="createTime" column="cc_create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="cc_update_time" jdbcType="TIMESTAMP"/>
<result property="isDel" column="cc_is_del" jdbcType="OTHER"/>
<result property="lastOperator" column="last_operator" jdbcType="INTEGER"/>
<result property="isNotify" column="is_notify" jdbcType="OTHER"/>
<result property="markBelong" column="mark_belong" jdbcType="OTHER"/>
<result property="replied" column="replied" jdbcType="OTHER"/>
<!-- N 个点赞 -->
<collection property="favoriteRecords" ofType="com.renda.entity.CourseCommentFavoriteRecord">
<result property="id" column="ccfr_id" jdbcType="OTHER"/>
<result property="userId" column="ccfr_user_id" jdbcType="INTEGER"/>
<result property="commentId" column="comment_id" jdbcType="INTEGER"/>
<result property="isDel" column="ccfr_is_del" jdbcType="OTHER"/>
<result property="createTime" column="ccfr_create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="ccfr_update_time" jdbcType="TIMESTAMP"/>
</collection>
</resultMap>
<!-- 保存留言 -->
<insert id="saveComment">
insert into `course_comment`(`course_id`,`section_id`,`lesson_id`,`user_id`,`user_name`,`parent_id`,`is_top`,`comment`,`like_count`,`is_reply`,`type`,`status`,`create_time`,`update_time`,`is_del`,`last_operator`,`is_notify`,`mark_belong`,`replied`)
values
(#{courseId},#{sectionId},#{lessonId},#{userId},#{userName},#{parentId},0,#{comment},0,0,#{type},0,sysdate(),sysdate(),0,#{lastOperator},1,0,0)
</insert>
</mapper>
com.renda.comment.CommentService
public interface CommentService {
Integer saveComment(CourseComment comment);
}
com.renda.comment.impl.CommentServiceImpl
@Service // Dubbo 暴露服务
public class CommentServiceImpl implements CommentService {
@Autowired
private CourseCommentDao courseCommentDao;
@Override
public Integer saveComment(CourseComment comment) {
return courseCommentDao.saveComment(comment);
}
}
src\test\java\comment\TestComment.java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring/spring-*.xml"})
public class TestComment {
@Autowired
private CommentService commentService;
@Test
public void save() {
CourseComment comment = new CourseComment();
// 课程编号
comment.setCourseId();
// 章节编号
comment.setSectionId();
// 小节编号
comment.setLessonId();
// 用户编号
comment.setUserId();
// 用户昵称
comment.setUserName("Renda");
// 没有父 id
comment.setParentId();
// 留言内容
comment.setComment("What's up!");
// 0 用户留言
comment.setType();
// 最后操作的用户编号
comment.setLastOperator();
Integer i = commentService.saveComment(comment);
System.out.println(i);
}
}
com.renda.comment.CommentService
public interface CommentService {
Integer saveComment(CourseComment comment);
}
com.renda.comment.controller.CommentController
@RestController
@RequestMapping("course")
public class CommentController {
// 远程消费
@Reference
private CommentService commentService;
@GetMapping("comment/saveCourseComment")
public Object saveCourseComment(Integer courseid, Integer userid, String username, String comment) throws UnsupportedEncodingException {
username = new String(username.getBytes("ISO-8859-1"), "UTF-8");
comment = new String(comment.getBytes("ISO-8859-1"), "UTF-8");
System.out.println("昵称:" + username);
CourseComment courseComment = new CourseComment();
// 课程编号
courseComment.setCourseId(courseid);
// 章节编号 (预留字段,为项目的 2.0 版本保留)
courseComment.setSectionId();
// 小节编号(预留字段,为项目的 2.0 版本保留)
courseComment.setLessonId();
// 用户编号
courseComment.setUserId(userid);
// 用户昵称
courseComment.setUserName(username);
// 没有父 id(预留字段,为项目的 2.0 版本保留)
courseComment.setParentId();
// 留言内容
courseComment.setComment(comment);
// 0 用户留言(预留字段,为项目的 2.0 版本保留)
courseComment.setType();
// 最后操作的用户编号
courseComment.setLastOperator(userid);
return commentService.saveComment(courseComment);
}
}
浏览器访问:
http://localhost:8002/course/comment/saveCourseComment?courseid=8&userid=100030011&username=Renda&comment=大家好
某门课程的全部留言
功能描述:
1、通过课程 Id、页号和用户 ID 分页获取留言信息,每页默认条数是 20 条;当用户 Id 不为空的时候,前端标识出此用户点赞的留言。
2、留言中返回重要内容中包括:评论内容、本人是否点赞、用户昵称、是否点过赞标识和点赞数量。
3、留言按照点赞数量和创建时间的倒序显示。
功能接口:
/course/comment/getCourseCommentList/{courseid}/{pageIndex}/{pageSize}
com.renda.mapper.CourseCommentDao
@Service
public interface CourseCommentDao {
...
/**
* 某个课程的全部留言(分页)
*
* @param courseid 课程编号
* @param offset 数据偏移
* @param pageSize 每页条目数
* @return 留言集合
*/
List<CourseComment> getCommentsByCourseId(@Param("courseid")Integer courseid, @Param("offset")Integer offset, @Param("pageSize")Integer pageSize);
}
src\main\resources\com\renda\mapper\CourseCommentDao.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.renda.mapper.CourseCommentDao">
...
<select id="getCommentsByCourseId" resultMap="commentMap">
select
cc.id cc_id,`course_id`,`section_id`,`lesson_id`,cc.user_id cc_user_id,`user_name`,`parent_id`,`is_top`,`comment`,`like_count`,`is_reply`,`type`,`status`,cc.create_time cc_create_time ,cc.update_time cc_update_time,
cc.is_del cc_is_del,`last_operator`,`is_notify`,`mark_belong`,`replied`,ccfr.id ccfr_id,ccfr.user_id ccfr_user_id,comment_id,ccfr.is_del ccfr_is_del,ccfr.create_time ccfr_create_time,ccfr.update_time ccfr_update_time
from course_comment cc left join (select * from course_comment_favorite_record where is_del = 0) ccfr on cc.id = ccfr.comment_id
where cc.is_del = 0 and course_id = #{courseid}
order by is_top desc , like_count desc , cc.create_time desc
limit #{offset}, #{pageSize}
</select>
</mapper>
com.renda.comment.CommentService
public interface CommentService {
private CourseCommentDao courseCommentDao;
...
List<CourseComment> getCommentsByCourseId(Integer courseid, Integer offset, Integer pageSize);
}
com.renda.comment.impl.CommentServiceImpl
@Service // Dubbo 暴露服务
public class CommentServiceImpl implements CommentService {
@Autowired
private CourseCommentDao courseCommentDao;
...
@Override
public List<CourseComment> getCommentsByCourseId(Integer courseid, Integer offset, Integer pageSize) {
return courseCommentDao.getCommentsByCourseId(courseid, offset, pageSize);
}
}
src\test\java\comment\TestComment.java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring/spring-*.xml"})
public class TestComment {
@Autowired
private CommentService commentService;
...
@Test
public void getCommentsByCourseId() {
int pageSize = ;
// 页码(第几页)
int pageIndex = ;
List<CourseComment> list = commentService.getCommentsByCourseId(, (pageIndex - ) * pageSize, pageSize);
for (int i = ; i < list.size(); i++) {
CourseComment comment = list.get(i);
System.out.println((i + ) + " 楼 【" + comment.getUserName() + "】 说:" + comment.getComment());
}
}
}
com.renda.comment.CommentService
public interface CommentService {
...
List<CourseComment> getCommentsByCourseId(Integer courseid, Integer offset, Integer pageSize);
}
com.renda.comment.controller.CommentController
@RestController
@RequestMapping("course")
public class CommentController {
// 远程消费
@Reference
private CommentService commentService;
...
@GetMapping("comment/getCourseCommentList/{courseid}/{pageIndex}/{pageSize}")
public List<CourseComment> getCommentsByCourseId(@PathVariable("courseid") Integer courseid, @PathVariable("pageIndex") Integer pageIndex, @PathVariable("pageSize") Integer pageSize) {
int offset = (pageIndex - ) * pageSize;
List<CourseComment> list = commentService.getCommentsByCourseId(courseid, offset, pageSize);
System.out.println("获取第" + courseid + "门课程的留言:共计" + list.size() + "条");
return list;
}
}
浏览器访问:
http://localhost:8002/course/comment/getCourseCommentList/1/2/20
功能描述:
点赞
1、先根据用户 ID 和留言 ID 查看留言是否存在点赞信息;如果存在则更新删除状态,否则保存点赞信息。
2、保存点赞后,需要更新对应留言的点赞数量。
取消赞
1、通过用户 ID 和留言 ID 获取用户的点赞信息。
2、然后将记录进行逻辑删除,然后更新对应记录的点赞数量。
功能接口:
点赞
/course/comment/saveFavorite/{commentid}/{userid}
取消赞
/course/comment/cancelFavorite/{commentid}/{userid}
com.renda.mapper.CourseCommentDao
@Service
public interface CourseCommentDao {
...
/**
* 查看某个用户的某条留言是否点过赞
*
* @param comment_id 留言编号
* @param userid 用户编号
* @return 0:没点过赞,1:点过赞
*/
Integer existsFavorite(@Param("cid") Integer comment_id, @Param("uid") Integer userid);
/**
* 保存点赞信息
*
* @param comment_id 留言编号
* @param userid 用户编号
* @return 0:保存失败,1:保存成功
*/
Integer saveCommentFavorite(@Param("cid") Integer comment_id, @Param("uid") Integer userid);
/**
* 更新点赞信息的状态(将 is_del=0,表示已赞)
*
* @param status 状态,0:已赞,1:取消赞
* @param comment_id 留言编号
* @param userid 用户编号
* @return 0:保存失败,1:保存成功
*/
Integer updateFavoriteStatus(@Param("status") Integer status, @Param("cid") Integer comment_id, @Param("uid") Integer userid);
/**
* 更新点赞的数量
*
* @param x +1 的话,赞的数量增加,-1 的话,赞的数量减少
* @param comment_id 某条留言的编号
* @return 0:保存失败,1:保存成功
*/
Integer updateLikeCount(@Param("x") Integer x, @Param("comment_id") Integer comment_id);
}
src\main\resources\com\renda\mapper\CourseCommentDao.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.renda.mapper.CourseCommentDao">
...
<!-- 查看某个用户的某条留言是否点过赞 -->
<select id="existsFavorite" resultType="Integer">
select count(*) from course_comment_favorite_record where comment_id = #{cid} and user_id = #{uid}
</select>
<!-- 没有点过赞,保存点赞信息 -->
<insert id="saveCommentFavorite">
insert into `course_comment_favorite_record` (user_id,`comment_id`,`is_del`,`create_time`,`update_time`)
values (#{uid},#{cid},0,sysdate(),sysdate())
</insert>
<!-- 修改点赞的状态,0 表示点赞,1 表示取消赞 -->
<update id="updateFavoriteStatus">
update course_comment_favorite_record set is_del = #{status} where comment_id = #{cid} and user_id = #{uid}
</update>
<!-- 点赞之后,赞的数量 +1;取消赞之后,赞的数量 -1 -->
<update id="updateLikeCount">
update course_comment set like_count = like_count + #{x} where id = #{comment_id}
</update>
</mapper>
com.renda.comment.CommentService
public interface CommentService {
...
/**
* 点赞
*
* @param comment_id 留言编号
* @param userid 用户编号
* @return 0:保存失败,1:保存成功
*/
Integer saveFavorite(Integer comment_id, Integer userid);
/**
* 取消赞
*
* @param comment_id 留言编号
* @param userid 用户编号
* @return 0:保存失败,1:保存成功
*/
Integer cancelFavorite(Integer comment_id, Integer userid);
}
com.renda.comment.impl.CommentServiceImpl
@Service // Dubbo 暴露服务
public class CommentServiceImpl implements CommentService {
@Autowired
private CourseCommentDao courseCommentDao;
...
@Override
public Integer saveFavorite(Integer comment_id, Integer userid) {
Integer i = courseCommentDao.existsFavorite(comment_id, userid);
int i1;
int i2;
if (i == ) {
// 没点过赞
i1 = courseCommentDao.saveCommentFavorite(comment_id, userid);
} else {
i1 = courseCommentDao.updateFavoriteStatus(, comment_id, userid);
}
i2 = courseCommentDao.updateLikeCount(, comment_id);
if (i1 == || i2 == ) {
throw new RuntimeException("点赞失败");
}
return comment_id;
}
@Override
public Integer cancelFavorite(Integer comment_id, Integer userid) {
Integer i1 = courseCommentDao.updateFavoriteStatus(, comment_id, userid);
Integer i2 = courseCommentDao.updateLikeCount(-, comment_id);
if (i1 == || i2 == ) {
throw new RuntimeException("取消赞失败");
}
return i2;
}
}
src\test\java\comment\TestComment.java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring/spring-*.xml"})
public class TestComment {
@Autowired
private CommentService commentService;
...
@Test
public void saveFavorite() {
Integer i = commentService.saveFavorite(, );
System.out.println("i = " + i);
}
@Test
public void cancelFavorite() {
Integer i = commentService.cancelFavorite(, );
System.out.println("i = " + i);
}
}
com.renda.comment.CommentService
public interface CommentService {
...
Integer saveFavorite(Integer comment_id,Integer userid);
Integer cancelFavorite(Integer comment_id,Integer userid);
}
com.renda.comment.controller.CommentController
@RestController
@RequestMapping("course")
public class CommentController {
// 远程消费
@Reference
private CommentService commentService;
...
// 点赞
@GetMapping("comment/saveFavorite/{commentid}/{userid}")
public Integer saveFavorite(@PathVariable("commentid") Integer commentid, @PathVariable("userid") Integer userid) {
return commentService.saveFavorite(commentid, userid);
}
// 取消赞
@GetMapping("comment/cancelFavorite/{commentid}/{userid}")
public Integer cancelFavorite(@PathVariable("commentid") Integer commentid, @PathVariable("userid") Integer userid) {
return commentService.cancelFavorite(commentid, userid);
}
}
浏览器访问:
http://localhost:8002/course/comment/saveFavorite/1/123
http://localhost:8002/course/comment/cancelFavorite/1/123