【无标题】

有用户评价功能,用户将评价信息写入评价信息表,给出前后置条件前置条件:评价信息(appriseInfo)符合表8-2用户评价数据项描述;
后置条件:
(1)	用户将评价信息(appriseInfo)与评价信息表(AppriseInfoList)建立关联;
(2)	若建立关联成功,返回ture,否则,返回false.
方法:
AppriseInfoController::addAppraiseInfo(AppriseInfo appriseInfo):Boolean
请根据前后置条件,为该方法写出伪码

伪码如下:

  1. 验证前置条件 if (appriseInfo符合表8-2用户评价数据项描述) {
  2.   将评价信息(appriseInfo)与评价信息表(AppriseInfoList)建立关联
      AppriseInfoList.add(appriseInfo);
    
  3.   返回 true;
    
    } else {
  4.   返回 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) {
        // 删除逻辑
    }
}

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

brittany•fuleiting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值