@@ -1,6 +1,7 @@ | |||
sonar.projectKey=digimeta-MultiSaas | |||
sonar.projectName=digimeta-MultiSaas | |||
sonar.sourceEncoding=UTF-8 | |||
sonar.projectVersion=0.8 | |||
@@ -12,5 +13,5 @@ sonar.java.binaries=. | |||
sonar.java.source=1.8 | |||
sonar.java.target=1.8 | |||
sonar.modules=xueyi-system,xueyi-message #?????????? | |||
sonar.sourceEncoding=UTF-8 |
@@ -8,6 +8,7 @@ import com.xueyi.system.api.digitalmans.domain.po.DmDigitalmanExtPo; | |||
import com.xueyi.system.api.organize.feign.factory.RemoteUserFallbackFactory; | |||
import org.springframework.cloud.openfeign.FeignClient; | |||
import org.springframework.web.bind.annotation.GetMapping; | |||
import org.springframework.web.bind.annotation.PostMapping; | |||
import org.springframework.web.bind.annotation.RequestHeader; | |||
import org.springframework.web.bind.annotation.RequestParam; | |||
@@ -34,4 +35,6 @@ public interface RemoteDigitalmanService { | |||
public R<Integer> initInner(@RequestParam(value = "snCode") String snCode, | |||
@RequestHeader(SecurityConstants.ENTERPRISE_ID) Long enterpriseId, @RequestHeader(SecurityConstants.SOURCE_NAME) String sourceName, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); | |||
@PostMapping("/man/inner/sync") | |||
public R<Boolean> sync(@RequestHeader(SecurityConstants.ENTERPRISE_ID) Long enterpriseId, @RequestHeader(SecurityConstants.SOURCE_NAME) String sourceName, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); | |||
} |
@@ -4,12 +4,17 @@ import com.alibaba.fastjson2.JSONObject; | |||
import com.xueyi.common.core.constant.basic.SecurityConstants; | |||
import com.xueyi.common.core.constant.basic.ServiceConstants; | |||
import com.xueyi.common.core.web.result.R; | |||
import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; | |||
import com.xueyi.tenant.api.tenant.domain.po.TeTenantPo; | |||
import com.xueyi.tenant.api.tenant.feign.factory.RemoteTenantFallbackFactory; | |||
import org.springframework.cloud.openfeign.FeignClient; | |||
import org.springframework.web.bind.annotation.GetMapping; | |||
import org.springframework.web.bind.annotation.PostMapping; | |||
import org.springframework.web.bind.annotation.RequestBody; | |||
import org.springframework.web.bind.annotation.RequestHeader; | |||
import java.util.List; | |||
/** | |||
* 租户服务 | |||
* | |||
@@ -27,4 +32,8 @@ public interface RemoteTenantService { | |||
*/ | |||
@PostMapping("/tenant/register") | |||
R<Boolean> registerTenantInfo(@RequestBody JSONObject register, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); | |||
@GetMapping("/tenant/tenant_list") | |||
R<List<TeTenantDto>> tenantList(); | |||
} |
@@ -2,11 +2,14 @@ package com.xueyi.tenant.api.tenant.feign.factory; | |||
import com.alibaba.fastjson2.JSONObject; | |||
import com.xueyi.common.core.web.result.R; | |||
import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; | |||
import com.xueyi.tenant.api.tenant.feign.RemoteTenantService; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.cloud.openfeign.FallbackFactory; | |||
import org.springframework.stereotype.Component; | |||
import java.util.List; | |||
/** | |||
* 租户服务降级处理 | |||
@@ -26,6 +29,11 @@ public class RemoteTenantFallbackFactory implements FallbackFactory<RemoteTenant | |||
{ | |||
return R.fail("注册租户失败:" + throwable.getMessage()); | |||
} | |||
@Override | |||
public R<List<TeTenantDto>> tenantList() { | |||
return null; | |||
} | |||
}; | |||
} | |||
} |
@@ -0,0 +1,43 @@ | |||
package com.xueyi.job.task; | |||
import com.xueyi.common.cache.utils.SourceUtil; | |||
import com.xueyi.common.core.utils.core.StrUtil; | |||
import com.xueyi.common.core.web.result.R; | |||
import com.xueyi.system.api.model.Source; | |||
import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; | |||
import com.xueyi.tenant.api.tenant.feign.RemoteTenantService; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Component; | |||
import java.util.List; | |||
/** | |||
* 定时任务调度测试 | |||
* | |||
* @author xueyi | |||
*/ | |||
@Component("dgmanTask") | |||
public class DgmanTask { | |||
@Autowired | |||
RemoteTenantService tenantService; | |||
public void ryParams(String params) { | |||
System.out.println(StrUtil.format("执行有参方法:参数{}", params)); | |||
} | |||
public void dgmanMonitor() { | |||
R<List<TeTenantDto>> listR = tenantService.tenantList(); | |||
if (listR.isFail()) { | |||
System.out.println("租户列表获取失败"); | |||
return; | |||
} | |||
listR.getData().forEach(item->{ | |||
// 获取数据源 | |||
Source source = SourceUtil.getSourceCache(item.getStrategyId()); | |||
// 更新租户内数字人信息 | |||
}); | |||
System.out.println("监控心跳执行完成"); | |||
} | |||
} |
@@ -1,6 +1,7 @@ | |||
package com.xueyi.system.digitalmans.controller; | |||
import com.xueyi.common.core.constant.basic.BaseConstants; | |||
import com.xueyi.common.core.constant.basic.SecurityConstants; | |||
import com.xueyi.common.core.constant.digitalman.InitConstants; | |||
import com.xueyi.common.core.web.result.AjaxResult; | |||
import com.xueyi.common.core.web.result.R; | |||
@@ -74,6 +75,18 @@ public class DmDigitalmanController extends BaseController<DmDigitalmanQuery, Dm | |||
return R.ok(super.baseService.selectExt(devId)); | |||
} | |||
@PostMapping("/inner/sync") | |||
public R<Boolean> sync() { | |||
// 获取账号绑定的设备号 | |||
List<String> devices = super.baseService.selectRegisteredDevices(); | |||
devices.forEach(item->{ | |||
// 获取并更新在线状态 | |||
super.baseService.syncRegisteredDevice(item); | |||
// 数字人预警机制 | |||
}); | |||
return null; | |||
} | |||
/** | |||
* 同步数字人信息 | 内部调用 | |||
*/ | |||
@@ -139,7 +152,7 @@ public class DmDigitalmanController extends BaseController<DmDigitalmanQuery, Dm | |||
* 数字人工作时间修改 | |||
*/ | |||
@PutMapping(value = "/worktime") | |||
@Log(title = "数字人基础管理", businessType = BusinessType.UPDATE) | |||
@Log(title = "数字人基础管理-工作时间", businessType = BusinessType.UPDATE) | |||
public AjaxResult worktimeEdit(@Validated({V_E.class}) @RequestBody DmDigitalmanWorktimeDto customMadeDto) { | |||
customMadeDto.initOperate(BaseConstants.Operate.EDIT); | |||
return toAjax(baseService.worktimeUpdate(customMadeDto)); | |||
@@ -82,6 +82,7 @@ public class DmModelController extends BaseController<DmModelQuery, DmModelDto, | |||
* 上传资源修改 | |||
*/ | |||
@PostMapping(value = "/upload_resource") | |||
@Log(title = "资源管理", businessType = BusinessType.OTHER) | |||
public AjaxResult uploadResource(@Validated({V_A.class}) @RequestBody DmModelUploadDto modelUploadDto) { | |||
return toAjax(modelService.uploadResource(modelUploadDto)); | |||
@@ -105,12 +105,12 @@ public class DmSkillController extends BaseController<DmSkillQuery, DmSkillDto, | |||
} | |||
/** | |||
* 访客新增 | |||
* 技能新增 | |||
*/ | |||
@Override | |||
@PostMapping | |||
@RequiresPermissions(Auth.DM_SKILL_ADD) | |||
@Log(title = "访客管理", businessType = BusinessType.INSERT) | |||
@Log(title = "技能管理", businessType = BusinessType.INSERT) | |||
public AjaxResult add(@Validated({V_A.class}) @RequestBody DmSkillDto dmVisitors) { | |||
return super.add(dmVisitors); | |||
} | |||
@@ -130,18 +130,18 @@ public class DmSkillController extends BaseController<DmSkillQuery, DmSkillDto, | |||
@Override | |||
@PutMapping | |||
@RequiresPermissions(Auth.DM_SKILL_EDIT) | |||
@Log(title = "访客管理", businessType = BusinessType.UPDATE) | |||
@Log(title = "技能管理", businessType = BusinessType.UPDATE) | |||
public AjaxResult edit(@Validated({V_E.class}) @RequestBody DmSkillDto dmVisitors) { | |||
return super.edit(dmVisitors); | |||
} | |||
/** | |||
* 访客批量删除 | |||
* 技能批量删除 | |||
*/ | |||
@Override | |||
@DeleteMapping("/batch/{idList}") | |||
@RequiresPermissions(Auth.DM_SKILL_DEL) | |||
@Log(title = "访客管理", businessType = BusinessType.DELETE) | |||
@Log(title = "技能管理", businessType = BusinessType.DELETE) | |||
public AjaxResult batchRemove(@PathVariable List<Long> idList) { | |||
return super.batchRemove(idList); | |||
} | |||
@@ -8,6 +8,7 @@ import com.xueyi.system.digitalmans.domain.dto.DmDigitalmanDto; | |||
import com.xueyi.system.digitalmans.domain.query.DmDigitalmanQuery; | |||
import java.io.Serializable; | |||
import java.util.List; | |||
/** | |||
* 数字人基础管理 服务层 | |||
@@ -27,4 +28,8 @@ public interface IDmDigitalmanService extends IBaseService<DmDigitalmanQuery, Dm | |||
int initDigitalman(String snCode); | |||
DmDigitalmanExtPo selectExt(String devId); | |||
List<String> selectRegisteredDevices(); | |||
boolean syncRegisteredDevice(String deviceId); | |||
} |
@@ -41,6 +41,7 @@ import org.springframework.stereotype.Service; | |||
import java.io.Serializable; | |||
import java.util.List; | |||
import java.util.Objects; | |||
import java.util.stream.Collectors; | |||
/** | |||
@@ -299,8 +300,6 @@ public class DmDigitalmanServiceImpl extends BaseServiceImpl<DmDigitalmanQuery, | |||
dmSkillService.batchInitInsert(digitalmanDto); | |||
// 添加展示页 | |||
DmModelDto modelDto = new DmModelDto(); | |||
modelDto.setName(digitalmanDto.getName()); | |||
@@ -384,4 +383,26 @@ public class DmDigitalmanServiceImpl extends BaseServiceImpl<DmDigitalmanQuery, | |||
this.worktimeUpdate(worktimeDto); | |||
return 0; | |||
} | |||
@Override | |||
public List<String> selectRegisteredDevices() { | |||
List<DmDigitalmanExtPo> dmDigitalmanPoList = dmDigitalmanExtMapper.selectList(Wrappers.<DmDigitalmanExtPo>query().lambda() | |||
.isNotNull(DmDigitalmanExtPo::getDeviceId)); | |||
return dmDigitalmanPoList.stream().map(DmDigitalmanExtPo::getDeviceId) | |||
.filter(Objects::nonNull) | |||
.filter(str->!str.isEmpty()) | |||
.collect(Collectors.toList()); | |||
} | |||
@Override | |||
public boolean syncRegisteredDevice(String deviceId) { | |||
DmDigitalmanExtPo po = dmDigitalmanExtMapper.selectOne(Wrappers.<DmDigitalmanExtPo>query().lambda() | |||
.eq(DmDigitalmanExtPo::getDeviceId,deviceId)); | |||
if (po != null) { | |||
po.setIsOnline(Integer.parseInt(transferService.getDeviceOnlineStatus(deviceId).get("msg").toString())); | |||
dmDigitalmanExtMapper.updateById(po); | |||
return true; | |||
} | |||
return false; | |||
} | |||
} |
@@ -1,5 +1,6 @@ | |||
package com.xueyi.system.digitalmans.service.impl; | |||
import com.github.pagehelper.Page; | |||
import com.xueyi.common.core.constant.digitalman.InitConstants; | |||
import com.xueyi.common.core.constant.digitalman.MessageConstants; | |||
import com.xueyi.common.core.utils.core.IdUtil; | |||
@@ -15,6 +16,7 @@ import com.xueyi.system.digitalmans.domain.query.DmManDeviceQuery; | |||
import com.xueyi.system.digitalmans.manager.IDmManDeviceManager; | |||
import com.xueyi.system.digitalmans.mapper.DmManDeviceMapper; | |||
import com.xueyi.system.digitalmans.service.IDmManDeviceService; | |||
import com.xueyi.system.resource.service.IDmResourcesService; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.data.redis.core.RedisTemplate; | |||
import org.springframework.stereotype.Service; | |||
@@ -43,6 +45,8 @@ public class DmManDeviceServiceImpl extends BaseServiceImpl<DmManDeviceQuery, Dm | |||
@Autowired | |||
RedisTemplate<String, Serializable> manDeviceDtoRedisTemplate; | |||
/** | |||
* 查询数字人设备管理对象列表 | 数据权限 | |||
* | |||
@@ -63,6 +67,7 @@ public class DmManDeviceServiceImpl extends BaseServiceImpl<DmManDeviceQuery, Dm | |||
item.setOnlineStatus(InitConstants.DEVICE_ACTIVATE_STATUS_NOT_ACTIVATE); | |||
} | |||
}); | |||
return list; | |||
} | |||
@@ -5,6 +5,7 @@ import com.xueyi.common.core.constant.system.OrganizeConstants; | |||
import com.xueyi.common.core.utils.core.CollUtil; | |||
import com.xueyi.common.core.utils.core.StrUtil; | |||
import com.xueyi.common.core.web.result.AjaxResult; | |||
import com.xueyi.common.core.web.result.R; | |||
import com.xueyi.common.core.web.validate.V_A; | |||
import com.xueyi.common.core.web.validate.V_E; | |||
import com.xueyi.common.log.annotation.Log; | |||
@@ -15,6 +16,7 @@ import com.xueyi.common.security.annotation.RequiresPermissions; | |||
import com.xueyi.common.security.auth.Auth; | |||
import com.xueyi.common.web.entity.controller.BaseController; | |||
import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; | |||
import com.xueyi.tenant.api.tenant.domain.po.TeTenantPo; | |||
import com.xueyi.tenant.api.tenant.domain.query.TeTenantQuery; | |||
import com.xueyi.tenant.tenant.domain.model.TeTenantRegister; | |||
import com.xueyi.tenant.tenant.service.ITeTenantService; | |||
@@ -51,6 +53,10 @@ public class TeTenantController extends BaseController<TeTenantQuery, TeTenantDt | |||
return add(tenantRegister); | |||
} | |||
@GetMapping("/tenant_list") | |||
R<List<TeTenantDto>> tenantList() { | |||
return R.ok(super.baseService.selectList(new TeTenantQuery())); | |||
} | |||
/** | |||
* 查询租户列表 | |||
*/ | |||