From 1be1977ffcf41d6807230f1d5403f3cdccd3b963 Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Sun, 6 Aug 2023 04:04:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20sso=E7=94=A8=E6=88=B7=E7=BB=9F=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloud/kicc/system/api/entity/SsoUser.java | 67 +++++++++++++ .../system/controller/SsoUserController.java | 95 +++++++++++++++++++ .../kicc/system/mapper/SsoUserMapper.java | 16 ++++ .../kicc/system/service/ISsoUserService.java | 16 ++++ .../service/impl/SsoUserServiceImpl.java | 22 +++++ .../main/resources/mapper/SsoUserMapper.xml | 5 + 6 files changed, 221 insertions(+) create mode 100644 kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/SsoUser.java create mode 100644 kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/SsoUserController.java create mode 100644 kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/SsoUserMapper.java create mode 100644 kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/ISsoUserService.java create mode 100644 kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/SsoUserServiceImpl.java create mode 100644 kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/SsoUserMapper.xml diff --git a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/SsoUser.java b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/SsoUser.java new file mode 100644 index 00000000..c7fc634f --- /dev/null +++ b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/SsoUser.java @@ -0,0 +1,67 @@ +package com.cloud.kicc.system.api.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import java.time.LocalDateTime; + +/** + *

+ * SSO用户统一表 + *

+ * + * @Author: wangxiang4 + * @Since: 2023/8/6 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("sys_sso_user") +@ApiModel(description = "SSO用户表") +public class SsoUser extends CommonEntity { + + private static final long serialVersionUID = 1L; + + /** 用户ID */ + private String id; + + /** 用户名 */ + private String userName; + + /** 昵称 */ + private String nickName; + + /** 密码 */ + private String password; + + /** 用户邮箱 */ + private String email; + + /** 手机号码 */ + private String phone; + + /** 用户性别(0男 1女 2未知) */ + private String sex; + + /** 头像路径 */ + private String avatar; + + /** 最后登陆IP */ + private String loginIp; + + /** 最后登陆时间 */ + private LocalDateTime loginTime; + + /** 权限标识集合 */ + @TableField(exist = false) + private String[] permissions; + + /** 新密码 */ + @TableField(exist = false) + private String newPassword; +} diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/SsoUserController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/SsoUserController.java new file mode 100644 index 00000000..93c6edf9 --- /dev/null +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/SsoUserController.java @@ -0,0 +1,95 @@ +package com.cloud.kicc.system.controller; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cloud.kicc.common.core.api.R; +import com.cloud.kicc.common.core.constant.AppConstants; +import com.cloud.kicc.common.log.annotation.SysLog; +import com.cloud.kicc.common.security.util.SecurityUtils; +import com.cloud.kicc.system.api.entity.SsoUser; +import com.cloud.kicc.system.api.entity.User; +import com.cloud.kicc.system.service.ISsoUserService; +import lombok.RequiredArgsConstructor; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; + +/** + *

+ * SSO用户统一控制器 + *

+ * + * @Author: wangxiang4 + * @Since: 2023/8/6 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping(AppConstants.APP_SYSTEM + "/ssoUser") +public class SsoUserController { + + private final ISsoUserService iSsoUserService; + private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder(); + + private LambdaQueryWrapper getQueryWrapper(SsoUser ssoUser) { + return new LambdaQueryWrapper() + .like(StrUtil.isNotBlank(ssoUser.getUserName()), SsoUser::getUserName, ssoUser.getUserName()) + .like(StrUtil.isNotBlank(ssoUser.getNickName()), SsoUser::getNickName, ssoUser.getNickName()) + .eq(StrUtil.isNotBlank(ssoUser.getId()), SsoUser::getId, ssoUser.getId()) + .between(StrUtil.isAllNotBlank(ssoUser.getBeginTime(), ssoUser.getEndTime()), SsoUser::getCreateTime, ssoUser.getBeginTime(), ssoUser.getEndTime()); + } + + @GetMapping("/list") + public R list(Page page, SsoUser ssoUser) { + IPage results = iSsoUserService.page(page, getQueryWrapper(ssoUser)); + return R.ok(results.getRecords(), results.getTotal()); + } + + @GetMapping("/{id:\\w+}") + public R getById(@PathVariable("id") String id) { + return R.ok(iSsoUserService.getById(id)); + } + + + @PostMapping("/save") + public R save(@Validated @RequestBody SsoUser ssoUser) { + ssoUser.setPassword(ENCODER.encode(ssoUser.getPassword())); + iSsoUserService.save(ssoUser); + return R.ok(); + } + + @PutMapping("/update") + public R update(@Validated @RequestBody SsoUser ssoUser) { + iSsoUserService.updateById(ssoUser); + return R.ok(); + } + + @DeleteMapping("/remove/{id:[\\w,]+}") + public R remove(@PathVariable String[] id) { + iSsoUserService.removeByIds(Arrays.asList(id)); + return R.ok(); + } + + @PutMapping("/resetPwd") + public R resetPwd(@Validated @RequestBody SsoUser ssoUser) { + iSsoUserService.update(Wrappers.update().lambda().eq(SsoUser::getId, ssoUser.getId()).set(SsoUser::getPassword, ENCODER.encode(ssoUser.getNewPassword()))); + return R.ok(); + } + + @PutMapping("/updatePwd") + public R updatePwd(@Validated @RequestBody SsoUser ssoUser) { + SsoUser originUser = iSsoUserService.getById(SecurityUtils.getUser().getId()); + if (originUser != null && StrUtil.equals(ENCODER.encode(ssoUser.getPassword()), originUser.getPassword())) { + iSsoUserService.update(Wrappers.update().lambda().eq(SsoUser::getId, originUser.getId()).set(SsoUser::getPassword, ssoUser.getPassword())); + return R.ok(); + } else { + return R.error("原密码有误,请重试"); + } + } + +} diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/SsoUserMapper.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/SsoUserMapper.java new file mode 100644 index 00000000..8817b362 --- /dev/null +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/SsoUserMapper.java @@ -0,0 +1,16 @@ +package com.cloud.kicc.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cloud.kicc.system.api.entity.SsoUser; + +/** + *

+ * SSO用户统一 Mapper 接口 + *

+ * + * @Author: wangxiang4 + * @Since: 2023/8/6 + */ +public interface SsoUserMapper extends BaseMapper { + +} diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/ISsoUserService.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/ISsoUserService.java new file mode 100644 index 00000000..9c9c64d4 --- /dev/null +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/ISsoUserService.java @@ -0,0 +1,16 @@ +package com.cloud.kicc.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cloud.kicc.system.api.entity.SsoUser; + +/** + *

+ * SSO用户统一 服务层 + *

+ * + * @Author: wangxiang4 + * @Since: 2023/8/6 + */ +public interface ISsoUserService extends IService { + +} diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/SsoUserServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/SsoUserServiceImpl.java new file mode 100644 index 00000000..598fd8e8 --- /dev/null +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/SsoUserServiceImpl.java @@ -0,0 +1,22 @@ +package com.cloud.kicc.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cloud.kicc.system.api.entity.SsoUser; +import com.cloud.kicc.system.mapper.SsoUserMapper; +import com.cloud.kicc.system.service.ISsoUserService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +/** + *

+ * SSO用户统一 实现类 + *

+ * + * @Author: wangxiang4 + * @Since: 2023/8/6 + */ +@Service +@AllArgsConstructor +public class SsoUserServiceImpl extends ServiceImpl implements ISsoUserService { + +} diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/SsoUserMapper.xml b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/SsoUserMapper.xml new file mode 100644 index 00000000..550f6ab7 --- /dev/null +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/SsoUserMapper.xml @@ -0,0 +1,5 @@ + + + + +