diff --git a/src/main/java/com/yupi/springbootinit/common/ErrorCode.java b/src/main/java/com/yupi/springbootinit/common/ErrorCode.java index 4b24d6d..1093459 100644 --- a/src/main/java/com/yupi/springbootinit/common/ErrorCode.java +++ b/src/main/java/com/yupi/springbootinit/common/ErrorCode.java @@ -15,8 +15,10 @@ public enum ErrorCode { USER_DISABLE(40300, "用户被禁用"), TOKEN_INVALID(40400, "Token无效,请重新登录"), NO_AUTH_ERROR(40101, "无权限"), + PACKAGE_EXPIRED(40500, "套餐已到期"), NOT_FOUND_ERROR(40400, "请求数据不存在"), FORBIDDEN_ERROR(40300, "禁止访问"), + TENANT_NAME_NOT_EXISTS(40600, "租户不存在"), SYSTEM_ERROR(50000, "系统内部异常"), OPERATION_ERROR(50001, "操作失败"), QUEUE_ERROR(60001, "队列消息添加失败"), diff --git a/src/main/java/com/yupi/springbootinit/controller/TenantController.java b/src/main/java/com/yupi/springbootinit/controller/TenantController.java new file mode 100644 index 0000000..a1b63e6 --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/controller/TenantController.java @@ -0,0 +1,36 @@ +package com.yupi.springbootinit.controller; + +import com.yupi.springbootinit.common.BaseResponse; +import com.yupi.springbootinit.common.ErrorCode; +import com.yupi.springbootinit.common.ResultUtils; +import com.yupi.springbootinit.exception.BusinessException; +import com.yupi.springbootinit.model.vo.user.SystemUsersVO; +import com.yupi.springbootinit.service.SystemTenantService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/* + * @author: ziin + * @date: 2025/6/20 15:18 + */ +@RestController +@RequestMapping("/tenant") +@Slf4j +@CrossOrigin +public class TenantController { + + @Resource + private SystemTenantService systemTenantService; + + @GetMapping("/get-id-by-name") + public BaseResponse getTenantIdByName(@RequestParam("name") String name) { + if (name == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + return ResultUtils.success( systemTenantService.getTenantIdByName(name)); + + } + +} diff --git a/src/main/java/com/yupi/springbootinit/controller/UserController.java b/src/main/java/com/yupi/springbootinit/controller/UserController.java index 985233e..2697888 100644 --- a/src/main/java/com/yupi/springbootinit/controller/UserController.java +++ b/src/main/java/com/yupi/springbootinit/controller/UserController.java @@ -34,7 +34,7 @@ public class UserController { // 用户登陆接口 @PostMapping("doLogin") public BaseResponse doLogin(@RequestBody SystemUsersDTO usersDTO) { - SystemUsers user = usersService.getUserByUserName(usersDTO.getUsername()); + SystemUsers user = usersService.getUserByUserName(usersDTO.getUsername(),usersDTO.getTenantId()); if (user == null) { throw new BusinessException(ErrorCode.USERNAME_OR_PASSWORD_ERROR); } @@ -46,9 +46,16 @@ public class UserController { if (CommonStatusEnum.isDisable(Integer.valueOf(user.getStatus()))) { throw new BusinessException(ErrorCode.USER_DISABLE); } + if (usersService.isExpired(usersDTO.getTenantId())){ + throw new BusinessException(ErrorCode.PACKAGE_EXPIRED); + } + Long second = usersService.getTenantExpiredTime(usersDTO.getTenantId()); SystemUsersVO systemUsersVO = new SystemUsersVO(); BeanUtil.copyProperties(user, systemUsersVO); +// 赋予用户 Id StpUtil.login(user.getId()); +// 设置 token 有效期为当前日期和套餐有效期的差值 + StpUtil.renewTimeout(second); systemUsersVO.setTokenName(StpUtil.getTokenName()); systemUsersVO.setTokenValue(StpUtil.getTokenValue()); return ResultUtils.success(systemUsersVO); diff --git a/src/main/java/com/yupi/springbootinit/mapper/SystemTenantMapper.java b/src/main/java/com/yupi/springbootinit/mapper/SystemTenantMapper.java new file mode 100644 index 0000000..c8b9dd7 --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/mapper/SystemTenantMapper.java @@ -0,0 +1,12 @@ +package com.yupi.springbootinit.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yupi.springbootinit.model.entity.SystemTenant; + +/* +* @author: ziin +* @date: 2025/6/20 14:50 +*/ + +public interface SystemTenantMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/com/yupi/springbootinit/model/entity/SystemTenant.java b/src/main/java/com/yupi/springbootinit/model/entity/SystemTenant.java new file mode 100644 index 0000000..06ca90d --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/model/entity/SystemTenant.java @@ -0,0 +1,128 @@ +package com.yupi.springbootinit.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; +import lombok.Data; + +/* +* @author: ziin +* @date: 2025/6/20 14:50 +*/ + +/** + * 租户表 + */ +@ApiModel(description="租户表") +@Data +@TableName(value = "system_tenant") +public class SystemTenant { + /** + * 租户编号 + */ + @TableId(value = "id", type = IdType.AUTO) + @ApiModelProperty(value="租户编号") + private Long id; + + /** + * 租户名 + */ + @TableField(value = "`name`") + @ApiModelProperty(value="租户名") + private String name; + + /** + * 联系人的用户编号 + */ + @TableField(value = "contact_user_id") + @ApiModelProperty(value="联系人的用户编号") + private Long contactUserId; + + /** + * 联系人 + */ + @TableField(value = "contact_name") + @ApiModelProperty(value="联系人") + private String contactName; + + /** + * 联系手机 + */ + @TableField(value = "contact_mobile") + @ApiModelProperty(value="联系手机") + private String contactMobile; + + /** + * 租户状态(0正常 1停用) + */ + @TableField(value = "`status`") + @ApiModelProperty(value="租户状态(0正常 1停用)") + private Byte status; + + /** + * 绑定域名 + */ + @TableField(value = "website") + @ApiModelProperty(value="绑定域名") + private String website; + + /** + * 租户套餐编号 + */ + @TableField(value = "package_id") + @ApiModelProperty(value="租户套餐编号") + private Long packageId; + + /** + * 过期时间 + */ + @TableField(value = "expire_time") + @ApiModelProperty(value="过期时间") + private Date expireTime; + + /** + * 账号数量 + */ + @TableField(value = "account_count") + @ApiModelProperty(value="账号数量") + private Integer accountCount; + + /** + * 创建者 + */ + @TableField(value = "creator") + @ApiModelProperty(value="创建者") + private String creator; + + /** + * 创建时间 + */ + @TableField(value = "create_time") + @ApiModelProperty(value="创建时间") + private Date createTime; + + /** + * 更新者 + */ + @TableField(value = "updater") + @ApiModelProperty(value="更新者") + private String updater; + + /** + * 更新时间 + */ + @TableField(value = "update_time") + @ApiModelProperty(value="更新时间") + private Date updateTime; + + /** + * 是否删除 + */ + @TableField(value = "deleted") + @ApiModelProperty(value="是否删除") + private Boolean deleted; +} \ No newline at end of file diff --git a/src/main/java/com/yupi/springbootinit/service/SystemTenantService.java b/src/main/java/com/yupi/springbootinit/service/SystemTenantService.java new file mode 100644 index 0000000..f4dd1a2 --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/service/SystemTenantService.java @@ -0,0 +1,15 @@ +package com.yupi.springbootinit.service; + +import com.yupi.springbootinit.common.BaseResponse; +import com.yupi.springbootinit.model.entity.SystemTenant; +import com.baomidou.mybatisplus.extension.service.IService; + /* +* @author: ziin +* @date: 2025/6/20 14:50 +*/ + +public interface SystemTenantService extends IService{ + + + Long getTenantIdByName(String name); +} diff --git a/src/main/java/com/yupi/springbootinit/service/SystemUsersService.java b/src/main/java/com/yupi/springbootinit/service/SystemUsersService.java index b5cef36..072258b 100644 --- a/src/main/java/com/yupi/springbootinit/service/SystemUsersService.java +++ b/src/main/java/com/yupi/springbootinit/service/SystemUsersService.java @@ -10,7 +10,11 @@ import com.yupi.springbootinit.model.entity.SystemUsers; public interface SystemUsersService extends IService { - SystemUsers getUserByUserName(String username); + SystemUsers getUserByUserName(String username,Long tenantId); boolean isPasswordMatch(String rawPassWord, String encodedPassword); + + boolean isExpired(Long tendId); + + Long getTenantExpiredTime(Long tenantId); } diff --git a/src/main/java/com/yupi/springbootinit/service/impl/SystemTenantServiceImpl.java b/src/main/java/com/yupi/springbootinit/service/impl/SystemTenantServiceImpl.java new file mode 100644 index 0000000..ce84952 --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/service/impl/SystemTenantServiceImpl.java @@ -0,0 +1,33 @@ +package com.yupi.springbootinit.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.yupi.springbootinit.common.BaseResponse; +import com.yupi.springbootinit.common.ErrorCode; +import com.yupi.springbootinit.exception.BusinessException; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yupi.springbootinit.model.entity.SystemTenant; +import com.yupi.springbootinit.mapper.SystemTenantMapper; +import com.yupi.springbootinit.service.SystemTenantService; +/* +* @author: ziin +* @date: 2025/6/20 14:50 +*/ + +@Service +public class SystemTenantServiceImpl extends ServiceImpl implements SystemTenantService{ + + @Override + public Long getTenantIdByName(String name) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("name",name); + SystemTenant systemTenant = baseMapper.selectOne(queryWrapper); + if (systemTenant == null){ + throw new BusinessException(ErrorCode.TENANT_NAME_NOT_EXISTS); + } + return systemTenant.getId(); + + } +} diff --git a/src/main/java/com/yupi/springbootinit/service/impl/SystemUsersServiceImpl.java b/src/main/java/com/yupi/springbootinit/service/impl/SystemUsersServiceImpl.java index 37040a3..c258e98 100644 --- a/src/main/java/com/yupi/springbootinit/service/impl/SystemUsersServiceImpl.java +++ b/src/main/java/com/yupi/springbootinit/service/impl/SystemUsersServiceImpl.java @@ -1,9 +1,14 @@ package com.yupi.springbootinit.service.impl; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yupi.springbootinit.mapper.SystemTenantMapper; +import com.yupi.springbootinit.model.entity.SystemTenant; import com.yupi.springbootinit.model.entity.SystemUsers; +import com.yupi.springbootinit.service.SystemTenantService; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -24,10 +29,14 @@ public class SystemUsersServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("username",username); + queryWrapper.eq("tenant_id",tenantId); return baseMapper.selectOne(queryWrapper); } @@ -36,4 +45,22 @@ public class SystemUsersServiceImpl extends ServiceImpl 0 ) { + return between; + } + return 0L; + + } } diff --git a/src/main/resources/mapper/SystemTenantMapper.xml b/src/main/resources/mapper/SystemTenantMapper.xml new file mode 100644 index 0000000..2aeb469 --- /dev/null +++ b/src/main/resources/mapper/SystemTenantMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, `name`, contact_user_id, contact_name, contact_mobile, `status`, website, package_id, + expire_time, account_count, creator, create_time, updater, update_time, deleted + + \ No newline at end of file