parent
5dd7ee034e
commit
340b83b4e2
@ -0,0 +1,32 @@
|
||||
package com.ruoyi.im.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@TableName("im_user_black")
|
||||
public class ImUserBlack {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/** 拉黑人uid */
|
||||
private Long fromUid;
|
||||
|
||||
/** 被拉黑uid */
|
||||
private Long toUid;
|
||||
|
||||
@TableField(value = "create_time")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
|
||||
private Date createTime;
|
||||
|
||||
@TableField(value = "update_time")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
|
||||
private Date updateTime;
|
||||
|
||||
/** 若依逻辑删除 0正常 1删除 */
|
||||
@TableField(value = "del_flag")
|
||||
private Integer delFlag;
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package com.ruoyi.im.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.ruoyi.im.domain.ImUserBlack;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
public interface ImUserBlackMapper extends BaseMapper<ImUserBlack> {
|
||||
|
||||
/**
|
||||
* 判断 receiver 是否拉黑 sender
|
||||
* @param receiver 接收方A
|
||||
* @param sender 发送方B
|
||||
* @return true A拉黑B
|
||||
*/
|
||||
@Select("SELECT COUNT(1) FROM im_user_black WHERE from_uid = #{receiver} AND to_uid = #{sender} AND del_flag = 0")
|
||||
boolean existsBlack(@Param("receiver") Long receiver, @Param("sender") Long sender);
|
||||
}
|
||||
@ -0,0 +1,68 @@
|
||||
package com.ruoyi.im.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.im.domain.ImUserBlack;
|
||||
import com.ruoyi.im.mapper.ImUserBlackMapper;
|
||||
import com.ruoyi.im.service.ImUserBlackService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
|
||||
@Service
|
||||
public class ImUserBlackServiceImpl extends ServiceImpl<ImUserBlackMapper, ImUserBlack> implements ImUserBlackService {
|
||||
|
||||
@Resource
|
||||
private ImUserBlackMapper imUserBlackMapper;
|
||||
|
||||
@Override
|
||||
public boolean isBlack(Long receiver, Long sender) {
|
||||
if (receiver == null || sender == null) {
|
||||
return false;
|
||||
}
|
||||
// receiver 是否拉黑 sender
|
||||
return imUserBlackMapper.existsBlack(receiver, sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean blackUser(Long fromUid, Long toUid) {
|
||||
if(fromUid == null || toUid == null || fromUid.equals(toUid)){
|
||||
return false;
|
||||
}
|
||||
// 先查是否已有拉黑记录(逻辑删除的旧记录)
|
||||
LambdaQueryWrapper<ImUserBlack> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ImUserBlack::getFromUid, fromUid);
|
||||
wrapper.eq(ImUserBlack::getToUid, toUid);
|
||||
ImUserBlack oldRecord = getOne(wrapper);
|
||||
|
||||
if(oldRecord != null){
|
||||
// 存在记录,恢复(取消逻辑删除)
|
||||
oldRecord.setDelFlag(0);
|
||||
oldRecord.setUpdateTime(new Date());
|
||||
return updateById(oldRecord);
|
||||
}else{
|
||||
ImUserBlack black = new ImUserBlack();
|
||||
black.setFromUid(fromUid);
|
||||
black.setToUid(toUid);
|
||||
black.setDelFlag(0);
|
||||
black.setCreateTime(new Date());
|
||||
return save(black);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean unBlackUser(Long fromUid, Long toUid) {
|
||||
LambdaQueryWrapper<ImUserBlack> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ImUserBlack::getFromUid, fromUid);
|
||||
wrapper.eq(ImUserBlack::getToUid, toUid);
|
||||
ImUserBlack record = getOne(wrapper);
|
||||
if(record == null){
|
||||
return false;
|
||||
}
|
||||
// 逻辑删除(若依标准)
|
||||
return removeById(record.getId());
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue