有用户评价功能,用户将评价信息写入评价信息表,给出前后置条件前置条件:评价信息(appriseInfo)符合表8-2用户评价数据项描述; 后置条件: (1) 用户将评价信息(appriseInfo)与评价信息表(AppriseInfoList)建立关联; (2) 若建立关联成功,返回ture,否则,返回false. 方法: AppriseInfoController::addAppraiseInfo(AppriseInfo appriseInfo):Boolean 请根据前后置条件,为该方法写出伪码
伪码如下:
- 验证前置条件 if (appriseInfo符合表8-2用户评价数据项描述) {
-
将评价信息(appriseInfo)与评价信息表(AppriseInfoList)建立关联 AppriseInfoList.add(appriseInfo);
-
} else {返回 true;
-
}返回 false;
方法名称:saveAppriseInfo 参数:appriseInfo 评价信息对象 返回值:Boolean
// 首先判断评价信息是否合法 if (appriseInfo is not null and appriseInfo is valid) { // 评价信息合法,建立关联 try { AppriseInfoList.add(appriseInfo); return true; } catch (Exception e) { // 关联建立失败,返回false return false; } } else { // 评价信息不合法,返回false return false; }
伪码:
function insertAppraiseInfo(appraiseInfo){
//获取评价信息数据项
let userId = appraiseInfo.getUserId();
let productId = appraiseInfo.getProductId();
let content = appraiseInfo.getContent();
let createTime = appraiseInfo.getCreateTime();
//将评价信息插入到评价信息表中
let sql = "INSERT INTO AppraiseInfoList (UserId, ProductId, Content, CreateTime)
VALUES (?,?,?,?)";
let params = [userId, productId, content, createTime];
let result = executeSQL(sql, params);
if(result){
return true;
}else{
return false;
} }
SQL语句:
INSERT INTO AppraiseInfoList (UserId, ProductId, Content, CreateTime) VALUES (?, ?, ?, ?);
有一个删除评论的功能,用户可以删除三天以内的评价信息,请为该功能设计出controller、service、dao三层的方法
Controller层:
@RestController
@RequestMapping("/comments")
public class CommentController {
@Autowired
private CommentService commentService;
@DeleteMapping("/{commentId}")
public ResponseEntity<String> deleteComment(@PathVariable Long commentId) {
boolean result = commentService.deleteComment(commentId);
if (result) {
return ResponseEntity.ok("Delete comment successfully");
} else {
return ResponseEntity.badRequest().body("Failed to delete comment");
}
}
}
Service层:
@Service
public class CommentServiceImpl implements CommentService {
@Autowired
private CommentDao commentDao;
@Override
public boolean deleteComment(Long commentId) {
Comment comment = commentDao.findById(commentId);
if (comment != null && isWithinThreeDays(comment)) {
commentDao.delete(comment);
return true;
}
return false;
}
// 判断评论是否在三天之内
private boolean isWithinThreeDays(Comment comment) {
Date now = new Date();
long diff = now.getTime() - comment.getCreateTime().getTime();
return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS) <= 3;
}
}
Dao层:
@Repository
public class CommentDaoImpl implements CommentDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public Comment findById(Long commentId) {
String sql = "SELECT * FROM comments WHERE id = ?";
List<Comment> commentList = jdbcTemplate.query(sql, new Object[]{commentId}, new CommentRowMapper());
return commentList.isEmpty() ? null : commentList.get(0);
}
@Override
public void delete(Comment comment) {
String sql = "DELETE FROM comments WHERE id = ?";
jdbcTemplate.update(sql, comment.getId());
}
private class CommentRowMapper implements RowMapper<Comment> {
@Override
public Comment mapRow(ResultSet resultSet, int i) throws SQLException {
Comment comment = new Comment();
comment.setId(resultSet.getLong("id"));
comment.setContent(resultSet.getString("content"));
comment.setCreateTime(resultSet.getDate("create_time"));
// 设置其他属性
return comment;
}
}
}
有一个用户删除评价的功能,该功能仅可删除三天以内用户评价的内容,可通过用户ID找到对应评价并删除, 前后置条件: 前置条件:用户ID(UserID)符合表8-2用户评价数据项描述 后置条件: (1)若用户ID(userID)与该个人评价信息(personAppriseInfo)和综合评价信息表(AppriseInfoList)的关联一致,且评价日期和当前日期之差在3天以内,则取消该个人评价信息(personAppriseInfo)和综合评价信息表(AppriseInfoList)的关联关系,删除该关系对其它实例无关联,返回true。 (2)若用户ID(userID)与该个人评价信息(personAppriseInfo)和综合评价信息表(AppriseInfoList)的关联不一致,则返回false 方法:AppraiseInfoController::removeAppraiseInfoByUserID(UserID userID):Boolean 请为该方法写出Controller层的伪码
Controller层伪码如下:
class AppraiseInfoController {
// 根据用户ID删除评价信息
function removeAppraiseInfoByUserID(UserID userID) {
// 前置条件:用户ID符合表8-2用户评价数据项描述
if (isValidUserID(userID)) {
// 获取该用户个人评价信息和综合评价信息
PersonAppriseInfo personAppriseInfo = getPersonAppriseInfoByUserID(userID);
AppriseInfoList appriseInfoList = getAppriseInfoListByUserID(userID);
// 若用户ID与该个人评价信息和综合评价信息表的关联一致
if (isAssociated(userID, personAppriseInfo, appriseInfoList) && isWithin3Days(personAppriseInfo.getDate())) {
// 取消该个人评价信息和综合评价信息表的关联关系
removeAssociation(personAppriseInfo, appriseInfoList);
// 返回true
return true;
} else {
// 若不符合条件则返回false
return false;
}
} else {
// 若用户ID无效则抛出异常
throw new InvalidUserIDException('Invalid user ID');
}
}
// 判断用户ID是否有效
function isValidUserID(UserID userID) {
// 判断逻辑
}
// 根据用户ID获取个人评价信息
function getPersonAppriseInfoByUserID(UserID userID) {
// 获取逻辑
}
// 根据用户ID获取综合评价信息
function getAppriseInfoListByUserID(UserID userID) {
// 获取逻辑
}
// 判断用户ID与个人评价信息和综合评价信息表的关联是否一致
function isAssociated(UserID userID, PersonAppriseInfo personAppriseInfo, AppriseInfoList appriseInfoList) {
// 判断逻辑
}
// 判断评价日期是否在3天以内
function isWithin3Days(Date date) {
// 判断逻辑
}
// 取消个人评价信息和综合评价信息表的关联关系
function removeAssociation(PersonAppriseInfo personAppriseInfo, AppriseInfoList appriseInfoList) {
// 删除逻辑
}
}