haungxing
2 months ago
12 changed files with 354 additions and 0 deletions
@ -0,0 +1,64 @@
|
||||
package com.hnac.gglm.bigmodel.maintenance.controller; |
||||
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||
import com.hnac.gglm.bigmodel.maintenance.entity.QuestionAnswerCommentEntity; |
||||
import com.hnac.gglm.bigmodel.maintenance.service.QuestionAnswerCommentService; |
||||
import com.hnac.gglm.bigmodel.maintenance.vo.AnswerCommentRequest; |
||||
import com.hnac.gglm.bigmodel.maintenance.vo.AnswerPraiseRequest; |
||||
import io.swagger.annotations.Api; |
||||
import io.swagger.annotations.ApiOperation; |
||||
import io.swagger.annotations.ApiParam; |
||||
import lombok.AllArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springframework.web.bind.annotation.*; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @Author: ypj |
||||
* @Date: 2024/9/21 13:27 |
||||
*/ |
||||
@RestController |
||||
@Slf4j |
||||
@RequestMapping("/question/") |
||||
@AllArgsConstructor |
||||
@Api(value = "问题评论管理", tags = "问题评论管理") |
||||
public class QuestionAnswerCommentController { |
||||
private final QuestionAnswerCommentService questionAnswerCommentService; |
||||
|
||||
@PostMapping("/comment") |
||||
@ApiOperation(value = "评论") |
||||
@ApiOperationSupport(order = 1) |
||||
public R comment(@RequestBody AnswerCommentRequest req) { |
||||
return R.status(questionAnswerCommentService.comment(req)); |
||||
} |
||||
|
||||
@PostMapping("/praise") |
||||
@ApiOperation(value = "点赞") |
||||
@ApiOperationSupport(order = 2) |
||||
public R praise(@RequestBody AnswerPraiseRequest req) { |
||||
return R.status(questionAnswerCommentService.praise(req)); |
||||
} |
||||
|
||||
@PostMapping("/resetPraise") |
||||
@ApiOperation(value = "取消点赞") |
||||
@ApiOperationSupport(order = 3) |
||||
public R<Boolean> resetPraise(@RequestBody AnswerPraiseRequest req) { |
||||
return R.status(questionAnswerCommentService.resetPraise(req)); |
||||
} |
||||
|
||||
@GetMapping("/listByQuestionId") |
||||
@ApiOperation(value = "根据问题id获取评论列表") |
||||
@ApiOperationSupport(order = 4) |
||||
public R<List<QuestionAnswerCommentEntity>> listByQuestionId(@RequestParam @ApiParam("问题id") String questionId) { |
||||
return R.data(questionAnswerCommentService.listByQuestionId(questionId)); |
||||
} |
||||
|
||||
@GetMapping("/praiseCount") |
||||
@ApiOperation(value = "点赞数") |
||||
@ApiOperationSupport(order = 5) |
||||
public R<Long> praiseCount(String questionId) { |
||||
return R.data(questionAnswerCommentService.praiseCount(questionId)); |
||||
} |
||||
} |
@ -0,0 +1,52 @@
|
||||
package com.hnac.gglm.bigmodel.maintenance.entity; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField; |
||||
import com.baomidou.mybatisplus.annotation.TableLogic; |
||||
import com.baomidou.mybatisplus.annotation.TableName; |
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Builder; |
||||
import lombok.Data; |
||||
import org.springblade.core.tenant.mp.TenantEntity; |
||||
import org.springframework.data.annotation.Transient; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
/** |
||||
* @Author: ypj |
||||
* @Date: 2024/9/21 11:07 |
||||
*/ |
||||
@Data |
||||
@TableName("question_answer_comment") |
||||
@ApiModel |
||||
public class QuestionAnswerCommentEntity extends TenantEntity implements Serializable { |
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
@ApiModelProperty("对话id") |
||||
@TableField("chat_id") |
||||
private String chatId; |
||||
|
||||
@ApiModelProperty("问题id") |
||||
@TableField("question_id") |
||||
private String questionId; |
||||
|
||||
@ApiModelProperty("用户id") |
||||
@TableField("user_id") |
||||
private Long userId; |
||||
|
||||
@ApiModelProperty("用户账号") |
||||
@TableField(exist = false) |
||||
private String userAccount; |
||||
|
||||
@ApiModelProperty("用户名") |
||||
@TableField(exist = false) |
||||
private String userName; |
||||
|
||||
@ApiModelProperty("点赞") |
||||
@TableField("praise") |
||||
private Integer praise; |
||||
|
||||
@ApiModelProperty("评论内容") |
||||
@TableField("content") |
||||
private String content; |
||||
} |
@ -0,0 +1,11 @@
|
||||
package com.hnac.gglm.bigmodel.maintenance.mapper; |
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
import com.hnac.gglm.bigmodel.maintenance.entity.QuestionAnswerCommentEntity; |
||||
|
||||
/** |
||||
* @Author: ypj |
||||
* @Date: 2024/9/21 13:31 |
||||
*/ |
||||
public interface QuestionAnswerCommentMapper extends BaseMapper<QuestionAnswerCommentEntity> { |
||||
} |
@ -0,0 +1,26 @@
|
||||
package com.hnac.gglm.bigmodel.maintenance.service; |
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService; |
||||
import com.hnac.gglm.bigmodel.maintenance.entity.QuestionAnswerCommentEntity; |
||||
import com.hnac.gglm.bigmodel.maintenance.vo.AnswerCommentRequest; |
||||
import com.hnac.gglm.bigmodel.maintenance.vo.AnswerPraiseRequest; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @Author: ypj |
||||
* @Date: 2024/9/21 13:29 |
||||
*/ |
||||
public interface QuestionAnswerCommentService extends IService<QuestionAnswerCommentEntity> { |
||||
QuestionAnswerCommentEntity getComment(Long userId, String questionId); |
||||
|
||||
Boolean comment(AnswerCommentRequest req); |
||||
|
||||
Boolean praise(AnswerPraiseRequest req); |
||||
|
||||
List<QuestionAnswerCommentEntity> listByQuestionId(String questionId); |
||||
|
||||
Long praiseCount(String questionId); |
||||
|
||||
Boolean resetPraise(AnswerPraiseRequest req); |
||||
} |
@ -0,0 +1,95 @@
|
||||
package com.hnac.gglm.bigmodel.maintenance.service.impl; |
||||
|
||||
import com.baomidou.dynamic.datasource.annotation.DS; |
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import com.hnac.gglm.bigmodel.maintenance.entity.QuestionAnswerCommentEntity; |
||||
import com.hnac.gglm.bigmodel.maintenance.mapper.QuestionAnswerCommentMapper; |
||||
import com.hnac.gglm.bigmodel.maintenance.service.QuestionAnswerCommentService; |
||||
import com.hnac.gglm.bigmodel.maintenance.vo.AnswerCommentRequest; |
||||
import com.hnac.gglm.bigmodel.maintenance.vo.AnswerPraiseRequest; |
||||
import lombok.AllArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springblade.core.secure.utils.AuthUtil; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springblade.core.tool.utils.ObjectUtil; |
||||
import org.springblade.system.user.entity.User; |
||||
import org.springblade.system.user.feign.IUserClient; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @Author: ypj |
||||
* @Date: 2024/9/21 13:32 |
||||
*/ |
||||
@Service |
||||
@Slf4j |
||||
@AllArgsConstructor |
||||
@DS("hznlm") |
||||
public class QuestionAnswerCommentServiceImpl extends ServiceImpl<QuestionAnswerCommentMapper, QuestionAnswerCommentEntity> implements QuestionAnswerCommentService { |
||||
private final IUserClient userClient; |
||||
|
||||
@Override |
||||
public QuestionAnswerCommentEntity getComment(Long userId, String questionId) { |
||||
LambdaQueryWrapper<QuestionAnswerCommentEntity> queryWrapper = Wrappers.<QuestionAnswerCommentEntity>lambdaQuery() |
||||
.eq(QuestionAnswerCommentEntity::getQuestionId, questionId) |
||||
.eq(QuestionAnswerCommentEntity::getUserId, userId).last("limit 1"); |
||||
return this.getOne(queryWrapper); |
||||
} |
||||
|
||||
@Override |
||||
public Boolean comment(AnswerCommentRequest req) { |
||||
QuestionAnswerCommentEntity entity = getComment(AuthUtil.getUserId(), |
||||
req.getQuestionId()); |
||||
if (ObjectUtil.isEmpty(entity)) { |
||||
entity = req.toEntity(); |
||||
} |
||||
return this.saveOrUpdate(entity); |
||||
} |
||||
|
||||
@Override |
||||
public Boolean praise(AnswerPraiseRequest req) { |
||||
QuestionAnswerCommentEntity entity = getComment(AuthUtil.getUserId(), |
||||
req.getQuestionId()); |
||||
if (ObjectUtil.isNotEmpty(entity)) { |
||||
entity.setPraise(req.getPraise()); |
||||
return this.updateById(entity); |
||||
} |
||||
return Boolean.FALSE; |
||||
} |
||||
|
||||
@Override |
||||
public List<QuestionAnswerCommentEntity> listByQuestionId(String questionId) { |
||||
List<QuestionAnswerCommentEntity> list = this.list(Wrappers.<QuestionAnswerCommentEntity>lambdaQuery() |
||||
.eq(QuestionAnswerCommentEntity::getQuestionId, questionId) |
||||
.orderByAsc(QuestionAnswerCommentEntity::getCreateTime)); |
||||
list.forEach(item -> { |
||||
R<User> user = userClient.userInfoById(item.getUserId()); |
||||
if (user.isSuccess() && user.getData() != null) { |
||||
item.setUserName(user.getData().getName()); |
||||
item.setUserAccount(user.getData().getAccount()); |
||||
} |
||||
}); |
||||
return list; |
||||
} |
||||
|
||||
@Override |
||||
public Long praiseCount(String questionId) { |
||||
return this.count(Wrappers.<QuestionAnswerCommentEntity>lambdaQuery() |
||||
.eq(QuestionAnswerCommentEntity::getQuestionId, questionId) |
||||
.eq(QuestionAnswerCommentEntity::getPraise, 1)); |
||||
} |
||||
|
||||
@Override |
||||
public Boolean resetPraise(AnswerPraiseRequest req) { |
||||
QuestionAnswerCommentEntity entity = getComment(AuthUtil.getUserId(), |
||||
req.getQuestionId()); |
||||
if (ObjectUtil.isNotEmpty(entity)) { |
||||
entity.setPraise(0); |
||||
return this.updateById(entity); |
||||
} |
||||
return Boolean.FALSE; |
||||
} |
||||
} |
@ -0,0 +1,33 @@
|
||||
package com.hnac.gglm.bigmodel.maintenance.vo; |
||||
|
||||
import com.hnac.gglm.bigmodel.maintenance.entity.QuestionAnswerCommentEntity; |
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
import org.springblade.core.secure.utils.AuthUtil; |
||||
|
||||
/** |
||||
* @Author: ypj |
||||
* @Date: 2024/9/21 13:38 |
||||
*/ |
||||
@Data |
||||
@ApiModel(value = "评论请求") |
||||
public class AnswerCommentRequest { |
||||
@ApiModelProperty(value = "对话id") |
||||
private String chartId; |
||||
|
||||
@ApiModelProperty(value = "问题id") |
||||
private String questionId; |
||||
|
||||
@ApiModelProperty(value = "评论内容") |
||||
private String content; |
||||
|
||||
public QuestionAnswerCommentEntity toEntity() { |
||||
QuestionAnswerCommentEntity entity = new QuestionAnswerCommentEntity(); |
||||
entity.setChatId(chartId); |
||||
entity.setQuestionId(questionId); |
||||
entity.setContent(content); |
||||
entity.setUserId(AuthUtil.getUserId()); |
||||
return entity; |
||||
} |
||||
} |
@ -0,0 +1,23 @@
|
||||
package com.hnac.gglm.bigmodel.maintenance.vo; |
||||
|
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: ypj |
||||
* @Date: 2024/9/21 13:49 |
||||
*/ |
||||
@Data |
||||
@ApiModel(value = "点赞请求") |
||||
public class AnswerPraiseRequest { |
||||
|
||||
@ApiModelProperty(value = "对话id") |
||||
private String chartId; |
||||
|
||||
@ApiModelProperty(value = "问题id") |
||||
private String questionId; |
||||
|
||||
@ApiModelProperty(value = "点赞,0取消点赞,1点赞") |
||||
private Integer praise; |
||||
} |
Loading…
Reference in new issue