From 1e30e4ff3ef5e5327ef243d88b3901dec52da70e Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Tue, 21 Nov 2023 20:29:44 +0800 Subject: [PATCH] chore: Support a key login --- .../kicc/system/api/entity/UserRole.java | 6 +++ .../system/config/OpenAiConfigProperties.java | 7 +++ .../system/controller/UserController.java | 50 ++++++++++++++----- .../kicc/system/service/UserService.java | 2 +- .../service/impl/ImContentServiceImpl.java | 31 +++++++++++- .../system/service/impl/UserServiceImpl.java | 8 +-- 6 files changed, 84 insertions(+), 20 deletions(-) diff --git a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/UserRole.java b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/UserRole.java index 7ed28544..cb011278 100644 --- a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/UserRole.java +++ b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/UserRole.java @@ -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 { */ private String roleId; + /** + * 多租户ID + */ + private String tenantId; } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/config/OpenAiConfigProperties.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/config/OpenAiConfigProperties.java index 2a312805..2efda125 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/config/OpenAiConfigProperties.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/config/OpenAiConfigProperties.java @@ -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 { /** OpenAI API Speed - ... */ 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; + } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java index a83afb9a..ef3596ea 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java +++ b/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; 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; 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 { 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 { 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.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("用户新增") diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java index 5d23fb21..b9e47213 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java +++ b/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 { * @param user 用户信息 * @return 结果 */ - int saveUser(KiccUser user); + boolean saveUser(KiccUser user); /** * 导入用户数据 diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java index 4844c11a..8e3b51ba 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java @@ -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; 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; 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 ServiceImpllambdaQuery() + .eq(ImContent::getSendUserId, SecurityUtils.getCasUser().getId()) + .between(ImContent::getSendTime, startTimestamp, LocalDateTime.now().atZone(chinaZoneId))); + + + // 检查是否大于发送次数 + + +// NON("0", "非订阅"), +// +// BASIC("1", "基础订阅"), + + // 限制当前非订阅用户只能用10次 + // 限制当前基础订阅用户只能用10次 + // 高级订阅不受限制 + + + + + } + } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java index 46997077..aa80f845 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java +++ b/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 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().eq(UserRole::getUserId, user.getId())); // 新增用户与角色管理 addUserRole(kiccUser); - return baseMapper.updateById(user); + return super.updateById(user); } }