Browse Source

chore: Support a key login

master
wangxiang 2 years ago
parent
commit
1e30e4ff3e
No known key found for this signature in database
GPG Key ID: 1BA7946AB6B232E4
  1. 6
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/UserRole.java
  2. 7
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/config/OpenAiConfigProperties.java
  3. 50
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
  4. 2
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java
  5. 31
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java
  6. 8
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java

6
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/UserRole.java

@ -1,6 +1,8 @@ @@ -1,6 +1,8 @@
package com.cloud.kicc.system.api.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cloud.kicc.common.data.entity.CommonEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@ -33,5 +35,9 @@ public class UserRole implements Serializable { @@ -33,5 +35,9 @@ public class UserRole implements Serializable {
*/
private String roleId;
/**
* 多租户ID
*/
private String tenantId;
}

7
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/config/OpenAiConfigProperties.java

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
package com.cloud.kicc.system.config;
import lombok.Data;
import org.apache.poi.ss.formula.functions.Rate;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
@ -41,4 +42,10 @@ public class OpenAiConfigProperties { @@ -41,4 +42,10 @@ public class OpenAiConfigProperties {
/** OpenAI API Speed - <a href="https://platform.openai.com/docs/api-reference/audio/createSpeech">...</a> */
private Double speed = 1.0;
/** Limit Duration time unit seconds default 1 day */
private int rateLimitDuration = 24 * 60 * 60;
/** Maximum number of visits in a specified time unit seconds */
private int rateLimitMaxCount = 10;
}

50
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java

@ -3,6 +3,7 @@ package com.cloud.kicc.system.controller; @@ -3,6 +3,7 @@ package com.cloud.kicc.system.controller;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -16,21 +17,16 @@ import com.cloud.kicc.common.log.annotation.SysLog; @@ -16,21 +17,16 @@ import com.cloud.kicc.common.log.annotation.SysLog;
import com.cloud.kicc.common.security.annotation.Inner;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.commonbiz.api.feign.RemotePushConcernFanService;
import com.cloud.kicc.system.api.entity.Menu;
import com.cloud.kicc.system.api.entity.Role;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.entity.UserRole;
import com.cloud.kicc.system.api.entity.*;
import com.cloud.kicc.system.api.enums.UserTypeEnum;
import com.cloud.kicc.system.api.vo.ResultVo;
import com.cloud.kicc.system.service.MenuService;
import com.cloud.kicc.system.service.RoleService;
import com.cloud.kicc.system.service.UserRoleService;
import com.cloud.kicc.system.service.UserService;
import com.cloud.kicc.system.service.*;
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
import com.pig4cloud.plugin.excel.annotation.Sheet;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.beans.BeanUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@ -54,7 +50,10 @@ public class UserController { @@ -54,7 +50,10 @@ public class UserController {
private final UserRoleService userRoleService;
private final RoleService roleService;
private final MenuService menuService;
private final ISsoUserService iSsoUserService;
private final RemotePushConcernFanService remotePushConcernFanService;
private final ConfigService configService;
private final DeptService deptService;
@GetMapping("/list")
public R list(Page page,@RequestParam Map param) {
@ -123,12 +122,37 @@ public class UserController { @@ -123,12 +122,37 @@ public class UserController {
return R.ok(userService.getUserAuthority(user));
}
/** 内部小程序一键登陆 */
@Inner(false)
@GetMapping("/transformationUserByCasUserId/{casUserId:\\w+}")
public R transformationUserByCasUserId(@PathVariable String casUserId) {
KiccUser user = userService.getUserByCasUserId(casUserId);
if (user == null) return R.error("该用户不存在,请先注册!");
return R.ok(userService.getUserAuthority(user));
@GetMapping("/oneClickAccess/{casUserId:\\w+}")
public R oneClickAccess(@PathVariable String casUserId) {
if (ObjectUtil.isNotEmpty(iSsoUserService.getById(casUserId)) && ObjectUtil.isEmpty(userService.getOne(Wrappers.<User>lambdaQuery().eq(User::getCasUserId, casUserId)))) {
String initDeptId = configService.getValueByKey("app.init.deptId");
Dept dept = deptService.getById(initDeptId);
Optional.ofNullable(dept).orElseThrow(() -> new CheckedException("当前部门无效请重新在参数管理中配置!"));
String initUserType = configService.getValueByKey("app.init.deptId");
String initTenantId = configService.getValueByKey("app.init.tenantId");
String initRoleIds = configService.getValueByKey("app.init.roleIds");
User user = new User();
user.setCasUserId(casUserId);
user.setDeptId(dept.getDeptId());
user.setDeptName(dept.getName());
user.setUserType(initUserType);
user.setTenantId(initTenantId);
userService.save(user);
// 处理角色授权
String[] roles = initRoleIds.split(",");
userRoleService.saveBatch(Arrays.stream(roles).map(roleId -> {
UserRole ur = new UserRole();
ur.setUserId(user.getId());
ur.setRoleId(roleId);
ur.setTenantId(initTenantId);
return ur;
}).collect(Collectors.toList()));
}
return R.ok(userService.getUserByCasUserId(casUserId));
}
@SysLog("用户新增")

2
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java

@ -23,7 +23,7 @@ public interface UserService extends IService<User> { @@ -23,7 +23,7 @@ public interface UserService extends IService<User> {
* @param user 用户信息
* @return 结果
*/
int saveUser(KiccUser user);
boolean saveUser(KiccUser user);
/**
* 导入用户数据

31
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package com.cloud.kicc.system.service.impl;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
@ -12,7 +11,6 @@ import com.cloud.kicc.common.core.exception.CheckedException; @@ -12,7 +11,6 @@ import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.system.api.entity.ImContent;
import com.cloud.kicc.system.api.entity.OssFile;
import com.cloud.kicc.system.api.enums.ImMessageTypeEnum;
import com.cloud.kicc.system.config.OpenAiConfigProperties;
import com.cloud.kicc.system.mapper.ImContentMapper;
import com.cloud.kicc.system.service.FileService;
@ -39,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile; @@ -39,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@ -220,4 +219,32 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent @@ -220,4 +219,32 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent
return receiveOssOssFile;
}
/** 速率限制请求处理 */
private void RateLimitRequestHandler() {
ZoneId chinaZoneId = ZoneId.of("Asia/Shanghai");
LocalDateTime startTime = LocalDateTime.now().minusSeconds(openAiConfigProperties.getRateLimitDuration());
long startTimestamp = startTime.atZone(chinaZoneId).toEpochSecond();
// 查询当前用户在指定范围内的发送消息
long maxCount = super.count(Wrappers.<ImContent>lambdaQuery()
.eq(ImContent::getSendUserId, SecurityUtils.getCasUser().getId())
.between(ImContent::getSendTime, startTimestamp, LocalDateTime.now().atZone(chinaZoneId)));
// 检查是否大于发送次数
// NON("0", "非订阅"),
//
// BASIC("1", "基础订阅"),
// 限制当前非订阅用户只能用10次
// 限制当前基础订阅用户只能用10次
// 高级订阅不受限制
}
}

8
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java

@ -57,22 +57,22 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us @@ -57,22 +57,22 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@Override
@Transactional(rollbackFor = Exception.class)
public int saveUser(KiccUser kiccUser) {
public boolean saveUser(KiccUser kiccUser) {
User user = new User();
BeanUtils.copyProperties(kiccUser, user);
if (StrUtil.isEmptyIfStr(user.getId())) {
// 新增用户信息
int rows = baseMapper.insert(user);
boolean result = super.save(user);
// 新增用户与角色管理
kiccUser.setId(user.getId());
addUserRole(kiccUser);
return rows;
return result;
} else {
// 修改遵守先删后新增规则
userRoleService.remove(new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, user.getId()));
// 新增用户与角色管理
addUserRole(kiccUser);
return baseMapper.updateById(user);
return super.updateById(user);
}
}

Loading…
Cancel
Save