Browse Source

套餐分配方法

master
La123123 1 month ago
parent
commit
31c5692764
  1. 12
      im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImAgentController.java
  2. 20
      im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImChatPackageController.java
  3. 7
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImAgentService.java
  4. 9
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImChatPackageService.java
  5. 14
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java
  6. 50
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImChatPackageServiceImpl.java

12
im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImAgentController.java

@ -1,6 +1,7 @@
package org.dromara.im.controller;
import java.util.List;
import java.util.Map;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
@ -102,4 +103,15 @@ public class ImAgentController extends BaseController {
@PathVariable Long[] ids) {
return toAjax(imAgentService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 获取所有代理的ID和名称列表
*
* @return 代理ID和名称的Map列表
*/
@SaCheckPermission("im:chatPackage:list")
@PostMapping("/getAllAgentNameList")
public R<List<Map<String, Object>>> getAllAgentNameList() {
return R.ok(imAgentService.getAllAgentNameList());
}
}

20
im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImChatPackageController.java

@ -2,10 +2,12 @@ package org.dromara.im.controller;
import java.util.List;
import cn.hutool.json.JSONObject;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.im.domain.ImAgent;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -102,4 +104,22 @@ public class ImChatPackageController extends BaseController {
@PathVariable Long[] ids) {
return toAjax(imChatPackageService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 分配套餐
*/
@SaCheckPermission("im:chatPackage:allocatePackages")
@Log(title = "套餐", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PostMapping()
public R<Void> allocatePackages(@RequestBody JSONObject data) {
Long packageId = data.getLong("packageId");
Long agentId = data.getLong("agentId");
if(packageId == null || agentId == null) {
return R.fail("参数错误");
}
return toAjax(imChatPackageService.allocatePackages(agentId,packageId));
}
}

7
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImAgentService.java

@ -7,6 +7,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 代理关联Service接口
@ -72,4 +73,10 @@ public interface IImAgentService {
* @return 唯一token
*/
String getTokenByUserId();
/**
* 获取所有代理的ID和名称列表
* @return 代理ID和名称的Map列表
*/
List<Map<String, Object>> getAllAgentNameList();
}

9
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImChatPackageService.java

@ -65,4 +65,13 @@ public interface IImChatPackageService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 分配套餐给代理
*
* @param agentId 代理ID
* @param packageId 套餐ID
* @return 是否分配成功
*/
Boolean allocatePackages(Long agentId, Long packageId);
}

14
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java

@ -23,8 +23,11 @@ import org.dromara.im.mapper.ImAgentMapper;
import org.dromara.im.service.IImAgentService;
import java.time.Duration;
import java.util.HashMap;
import java.util.List;
import java.util.Collection;
import java.util.Map;
import java.util.stream.Collectors;
import static org.dromara.im.constant.ImConstant.AGENT_TOKEN_KEY;
@ -177,5 +180,14 @@ public class ImAgentServiceImpl implements IImAgentService {
return token;
}
@Override
public List<Map<String, Object>> getAllAgentNameList() {
List<ImAgent> agents = baseMapper.selectList();
return agents.stream().map(agent -> {
Map<String, Object> map = new HashMap<>();
map.put("id", agent.getId());
map.put("agentName", agent.getAgentName());
return map;
}).collect(Collectors.toList());
}
}

50
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImChatPackageServiceImpl.java

@ -16,9 +16,12 @@ import org.springframework.stereotype.Service;
import org.dromara.im.domain.bo.ImChatPackageBo;
import org.dromara.im.domain.vo.ImChatPackageVo;
import org.dromara.im.domain.ImChatPackage;
import org.dromara.im.domain.ImAgent;
import org.dromara.im.mapper.ImChatPackageMapper;
import org.dromara.im.mapper.ImAgentMapper;
import org.dromara.im.service.IImChatPackageService;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@ -36,6 +39,8 @@ public class ImChatPackageServiceImpl implements IImChatPackageService {
private final ImChatPackageMapper baseMapper;
private final ImAgentMapper imAgentMapper;
/**
* 查询套餐
*
@ -141,4 +146,49 @@ public class ImChatPackageServiceImpl implements IImChatPackageService {
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 分配套餐给代理
*
* @param agentId 代理ID
* @param packageId 套餐ID
* @return 是否分配成功
*/
@Override
public Boolean allocatePackages(Long agentId, Long packageId) {
// 根据agentId查找ImAgent实体类
ImAgent agent = imAgentMapper.selectById(agentId);
if (agent == null) {
throw new RuntimeException("代理不存在");
}
// 获取packageExpireTime,如果为null或空则赋值为当前时间
Date packageExpireTime = agent.getPackageExpireTime();
if (packageExpireTime == null) {
packageExpireTime = DateUtil.date();
}
// 根据packageId查找ImChatPackage实体类
ImChatPackage chatPackage = baseMapper.selectById(packageId);
if (chatPackage == null) {
throw new RuntimeException("套餐不存在");
}
// 获取durationDays
Long durationDays = chatPackage.getDurationDays();
if (durationDays == null) {
throw new RuntimeException("套餐天数不能为空");
}
// 将durationDays加到packageExpireTime上
packageExpireTime = DateUtil.offsetDay(packageExpireTime, durationDays.intValue());
// 格式化为该日期的零点零分零秒
packageExpireTime = DateUtil.beginOfDay(packageExpireTime);
// 更新ImAgent的packageExpireTime
agent.setPackageExpireTime(packageExpireTime);
return imAgentMapper.updateById(agent) > 0;
}
}

Loading…
Cancel
Save