Commit bc4eb4f3 by hweeeeeei

添加接口:添加或修改会话拓展字段

parent f24e05e5
package com.wecloud.im.controller; package com.wecloud.im.controller;
import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation; import com.wecloud.im.param.add.ImClientToConversation;
import com.wecloud.im.param.add.ImConversationAttrUpdate;
import com.wecloud.im.param.add.ImConversationCreate; import com.wecloud.im.param.add.ImConversationCreate;
import com.wecloud.im.param.add.ImConversationDisplayUpdate; import com.wecloud.im.param.add.ImConversationDisplayUpdate;
import com.wecloud.im.param.add.ImConversationNameUpdate;
import com.wecloud.im.service.ImConversationService; import com.wecloud.im.service.ImConversationService;
import com.wecloud.im.vo.ImConversationCreateVo; import com.wecloud.im.vo.ImConversationCreateVo;
import com.wecloud.im.vo.MyConversationListVo; import com.wecloud.im.vo.MyConversationListVo;
...@@ -34,20 +37,41 @@ public class ImConversationController extends BaseController { ...@@ -34,20 +37,41 @@ public class ImConversationController extends BaseController {
@Autowired @Autowired
private ImConversationService imConversationService; private ImConversationService imConversationService;
/**
* 添加或修改会话名称
*/
@PostMapping("/saveOrUpdateName")
@ApiOperation(value = "添加或修改会话名称", notes = "")
public ApiResult<Boolean> saveOrUpdateName(@RequestBody ImConversationNameUpdate imConversationNameUpdate) throws Exception {
return imConversationService.saveOrUpdateName(imConversationNameUpdate);
}
/** /**
* TODO 添加或修改会话拓展字段 * 添加或修改会话拓展字段
*/ */
@PostMapping("/saveOrUpdateAttr")
@ApiOperation(value = "添加或修改会话拓展字段", notes = "")
public ApiResult<Boolean> saveOrUpdateAttr(@RequestBody ImConversationAttrUpdate imConversationAttrUpdate) throws Exception {
return imConversationService.saveOrUpdateAttr(imConversationAttrUpdate);
}
/** /**
* TODO 退出会话 * client退出会话
*/ */
@PostMapping("/leave")
@ApiOperation(value = "client退出会话", notes = "")
public ApiResult<Boolean> leaveConversation(@RequestBody ImClientLeaveConversation imClientToConversation) throws Exception {
return imConversationService.leaveConversation(imClientToConversation);
}
/** /**
* 将client从会话移除 * 将client从会话移除
*/ */
@PostMapping("delClient") @PostMapping("/delClient")
@ApiOperation(value = "将client从会话移除", notes = "") @ApiOperation(value = "将client从会话移除", notes = "")
public ApiResult<Boolean> delClientToConversation(@RequestBody ImClientToConversation imClientToConversation) throws Exception { public ApiResult<Boolean> delClientToConversation(@RequestBody ImClientToConversation imClientToConversation) throws Exception {
return imConversationService.delClientToConversation(imClientToConversation); return imConversationService.delClientToConversation(imClientToConversation);
...@@ -57,7 +81,7 @@ public class ImConversationController extends BaseController { ...@@ -57,7 +81,7 @@ public class ImConversationController extends BaseController {
/** /**
* 将用户添加进会话 * 将用户添加进会话
*/ */
@PostMapping("addClient") @PostMapping("/addClient")
@ApiOperation(value = "将用户添加进会话", notes = "") @ApiOperation(value = "将用户添加进会话", notes = "")
public ApiResult<Boolean> addClientToConversation(@RequestBody ImClientToConversation imClientToConversation) throws Exception { public ApiResult<Boolean> addClientToConversation(@RequestBody ImClientToConversation imClientToConversation) throws Exception {
return imConversationService.addClientToConversation(imClientToConversation); return imConversationService.addClientToConversation(imClientToConversation);
......
package com.wecloud.im.param.add;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @author wei
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImClientLeaveConversation")
public class ImClientLeaveConversation extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("会话表id")
private Long conversationId;
}
package com.wecloud.im.param.add;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.HashMap;
/**
* 会话表
*
* @author wei
* @since 2021-05-07
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImConversationAttrUpdate")
public class ImConversationAttrUpdate extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("json格式,自定义属性,供开发者扩展使用。")
private HashMap attributes;
@ApiModelProperty("会话表id")
private Long conversationId;
}
package com.wecloud.im.param.add;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 会话表
*
* @author wei
* @since 2021-05-07
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImConversationNameUpdate")
public class ImConversationNameUpdate extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("对话的名字,可为群组命名。")
private String name;
@ApiModelProperty("会话表id")
private Long conversationId;
}
...@@ -4,9 +4,12 @@ import com.fasterxml.jackson.core.JsonProcessingException; ...@@ -4,9 +4,12 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.wecloud.im.entity.ImConversation; import com.wecloud.im.entity.ImConversation;
import com.wecloud.im.param.ImConversationPageParam; import com.wecloud.im.param.ImConversationPageParam;
import com.wecloud.im.param.ImConversationQueryVo; import com.wecloud.im.param.ImConversationQueryVo;
import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation; import com.wecloud.im.param.add.ImClientToConversation;
import com.wecloud.im.param.add.ImConversationAttrUpdate;
import com.wecloud.im.param.add.ImConversationCreate; import com.wecloud.im.param.add.ImConversationCreate;
import com.wecloud.im.param.add.ImConversationDisplayUpdate; import com.wecloud.im.param.add.ImConversationDisplayUpdate;
import com.wecloud.im.param.add.ImConversationNameUpdate;
import com.wecloud.im.vo.ImConversationCreateVo; import com.wecloud.im.vo.ImConversationCreateVo;
import com.wecloud.im.vo.MyConversationListVo; import com.wecloud.im.vo.MyConversationListVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
...@@ -51,7 +54,6 @@ public interface ImConversationService extends BaseService<ImConversation> { ...@@ -51,7 +54,6 @@ public interface ImConversationService extends BaseService<ImConversation> {
*/ */
ApiResult<Boolean> addClientToConversation(ImClientToConversation imClientToConversation); ApiResult<Boolean> addClientToConversation(ImClientToConversation imClientToConversation);
/** /**
* 将client从会话移除 * 将client从会话移除
* *
...@@ -60,6 +62,20 @@ public interface ImConversationService extends BaseService<ImConversation> { ...@@ -60,6 +62,20 @@ public interface ImConversationService extends BaseService<ImConversation> {
*/ */
ApiResult<Boolean> delClientToConversation(ImClientToConversation imClientToConversation) throws Exception; ApiResult<Boolean> delClientToConversation(ImClientToConversation imClientToConversation) throws Exception;
/**
* client退出会话
*/
ApiResult<Boolean> leaveConversation(ImClientLeaveConversation imClientToConversation) throws Exception;
/**
* 添加或修改会话名称
*/
ApiResult<Boolean> saveOrUpdateName(ImConversationNameUpdate imConversationNameUpdate) throws Exception;
/**
* 添加或修改会话拓展字段
*/
ApiResult<Boolean> saveOrUpdateAttr(ImConversationAttrUpdate imConversationAttrUpdate) throws Exception;
/** /**
* 修改 * 修改
......
...@@ -16,9 +16,12 @@ import com.wecloud.im.entity.ImMessageOnlineSend; ...@@ -16,9 +16,12 @@ import com.wecloud.im.entity.ImMessageOnlineSend;
import com.wecloud.im.mapper.ImConversationMapper; import com.wecloud.im.mapper.ImConversationMapper;
import com.wecloud.im.param.ImConversationPageParam; import com.wecloud.im.param.ImConversationPageParam;
import com.wecloud.im.param.ImConversationQueryVo; import com.wecloud.im.param.ImConversationQueryVo;
import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation; import com.wecloud.im.param.add.ImClientToConversation;
import com.wecloud.im.param.add.ImConversationAttrUpdate;
import com.wecloud.im.param.add.ImConversationCreate; import com.wecloud.im.param.add.ImConversationCreate;
import com.wecloud.im.param.add.ImConversationDisplayUpdate; import com.wecloud.im.param.add.ImConversationDisplayUpdate;
import com.wecloud.im.param.add.ImConversationNameUpdate;
import com.wecloud.im.service.ImApplicationService; import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientService; import com.wecloud.im.service.ImClientService;
import com.wecloud.im.service.ImConversationMembersService; import com.wecloud.im.service.ImConversationMembersService;
...@@ -379,7 +382,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -379,7 +382,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
.eq(ImConversationMembers::getFkClientId, client2.getId()) .eq(ImConversationMembers::getFkClientId, client2.getId())
); );
// 已经在该会话 则跳过 // 则跳过
imConversationMembersService.deleteImConversationMembers(members.getId()); imConversationMembersService.deleteImConversationMembers(members.getId());
// ws移除事件通知给群内其他人 ---------- // ws移除事件通知给群内其他人 ----------
...@@ -451,6 +454,60 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -451,6 +454,60 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
} }
@Override
public ApiResult<Boolean> leaveConversation(ImClientLeaveConversation imClientToConversation) throws Exception {
return null;
}
@Override
public ApiResult<Boolean> saveOrUpdateName(ImConversationNameUpdate imConversationNameUpdate) throws Exception {
return null;
}
@Override
public ApiResult<Boolean> saveOrUpdateAttr(ImConversationAttrUpdate imConversationAttrUpdate) throws Exception {
// shiro线程中获取当前token
JwtToken curentJwtToken = JwtUtil.getCurentJwtToken();
// 根据appKey查询application
ImApplication imApplication = imApplicationService.getOneByAppKey(curentJwtToken.getAppKey());
ImClient imClientSender = imClientService.getCurentClient();
// 判断是否为群主
ImConversation imConversationById = imConversationService.getById(imConversationAttrUpdate.getConversationId());
if (imConversationById == null || !imConversationById.getCreator().equals(imClientSender.getId())) {
return ApiResult.result(false);
}
// 查询该会话所有成员
List<ImConversationMembers> membersList = imConversationMembersService.list(
new QueryWrapper<ImConversationMembers>().lambda()
.eq(ImConversationMembers::getFkConversationId, imConversationAttrUpdate.getConversationId())
.notIn(ImConversationMembers::getId, imClientSender.getId())
);
JsonMapper jsonMapper = new JsonMapper();
try {
String attributes = jsonMapper.writeValueAsString(imConversationAttrUpdate.getAttributes());
imConversationById.setAttributes(attributes);
} catch (JsonProcessingException e) {
e.printStackTrace();
return ApiResult.fail();
}
boolean b = imConversationService.updateById(imConversationById);
if (b) {
return ApiResult.ok();
} else {
return ApiResult.fail();
}
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean updateImConversation(ImConversation imConversation) throws Exception { public boolean updateImConversation(ImConversation imConversation) throws Exception {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment