作者 钟来

流水鱼登陆合并整理

正在显示 41 个修改的文件 包含 677 行增加1321 行删除
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDc/LnVeh5jDk2X
k5YrxlDmxyuunJ+Oy9OhevrtyqeW4sZlOsams5dQ9fHCfC8dMSTF4S+rq6x6fS6l
KYVZJ5Jap/XVJq+F+B/XNfeBOddr2os4baZ4nvQnuYaZjM2bxIdP8QUGRbcgkFb6
xACm6AZqHoodoQB2mSJLVNzoLjSUvN6abVrsrSmsLGlJ8/myegTA2G7NWnI+8xAT
iles3W9bmVPMoOyT9glPB0wI5WRKi2Gq9yKFus7NX3caGf0tNcE5WRl2bbeJ4WN+
CUmkK5W0xxWQdqbzpuV3UizHoSxP8RekEOWJXKuWfskesLwpfEHHKSSPu8tJ2ANa
mzAg0Aw1AgMBAAECggEAR/NZJjJ+lk3f4YxCBrqpOJp8lHuWT835d8gszyN+cVgg
tHDwoPI0QD3zmxkH1f9cM7lf5gsdOzxq5YehTSffNPkex2mzGHFzHIULst18UDd1
wMeivf8zC4QSWQhJIYBZdiPJOQOV3lpgl4EdnTpKbF7JJWB4YCT3z4Mv8cCpigth
oqvZlE5Xl9Z1mbzMfaIiBkXd9J4e9FcA5sOWJqlPem1RUBvBb92pcHzSbpe41UnV
SGLeiQ4QXxN0GSzDy86kdkUf9pAWKGZq/BzuyqSzNfuv0UagVkcRW33mc64Qh11b
qTQaUAiVbYBuccn1VgTiWT7nkUog9DfAr7jauCHU+QKBgQDwMKjpQqOJonWHvR2h
3QCmN0mDWsvfgURvvnFvsStuIqdbX8ip3DCdgMetXEJSYuUNWkzL5kzRKw43UT8/
2Fwb1IDPEMC/0iCPR1tRr/Ch7un2O4uild/u7trgVwVd5EG9GxLQvscP/BACB0sR
Ogbbw+Zrd+G8YonT9wsKmE77XwKBgQDriHyf7JmYSRV5oGNhqqLP9KXtjZ9BM4VX
JrWnJXoF+f9WrvYjuJ8ui5aEjRUBAB3K2La7i6y+cTPE/vPHSEuwnM476HhvOtRk
XiC/pLfALQ3uG1+Qb9QRi2DXFiqMcSIVkUYF9gEQEp/Gj5T+8Pe1plaCSW24D/fR
MRuNAsA06wKBgBrcRjd3xVQh/+TDKGoujeEIs8blw4DmMuIQOR1VgdbaNz8HsigU
wLcMbMgdVilid90LaSUwRwzpNLjI9DrOllZiaFk/tV5+QDflsferpkxlrHJl7FKt
UhKlUYLfGHGMkjF0sqD3hMlr1dp0OFff1l6DRORlzq/DkUhMC0cPC14fAoGBAKhb
JiG2IE/vJY+Lqp38N2aIDDbSPVyAtDYIcF3qdt9gxDg01bHQ3M+LbWqP4cyWRbVh
1LQX8cEq74NHbf8rWRcD7pJ55+Qx2/FmKuhxl/qg+c0R+ewnUyG7S9xSdtVuZJuf
/Lp0Dmxrs5NdvHXCzn0kSb/VNr0ThOMdxAC2T6dDAoGBANelRgj/DtoPnid2FkGq
CFpC0arLgSXZyeTykWo1mPYB5CBz/O+lQ6+o8AiS61HUjaaNp4byrJU/Ijq87FvG
TpM0f8frAlAj2pvaVwtAhxIWC89Zt7cS06ZOl8IVCs0TUodUbGAjW9+pxE2KjsqG
7RVaFYGJYx+3TiAKJ+J/94Iv
-----END PRIVATE KEY-----
... ...
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3Py51XoeYw5Nl5OWK8ZQ
5scrrpyfjsvToXr67cqnluLGZTrGprOXUPXxwnwvHTEkxeEvq6usen0upSmFWSeS
Wqf11Savhfgf1zX3gTnXa9qLOG2meJ70J7mGmYzNm8SHT/EFBkW3IJBW+sQApugG
ah6KHaEAdpkiS1Tc6C40lLzemm1a7K0prCxpSfP5snoEwNhuzVpyPvMQE4pXrN1v
W5lTzKDsk/YJTwdMCOVkSothqvcihbrOzV93Ghn9LTXBOVkZdm23ieFjfglJpCuV
tMcVkHam86bld1Isx6EsT/EXpBDliVyrln7JHrC8KXxBxykkj7vLSdgDWpswINAM
NQIDAQAB
-----END PUBLIC KEY-----
... ...
package com.zhonglai.luhui.domain.user;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.tool.BaseEntity;
/**
* 用户账户信息对象 user_account_info
*
* @author zhonglai
* @date 2025-10-18
*/
@ApiModel("用户账户信息")
public class UserAccountInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户ID,主键关联 */
@ApiModelProperty(value="主键id")
private Integer id;
/** 积分 */
@ApiModelProperty(value="积分")
private Integer integral;
/** 余额 */
@ApiModelProperty(value="余额")
private Integer balance;
/** 级别 */
@ApiModelProperty(value="级别")
private Integer level;
/** 货币 */
@ApiModelProperty(value="货币")
private Integer currency;
/** 经验 */
@ApiModelProperty(value="经验")
private Integer experience;
/** 年度服务费 */
@ApiModelProperty(value="年度服务费")
private Integer annualServiceCharge;
/** 点苗器到期时间 */
@ApiModelProperty(value="点苗器到期时间")
private Integer dianmiaoEndTime;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setIntegral(Integer integral)
{
this.integral = integral;
}
public Integer getIntegral()
{
return integral;
}
public void setBalance(Integer balance)
{
this.balance = balance;
}
public Integer getBalance()
{
return balance;
}
public void setLevel(Integer level)
{
this.level = level;
}
public Integer getLevel()
{
return level;
}
public void setCurrency(Integer currency)
{
this.currency = currency;
}
public Integer getCurrency()
{
return currency;
}
public void setExperience(Integer experience)
{
this.experience = experience;
}
public Integer getExperience()
{
return experience;
}
public void setAnnualServiceCharge(Integer annualServiceCharge)
{
this.annualServiceCharge = annualServiceCharge;
}
public Integer getAnnualServiceCharge()
{
return annualServiceCharge;
}
public void setDianmiaoEndTime(Integer dianmiaoEndTime)
{
this.dianmiaoEndTime = dianmiaoEndTime;
}
public Integer getDianmiaoEndTime()
{
return dianmiaoEndTime;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("integral", getIntegral())
.append("balance", getBalance())
.append("level", getLevel())
.append("currency", getCurrency())
.append("experience", getExperience())
.append("annualServiceCharge", getAnnualServiceCharge())
.append("dianmiaoEndTime", getDianmiaoEndTime())
.toString();
}
}
package com.zhonglai.luhui.domain.user;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.tool.BaseEntity;
/**
* 用户地理信息对象 user_address_info
*
* @author zhonglai
* @date 2025-10-18
*/
@ApiModel("用户地理信息")
public class UserAddressInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户ID,主键关联 */
@ApiModelProperty(value="主键id")
private Integer id;
/** */
@ApiModelProperty(value="")
private String provinceId;
/** */
@ApiModelProperty(value="")
private String cityId;
/** */
@ApiModelProperty(value="")
private String countyId;
/** */
@ApiModelProperty(value="")
private String provinceName;
/** */
@ApiModelProperty(value="")
private String cityName;
/** */
@ApiModelProperty(value="")
private String countyName;
/** */
@ApiModelProperty(value="")
private String address;
/** 常用搜索 */
@ApiModelProperty(value="常用搜索")
private String search;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setProvinceId(String provinceId)
{
this.provinceId = provinceId;
}
public String getProvinceId()
{
return provinceId;
}
public void setCityId(String cityId)
{
this.cityId = cityId;
}
public String getCityId()
{
return cityId;
}
public void setCountyId(String countyId)
{
this.countyId = countyId;
}
public String getCountyId()
{
return countyId;
}
public void setProvinceName(String provinceName)
{
this.provinceName = provinceName;
}
public String getProvinceName()
{
return provinceName;
}
public void setCityName(String cityName)
{
this.cityName = cityName;
}
public String getCityName()
{
return cityName;
}
public void setCountyName(String countyName)
{
this.countyName = countyName;
}
public String getCountyName()
{
return countyName;
}
public void setAddress(String address)
{
this.address = address;
}
public String getAddress()
{
return address;
}
public void setSearch(String search)
{
this.search = search;
}
public String getSearch()
{
return search;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("provinceId", getProvinceId())
.append("cityId", getCityId())
.append("countyId", getCountyId())
.append("provinceName", getProvinceName())
.append("cityName", getCityName())
.append("countyName", getCountyName())
.append("address", getAddress())
.append("search", getSearch())
.toString();
}
}
package com.zhonglai.luhui.domain.user;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.tool.BaseEntity;
/**
* 用户认证信息对象 user_auth_info
*
* @author zhonglai
* @date 2025-10-18
*/
@ApiModel("用户认证信息")
public class UserAuthInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户ID,主键关联 */
@ApiModelProperty(value="主键id")
private Integer id;
/** 是否实名认证(0否,1是) */
@ApiModelProperty(value="是否实名认证(0否,1是)")
private Integer nameAuthentication;
/** 个人审核状态 */
@ApiModelProperty(value="个人审核状态")
private Integer personalAuthenticationState;
/** 企业审核状态 */
@ApiModelProperty(value="企业审核状态")
private Integer enterpriseAuthenticationState;
/** 个人审核描述 */
@ApiModelProperty(value="个人审核描述")
private String personalAuthenticationDescribe;
/** 企业审核描述 */
@ApiModelProperty(value="企业审核描述")
private String enterpriseAuthenticationDescribe;
/** 个人审核更新时间 */
@ApiModelProperty(value="个人审核更新时间")
private Integer personalAuthenticationTime;
/** 企业审核更新时间 */
@ApiModelProperty(value="企业审核更新时间")
private Integer enterpriseAuthenticationTime;
/** 身份证号 */
@ApiModelProperty(value="身份证号")
private String identificationCard;
/** 营业执照号 */
@ApiModelProperty(value="营业执照号")
private String businessLicenseNo;
/** 企业名称 */
@ApiModelProperty(value="企业名称")
private String enterpriseName;
/** 企业营业执照 */
@ApiModelProperty(value="企业营业执照")
private String businessLicenseUrl;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setNameAuthentication(Integer nameAuthentication)
{
this.nameAuthentication = nameAuthentication;
}
public Integer getNameAuthentication()
{
return nameAuthentication;
}
public void setPersonalAuthenticationState(Integer personalAuthenticationState)
{
this.personalAuthenticationState = personalAuthenticationState;
}
public Integer getPersonalAuthenticationState()
{
return personalAuthenticationState;
}
public void setEnterpriseAuthenticationState(Integer enterpriseAuthenticationState)
{
this.enterpriseAuthenticationState = enterpriseAuthenticationState;
}
public Integer getEnterpriseAuthenticationState()
{
return enterpriseAuthenticationState;
}
public void setPersonalAuthenticationDescribe(String personalAuthenticationDescribe)
{
this.personalAuthenticationDescribe = personalAuthenticationDescribe;
}
public String getPersonalAuthenticationDescribe()
{
return personalAuthenticationDescribe;
}
public void setEnterpriseAuthenticationDescribe(String enterpriseAuthenticationDescribe)
{
this.enterpriseAuthenticationDescribe = enterpriseAuthenticationDescribe;
}
public String getEnterpriseAuthenticationDescribe()
{
return enterpriseAuthenticationDescribe;
}
public void setPersonalAuthenticationTime(Integer personalAuthenticationTime)
{
this.personalAuthenticationTime = personalAuthenticationTime;
}
public Integer getPersonalAuthenticationTime()
{
return personalAuthenticationTime;
}
public void setEnterpriseAuthenticationTime(Integer enterpriseAuthenticationTime)
{
this.enterpriseAuthenticationTime = enterpriseAuthenticationTime;
}
public Integer getEnterpriseAuthenticationTime()
{
return enterpriseAuthenticationTime;
}
public void setIdentificationCard(String identificationCard)
{
this.identificationCard = identificationCard;
}
public String getIdentificationCard()
{
return identificationCard;
}
public void setBusinessLicenseNo(String businessLicenseNo)
{
this.businessLicenseNo = businessLicenseNo;
}
public String getBusinessLicenseNo()
{
return businessLicenseNo;
}
public void setEnterpriseName(String enterpriseName)
{
this.enterpriseName = enterpriseName;
}
public String getEnterpriseName()
{
return enterpriseName;
}
public void setBusinessLicenseUrl(String businessLicenseUrl)
{
this.businessLicenseUrl = businessLicenseUrl;
}
public String getBusinessLicenseUrl()
{
return businessLicenseUrl;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("nameAuthentication", getNameAuthentication())
.append("personalAuthenticationState", getPersonalAuthenticationState())
.append("enterpriseAuthenticationState", getEnterpriseAuthenticationState())
.append("personalAuthenticationDescribe", getPersonalAuthenticationDescribe())
.append("enterpriseAuthenticationDescribe", getEnterpriseAuthenticationDescribe())
.append("personalAuthenticationTime", getPersonalAuthenticationTime())
.append("enterpriseAuthenticationTime", getEnterpriseAuthenticationTime())
.append("identificationCard", getIdentificationCard())
.append("businessLicenseNo", getBusinessLicenseNo())
.append("enterpriseName", getEnterpriseName())
.append("businessLicenseUrl", getBusinessLicenseUrl())
.toString();
}
}
package com.zhonglai.luhui.domain.user;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.tool.BaseEntity;
/**
* 基础用户信息对象 user_base_info
*
* @author zhonglai
* @date 2025-10-18
*/
@ApiModel("基础用户信息")
public class UserBaseInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户ID,主键关联 */
@ApiModelProperty(value="主键id")
private Integer id;
/** 登录名 */
@ApiModelProperty(value="登录名")
private String loginName;
/** 真实姓名 */
@ApiModelProperty(value="真实姓名")
private String name;
/** 昵称 */
@ApiModelProperty(value="昵称")
private String nickname;
/** 性别(0男,1女) */
@ApiModelProperty(value="性别(0男,1女)")
private Integer gender;
/** 手机号 */
@ApiModelProperty(value="手机号")
private String phone;
/** 电子邮箱 */
@ApiModelProperty(value="电子邮箱")
private String email;
/** 头像地址 */
@ApiModelProperty(value="头像地址")
private String imgUrl;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setLoginName(String loginName)
{
this.loginName = loginName;
}
public String getLoginName()
{
return loginName;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setNickname(String nickname)
{
this.nickname = nickname;
}
public String getNickname()
{
return nickname;
}
public void setGender(Integer gender)
{
this.gender = gender;
}
public Integer getGender()
{
return gender;
}
public void setPhone(String phone)
{
this.phone = phone;
}
public String getPhone()
{
return phone;
}
public void setEmail(String email)
{
this.email = email;
}
public String getEmail()
{
return email;
}
public void setImgUrl(String imgUrl)
{
this.imgUrl = imgUrl;
}
public String getImgUrl()
{
return imgUrl;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("loginName", getLoginName())
.append("name", getName())
.append("nickname", getNickname())
.append("gender", getGender())
.append("phone", getPhone())
.append("email", getEmail())
.append("imgUrl", getImgUrl())
.append("createTime", getCreateTime())
.toString();
}
}
package com.zhonglai.luhui.domain.user;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.tool.BaseEntity;
/**
* 用户其他信息对象 user_extra_info
*
* @author zhonglai
* @date 2025-10-18
*/
@ApiModel("用户其他信息")
public class UserExtraInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户ID,主键关联 */
@ApiModelProperty(value="主键id")
private Integer id;
/** 描述图片地址 */
@ApiModelProperty(value="描述图片地址")
private String describeImgUrl;
/** 描述 */
@ApiModelProperty(value="描述")
private String describe;
/** 用户类型(0普通用户,1管理员,2客服) */
@ApiModelProperty(value="用户类型",allowableValues="0=普通用户,1管理员,2客服")
private Integer userType;
/** 是否失效 */
@ApiModelProperty(value="是否失效")
private Integer isInvalid;
/** 是否参与活动 */
@ApiModelProperty(value="是否参与活动")
private Integer isParticipateIn;
/** 公司ID */
@ApiModelProperty(value="公司ID")
private Integer companyId;
/** 分享次数 */
@ApiModelProperty(value="分享次数")
private Integer shareNumber;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setDescribeImgUrl(String describeImgUrl)
{
this.describeImgUrl = describeImgUrl;
}
public String getDescribeImgUrl()
{
return describeImgUrl;
}
public void setDescribe(String describe)
{
this.describe = describe;
}
public String getDescribe()
{
return describe;
}
public void setUserType(Integer userType)
{
this.userType = userType;
}
public Integer getUserType()
{
return userType;
}
public void setIsInvalid(Integer isInvalid)
{
this.isInvalid = isInvalid;
}
public Integer getIsInvalid()
{
return isInvalid;
}
public void setIsParticipateIn(Integer isParticipateIn)
{
this.isParticipateIn = isParticipateIn;
}
public Integer getIsParticipateIn()
{
return isParticipateIn;
}
public void setCompanyId(Integer companyId)
{
this.companyId = companyId;
}
public Integer getCompanyId()
{
return companyId;
}
public void setShareNumber(Integer shareNumber)
{
this.shareNumber = shareNumber;
}
public Integer getShareNumber()
{
return shareNumber;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("describeImgUrl", getDescribeImgUrl())
.append("describe", getDescribe())
.append("userType", getUserType())
.append("isInvalid", getIsInvalid())
.append("isParticipateIn", getIsParticipateIn())
.append("companyId", getCompanyId())
.append("shareNumber", getShareNumber())
.toString();
}
}
package com.zhonglai.luhui.domain.user;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.tool.BaseEntity;
/**
* 用户登录对象 user_login
*
* @author zhonglai
* @date 2025-10-18
*/
@ApiModel("用户登录")
public class UserLogin extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户登录主键主键 */
@ApiModelProperty(value="主键id")
private Integer id;
/** 用户主键id */
@ApiModelProperty(value="用户主键id")
private Integer userId;
/** 用户登录名 */
@ApiModelProperty(value="用户登录名")
private String loginName;
/** 用户密码 */
@ApiModelProperty(value="用户密码")
private String loginPass;
/** 用户登录密码key */
@ApiModelProperty(value="用户登录密码key")
private String userLoginPassKey;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setUserId(Integer userId)
{
this.userId = userId;
}
public Integer getUserId()
{
return userId;
}
public void setLoginName(String loginName)
{
this.loginName = loginName;
}
public String getLoginName()
{
return loginName;
}
public void setLoginPass(String loginPass)
{
this.loginPass = loginPass;
}
public String getLoginPass()
{
return loginPass;
}
public void setUserLoginPassKey(String userLoginPassKey)
{
this.userLoginPassKey = userLoginPassKey;
}
public String getUserLoginPassKey()
{
return userLoginPassKey;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("userId", getUserId())
.append("loginName", getLoginName())
.append("loginPass", getLoginPass())
.append("userLoginPassKey", getUserLoginPassKey())
.toString();
}
}
package com.zhonglai.luhui.domain.user;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.tool.BaseEntity;
/**
* 用户登录信息对象 user_login_info
*
* @author zhonglai
* @date 2025-10-18
*/
@ApiModel("用户登录信息")
public class UserLoginInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户ID,主键关联 */
@ApiModelProperty(value="主键id")
private Integer id;
/** 在线状态(0离线,1在线) */
@ApiModelProperty(value="在线状态(0离线,1在线)")
private Integer onlineState;
/** 最后登陆时间 */
@ApiModelProperty(value="最后登陆时间")
private Integer lastLoginTime;
/** 最后登陆IP */
@ApiModelProperty(value="最后登陆IP")
private String lastLoginIp;
/** 最后登陆地点 */
@ApiModelProperty(value="最后登陆地点")
private String lastAddress;
/** 最后登陆经度 */
@ApiModelProperty(value="最后登陆经度")
private String lastLoginLongitude;
/** 最后登陆纬度 */
@ApiModelProperty(value="最后登陆纬度")
private String lastLoginLatitude;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setOnlineState(Integer onlineState)
{
this.onlineState = onlineState;
}
public Integer getOnlineState()
{
return onlineState;
}
public void setLastLoginTime(Integer lastLoginTime)
{
this.lastLoginTime = lastLoginTime;
}
public Integer getLastLoginTime()
{
return lastLoginTime;
}
public void setLastLoginIp(String lastLoginIp)
{
this.lastLoginIp = lastLoginIp;
}
public String getLastLoginIp()
{
return lastLoginIp;
}
public void setLastAddress(String lastAddress)
{
this.lastAddress = lastAddress;
}
public String getLastAddress()
{
return lastAddress;
}
public void setLastLoginLongitude(String lastLoginLongitude)
{
this.lastLoginLongitude = lastLoginLongitude;
}
public String getLastLoginLongitude()
{
return lastLoginLongitude;
}
public void setLastLoginLatitude(String lastLoginLatitude)
{
this.lastLoginLatitude = lastLoginLatitude;
}
public String getLastLoginLatitude()
{
return lastLoginLatitude;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("onlineState", getOnlineState())
.append("lastLoginTime", getLastLoginTime())
.append("lastLoginIp", getLastLoginIp())
.append("lastAddress", getLastAddress())
.append("lastLoginLongitude", getLastLoginLongitude())
.append("lastLoginLatitude", getLastLoginLatitude())
.toString();
}
}
package com.zhonglai.luhui.domain.user;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.tool.BaseEntity;
/**
* 用户官方及告警信息对象 user_official_info
*
* @author zhonglai
* @date 2025-10-18
*/
@ApiModel("用户官方及告警信息")
public class UserOfficialInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户ID,主键关联 */
@ApiModelProperty(value="主键id")
private Integer id;
/** 官方担保状态 */
@ApiModelProperty(value="官方担保状态")
private Integer guarantee;
/** 官方担保描述 */
@ApiModelProperty(value="官方担保描述")
private String guaranteeDescribe;
/** 告警协议 */
@ApiModelProperty(value="告警协议")
private Integer alarmAgreement;
/** 告警通知电话 */
@ApiModelProperty(value="告警通知电话")
private String alarmNoticePhone;
/** 告警通知openid */
@ApiModelProperty(value="告警通知openid")
private String alarmNoticeOpenid;
/** 告警通知开关 */
@ApiModelProperty(value="告警通知开关")
private Integer alarmNoticeWxopen;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setGuarantee(Integer guarantee)
{
this.guarantee = guarantee;
}
public Integer getGuarantee()
{
return guarantee;
}
public void setGuaranteeDescribe(String guaranteeDescribe)
{
this.guaranteeDescribe = guaranteeDescribe;
}
public String getGuaranteeDescribe()
{
return guaranteeDescribe;
}
public void setAlarmAgreement(Integer alarmAgreement)
{
this.alarmAgreement = alarmAgreement;
}
public Integer getAlarmAgreement()
{
return alarmAgreement;
}
public void setAlarmNoticePhone(String alarmNoticePhone)
{
this.alarmNoticePhone = alarmNoticePhone;
}
public String getAlarmNoticePhone()
{
return alarmNoticePhone;
}
public void setAlarmNoticeOpenid(String alarmNoticeOpenid)
{
this.alarmNoticeOpenid = alarmNoticeOpenid;
}
public String getAlarmNoticeOpenid()
{
return alarmNoticeOpenid;
}
public void setAlarmNoticeWxopen(Integer alarmNoticeWxopen)
{
this.alarmNoticeWxopen = alarmNoticeWxopen;
}
public Integer getAlarmNoticeWxopen()
{
return alarmNoticeWxopen;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("guarantee", getGuarantee())
.append("guaranteeDescribe", getGuaranteeDescribe())
.append("alarmAgreement", getAlarmAgreement())
.append("alarmNoticePhone", getAlarmNoticePhone())
.append("alarmNoticeOpenid", getAlarmNoticeOpenid())
.append("alarmNoticeWxopen", getAlarmNoticeWxopen())
.toString();
}
}
package com.zhonglai.luhui.domain.user;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.tool.BaseEntity;
/**
* 用户社交信息对象 user_social_info
*
* @author zhonglai
* @date 2025-10-18
*/
@ApiModel("用户社交信息")
public class UserSocialInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户ID,主键关联 */
@ApiModelProperty(value="主键id")
private Integer id;
/** QQ账号 */
@ApiModelProperty(value="QQ账号")
private String qq;
/** 微信账号 */
@ApiModelProperty(value="微信账号")
private String weixin;
/** 开放平台ID */
@ApiModelProperty(value="开放平台ID")
private Integer openId;
/** 萤石子账号ID */
@ApiModelProperty(value="萤石子账号ID")
private String ysChildrenId;
/** 萤石子子账号密码 */
@ApiModelProperty(value="萤石子子账号密码")
private String ysChildrenPass;
/** 极光消息密码 */
@ApiModelProperty(value="极光消息密码")
private String messagePassWord;
/** 极光账号是否活跃 */
@ApiModelProperty(value="极光账号是否活跃")
private Integer isMessageAction;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setQq(String qq)
{
this.qq = qq;
}
public String getQq()
{
return qq;
}
public void setWeixin(String weixin)
{
this.weixin = weixin;
}
public String getWeixin()
{
return weixin;
}
public void setOpenId(Integer openId)
{
this.openId = openId;
}
public Integer getOpenId()
{
return openId;
}
public void setYsChildrenId(String ysChildrenId)
{
this.ysChildrenId = ysChildrenId;
}
public String getYsChildrenId()
{
return ysChildrenId;
}
public void setYsChildrenPass(String ysChildrenPass)
{
this.ysChildrenPass = ysChildrenPass;
}
public String getYsChildrenPass()
{
return ysChildrenPass;
}
public void setMessagePassWord(String messagePassWord)
{
this.messagePassWord = messagePassWord;
}
public String getMessagePassWord()
{
return messagePassWord;
}
public void setIsMessageAction(Integer isMessageAction)
{
this.isMessageAction = isMessageAction;
}
public Integer getIsMessageAction()
{
return isMessageAction;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("qq", getQq())
.append("weixin", getWeixin())
.append("openId", getOpenId())
.append("ysChildrenId", getYsChildrenId())
.append("ysChildrenPass", getYsChildrenPass())
.append("messagePassWord", getMessagePassWord())
.append("isMessageAction", getIsMessageAction())
.toString();
}
}
... ... @@ -21,11 +21,15 @@
<!-- 通用工具-->
<dependency>
<groupId>com.zhonglai.luhui</groupId>
<artifactId>ruoyi-common-security</artifactId>
<artifactId>lh-jar-action</artifactId>
</dependency>
<dependency>
<groupId>com.zhonglai.luhui</groupId>
<artifactId>lh-jar-action</artifactId>
<artifactId>lh-common-swagger</artifactId>
</dependency>
<dependency>
<groupId>com.zhonglai.luhui</groupId>
<artifactId>lh-common-datasource</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
... ...
... ... @@ -24,8 +24,7 @@ public class UserLogin extends BaseEntity
@ApiModelProperty(value="用户主键id")
private Integer userId;
/** 用户登录名 */
@ApiModelProperty(value="用户登录名")
@ApiModelProperty(value="用户主键id")
private String loginName;
/** 用户密码 */
... ... @@ -54,16 +53,7 @@ public class UserLogin extends BaseEntity
{
return userId;
}
public void setLoginName(String loginName)
{
this.loginName = loginName;
}
public String getLoginName()
{
return loginName;
}
public void setLoginPass(String loginPass)
public void setLoginPass(String loginPass)
{
this.loginPass = loginPass;
}
... ... @@ -82,12 +72,19 @@ public class UserLogin extends BaseEntity
return userLoginPassKey;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("userId", getUserId())
.append("loginName", getLoginName())
.append("loginPass", getLoginPass())
.append("userLoginPassKey", getUserLoginPassKey())
.toString();
... ...
... ... @@ -58,4 +58,7 @@ public interface UserLoginMapper
* @return 结果
*/
public int deleteUserLoginByIds(Integer[] ids);
public UserLogin selectUserLoginByLoginName(String loginName);
}
... ...
... ... @@ -60,4 +60,5 @@ public interface IUserLoginService
public int deleteUserLoginById(Integer id);
String apiLoginByPass(String user, String pass);
UserLogin selectUserLoginByLoginName(String loginName);
}
... ...
package com.zhonglai.luhui.user.service.impl;
import java.util.List;
import com.zhonglai.luhui.datasource.enums.DataSource;
import com.zhonglai.luhui.datasource.enums.DataSourceType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhonglai.luhui.user.mapper.UserAccountInfoMapper;
... ... @@ -13,6 +16,7 @@ import com.zhonglai.luhui.user.service.IUserAccountInfoService;
* @author zhonglai
* @date 2025-10-20
*/
@DataSource(value = DataSourceType.SLAVE)
@Service
public class UserAccountInfoServiceImpl implements IUserAccountInfoService
{
... ...
package com.zhonglai.luhui.user.service.impl;
import java.util.List;
import com.zhonglai.luhui.datasource.enums.DataSource;
import com.zhonglai.luhui.datasource.enums.DataSourceType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhonglai.luhui.user.mapper.UserAddressInfoMapper;
... ... @@ -13,6 +16,7 @@ import com.zhonglai.luhui.user.service.IUserAddressInfoService;
* @author zhonglai
* @date 2025-10-20
*/
@DataSource(value = DataSourceType.SLAVE)
@Service
public class UserAddressInfoServiceImpl implements IUserAddressInfoService
{
... ...
package com.zhonglai.luhui.user.service.impl;
import java.util.List;
import com.zhonglai.luhui.datasource.enums.DataSource;
import com.zhonglai.luhui.datasource.enums.DataSourceType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhonglai.luhui.user.mapper.UserAuthInfoMapper;
... ... @@ -13,6 +16,7 @@ import com.zhonglai.luhui.user.service.IUserAuthInfoService;
* @author zhonglai
* @date 2025-10-20
*/
@DataSource(value = DataSourceType.SLAVE)
@Service
public class UserAuthInfoServiceImpl implements IUserAuthInfoService
{
... ...
... ... @@ -2,6 +2,8 @@ package com.zhonglai.luhui.user.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.zhonglai.luhui.datasource.enums.DataSource;
import com.zhonglai.luhui.datasource.enums.DataSourceType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhonglai.luhui.user.mapper.UserBaseInfoMapper;
... ... @@ -14,6 +16,7 @@ import com.zhonglai.luhui.user.service.IUserBaseInfoService;
* @author zhonglai
* @date 2025-10-20
*/
@DataSource(value = DataSourceType.SLAVE)
@Service
public class UserBaseInfoServiceImpl implements IUserBaseInfoService
{
... ...
package com.zhonglai.luhui.user.service.impl;
import java.util.List;
import com.zhonglai.luhui.datasource.enums.DataSource;
import com.zhonglai.luhui.datasource.enums.DataSourceType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhonglai.luhui.user.mapper.UserExtraInfoMapper;
... ... @@ -13,6 +16,7 @@ import com.zhonglai.luhui.user.service.IUserExtraInfoService;
* @author zhonglai
* @date 2025-10-20
*/
@DataSource(value = DataSourceType.SLAVE)
@Service
public class UserExtraInfoServiceImpl implements IUserExtraInfoService
{
... ...
package com.zhonglai.luhui.user.service.impl;
import java.util.List;
import com.zhonglai.luhui.datasource.enums.DataSource;
import com.zhonglai.luhui.datasource.enums.DataSourceType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhonglai.luhui.user.mapper.UserLoginInfoMapper;
... ... @@ -13,6 +16,7 @@ import com.zhonglai.luhui.user.service.IUserLoginInfoService;
* @author zhonglai
* @date 2025-10-20
*/
@DataSource(value = DataSourceType.SLAVE)
@Service
public class UserLoginInfoServiceImpl implements IUserLoginInfoService
{
... ...
package com.zhonglai.luhui.user.service.impl;
import java.util.List;
import com.zhonglai.luhui.datasource.enums.DataSource;
import com.zhonglai.luhui.datasource.enums.DataSourceType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhonglai.luhui.user.mapper.UserLoginMapper;
... ... @@ -13,6 +16,7 @@ import com.zhonglai.luhui.user.service.IUserLoginService;
* @author zhonglai
* @date 2025-10-20
*/
@DataSource(value = DataSourceType.SLAVE)
@Service
public class UserLoginServiceImpl implements IUserLoginService
{
... ... @@ -31,6 +35,12 @@ public class UserLoginServiceImpl implements IUserLoginService
return userLoginMapper.selectUserLoginById(id);
}
@Override
public UserLogin selectUserLoginByLoginName(String loginName)
{
return userLoginMapper.selectUserLoginByLoginName(loginName);
}
/**
* 查询用户登录列表
*
... ...
package com.zhonglai.luhui.user.service.impl;
import java.util.List;
import com.zhonglai.luhui.datasource.enums.DataSource;
import com.zhonglai.luhui.datasource.enums.DataSourceType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhonglai.luhui.user.mapper.UserOfficialInfoMapper;
... ... @@ -13,6 +16,7 @@ import com.zhonglai.luhui.user.service.IUserOfficialInfoService;
* @author zhonglai
* @date 2025-10-20
*/
@DataSource(value = DataSourceType.SLAVE)
@Service
public class UserOfficialInfoServiceImpl implements IUserOfficialInfoService
{
... ...
package com.zhonglai.luhui.user.service.impl;
import java.util.List;
import com.zhonglai.luhui.datasource.enums.DataSource;
import com.zhonglai.luhui.datasource.enums.DataSourceType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhonglai.luhui.user.mapper.UserSocialInfoMapper;
... ... @@ -13,6 +16,7 @@ import com.zhonglai.luhui.user.service.IUserSocialInfoService;
* @author zhonglai
* @date 2025-10-20
*/
@DataSource(value = DataSourceType.SLAVE)
@Service
public class UserSocialInfoServiceImpl implements IUserSocialInfoService
{
... ...
... ... @@ -6,7 +6,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="UserBaseInfo" id="UserBaseInfoResult">
<result property="id" column="id" />
<result property="loginName" column="login_name" />
<result property="name" column="name" />
<result property="nickname" column="nickname" />
<result property="gender" column="gender" />
... ... @@ -17,13 +16,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectUserBaseInfoVo">
select id, login_name, name, nickname, gender, phone, email, img_url, create_time from user_base_info
select id, name, nickname, gender, phone, email, img_url, create_time from user_base_info
</sql>
<select id="selectUserBaseInfoList" parameterType="UserBaseInfo" resultMap="UserBaseInfoResult">
<include refid="selectUserBaseInfoVo"/>
<where>
<if test="loginName != null and loginName != ''"> and login_name like concat('%', #{loginName}, '%')</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="nickname != null and nickname != ''"> and nickname like concat('%', #{nickname}, '%')</if>
<if test="gender != null "> and gender = #{gender}</if>
... ... @@ -41,7 +39,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<insert id="insertUserBaseInfo" parameterType="UserBaseInfo" useGeneratedKeys="true" keyProperty="id">
insert into user_base_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="loginName != null and loginName != ''">login_name,</if>
<if test="name != null">name,</if>
<if test="nickname != null">nickname,</if>
<if test="gender != null">gender,</if>
... ... @@ -51,7 +48,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="loginName != null and loginName != ''">#{loginName},</if>
<if test="name != null">#{name},</if>
<if test="nickname != null">#{nickname},</if>
<if test="gender != null">#{gender},</if>
... ... @@ -65,7 +61,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<update id="updateUserBaseInfo" parameterType="UserBaseInfo">
update user_base_info
<trim prefix="SET" suffixOverrides=",">
<if test="loginName != null and loginName != ''">login_name = #{loginName},</if>
<if test="name != null">name = #{name},</if>
<if test="nickname != null">nickname = #{nickname},</if>
<if test="gender != null">gender = #{gender},</if>
... ...
... ... @@ -16,14 +16,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectUserExtraInfoVo">
select id, describe_img_url, describe, user_type, is_invalid, is_participate_in, company_id, share_number from user_extra_info
select id, describe_img_url, `describe`, user_type, is_invalid, is_participate_in, company_id, share_number from user_extra_info
</sql>
<select id="selectUserExtraInfoList" parameterType="UserExtraInfo" resultMap="UserExtraInfoResult">
<include refid="selectUserExtraInfoVo"/>
<where>
<if test="describeImgUrl != null and describeImgUrl != ''"> and describe_img_url = #{describeImgUrl}</if>
<if test="describe != null and describe != ''"> and describe = #{describe}</if>
<if test="describe != null and describe != ''"> and `describe` = #{describe}</if>
<if test="userType != null "> and user_type = #{userType}</if>
<if test="isInvalid != null "> and is_invalid = #{isInvalid}</if>
<if test="isParticipateIn != null "> and is_participate_in = #{isParticipateIn}</if>
... ... @@ -36,13 +36,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectUserExtraInfoVo"/>
where id = #{id}
</select>
<insert id="insertUserExtraInfo" parameterType="UserExtraInfo">
insert into user_extra_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="describeImgUrl != null">describe_img_url,</if>
<if test="describe != null">describe,</if>
<if test="describe != null">`describe`,</if>
<if test="userType != null">user_type,</if>
<if test="isInvalid != null">is_invalid,</if>
<if test="isParticipateIn != null">is_participate_in,</if>
... ...
... ... @@ -25,7 +25,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userLoginPassKey != null and userLoginPassKey != ''"> and user_login_pass_key = #{userLoginPassKey}</if>
</where>
</select>
<select id="selectUserLoginByLoginName" parameterType="UserLogin" resultMap="UserLoginResult">
SELECT
a.id ,
a.user_id ,
a.login_name,
a.login_pass,
a.user_login_pass_key
FROM user_login a
LEFT JOIN user_base_info b ON a.user_id = b.id
<where>
b.phone = #{loginName}
OR a.login_name = #{loginName}
OR b.email = #{loginName}
</where>
LIMIT 1
</select>
<select id="selectUserLoginById" parameterType="Integer" resultMap="UserLoginResult">
<include refid="selectUserLoginVo"/>
where id = #{id}
... ...
... ... @@ -7,6 +7,7 @@ import com.ruoyi.common.utils.GsonConstructor;
import lombok.Data;
import java.io.Serializable;
import java.util.HashMap;
/**
* 登录令牌
... ...
... ... @@ -36,7 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id}
</select>
<insert id="insertContentGtroupManagement" parameterType="ContentGroupManagement" useGeneratedKeys="true" keyProperty="id">
<insert id="insertContentGroupManagement" parameterType="ContentGroupManagement" useGeneratedKeys="true" keyProperty="id">
insert into content_group_management
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="content != null and content != ''">content,</if>
... ...
... ... @@ -87,12 +87,11 @@ public class SensorData {
public static StringBuffer deviceSensorDataListToInterval(List<DeviceSensorData> deviceSensorDataList,int lastTime,int interval)
public static StringBuffer deviceSensorDataListToIntervalNearest(List<DeviceSensorData> deviceSensorDataList,int lastTime,int interval)
{
int abs = interval;
String lastData = null;
StringBuffer stringBuffer = new StringBuffer(); //间隔时间
StringBuffer stringBuffer10 = new StringBuffer(); //间隔时间补全
for(DeviceSensorData deviceSensorData:deviceSensorDataList)
{
... ... @@ -102,7 +101,13 @@ public class SensorData {
{
while (Math.abs(lc)>interval)
{
setStringBuffer(lastData,lastTime,stringBuffer);
if(null != lastData)
{
stringBuffer10.append(lastTime);
stringBuffer10.append(",");
stringBuffer10.append(lastData);
stringBuffer10.append("\r\n");
}
lastTime = lastTime+interval;
abs = interval;
... ... @@ -119,7 +124,10 @@ public class SensorData {
}else if(lc==0){
setStringBuffer(deviceSensorData.getDataValue(),lastTime,stringBuffer);
stringBuffer10.append(lastTime);
stringBuffer10.append(",");
stringBuffer10.append(deviceSensorData.getDataValue());
stringBuffer10.append("\r\n");
lastTime = lastTime+interval;
abs = interval;
... ... @@ -135,9 +143,9 @@ public class SensorData {
}
//设置最后一个
setStringBuffer(lastData,lastTime,stringBuffer);
setStringBuffer(lastData,lastTime,stringBuffer10);
return stringBuffer;
return stringBuffer10;
}
private static void setStringBuffer(String lastData,Integer lastTime,StringBuffer stringBuffer)
... ...
... ... @@ -53,4 +53,5 @@ public class ApiLoginController extends BaseController {
ajax.put(Constants.TOKEN, token);
return ajax;
}
}
... ...
package com.zhonglai.luhui.api.controller.login.v2;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.zhonglai.luhui.action.BaseController;
import com.zhonglai.luhui.login.service.LoginService;
import com.zhonglai.luhui.user.service.IUserLoginService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "api登陆-v2")
@RestController
@RequestMapping("/v2/login/ApiLogin")
public class V2ApiLoginController extends BaseController {
@Autowired
private IUserLoginService userLoginService;
@ApiOperation("账号密码登陆")
@ApiImplicitParams({
@ApiImplicitParam(value = "账号",name = "user"),
@ApiImplicitParam(value = "密码",name = "pass"),
})
@PostMapping("/userpassLogin")
public AjaxResult userpassLogin(String user, String pass)
{
AjaxResult ajax = AjaxResult.success();
//生成令牌
String token = userLoginService.apiLoginByPass(user,pass);
ajax.put(Constants.TOKEN, token);
return ajax;
}
}
... ... @@ -365,7 +365,7 @@ public class DataService {
//间隔时间补全
Date sdate = new Date(startTime*1000l);
String day = DateUtils.parseDateToStr("yyyyMMdd",sdate);
stringBuffer10 = SensorData.deviceSensorDataListToIntervalCompletion(deviceSensorDataList, Integer.parseInt(sdate.getTime() / 1000 + ""), interval, day);
stringBuffer10 = SensorData.deviceSensorDataListToIntervalNearest(deviceSensorDataList, Integer.parseInt(sdate.getTime() / 1000 + ""), interval);
}else {
stringBuffer10 = new StringBuffer();
... ...
# 项目相关配置 jhlt: # 名称 name: zhonglai # 版本 version: 3.8.2 # 版权年份 copyrightYear: 2022 # 实例演示开关 demoEnabled: true # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) profile: D:/ruoyi/uploadPath # 获取ip地址开关 addressEnabled: false # 验证码类型 math 数组计算 char 字符验证 captchaType: math # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 port: 18080 servlet: # 应用的访问路径 context-path: / tomcat: # tomcat的URI编码 uri-encoding: UTF-8 # 连接数满后的排队数,默认为100 accept-count: 1000 threads: # tomcat最大线程数,默认为200 max: 800 # Tomcat启动初始化的线程数,默认值10 min-spare: 100 # 日志配置 logging: level: com.ruoyi: debug org.springframework: warn com.zhonglai.luhui: debug # Spring配置 spring: # 资源信息 messages: # 国际化资源文件路径 basename: i18n/messages profiles: active: druid # 文件上传 servlet: multipart: # 单个文件大小 max-file-size: 10MB # 设置总上传的文件大小 max-request-size: 20MB # 服务模块 devtools: restart: # 热部署开关 enabled: true # redis 配置 redis: # 地址 host: 119.23.218.181 # 端口,默认为6379 port: 6379 # 数据库索引 database: 1 # 密码 password: # 连接超时时间 timeout: 10s lettuce: pool: # 连接池中的最小空闲连接 min-idle: 0 # 连接池中的最大空闲连接 max-idle: 8 # 连接池的最大数据库连接数 max-active: 8 # #连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms # token配置 token: # 令牌自定义标识 header: Authorization # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) expireTime: 1440 rediskey: lh-api # MyBatis配置 mybatis: # 搜索指定包别名 typeAliasesPackage: com.ruoyi.**.domain,com.zhonglai.**.domain # 配置mapper的扫描,找到所有的mapper.xml映射文件 mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml # PageHelper分页插件 pagehelper: helperDialect: mysql supportMethodsArguments: true params: count=countSql # Swagger配置 swagger: # 是否开启swagger enabled: true # 请求前缀 pathMapping: /dev-api # 防止XSS攻击 xss: # 过滤开关 enabled: true # 排除链接(多个用逗号分隔) excludes: /system/notice # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* mqtt: client: device_life: 180 sys: ## // 对于登录login 注册register 验证码captchaImage 允许匿名访问 antMatchers: /login/ApiLogin/*,/content/**,/test/**,/fish/FishPriceCollection/*,/iot/IotTerminal/listByDeviceId/* # NameServer地址 rocketmq: name-server: 8.129.224.117:9876 # 默认的消息组 producer: group: deviceCommand send-message-timeout: 30000 send-topic: lh-mqtt-service-deviceCommand-test send-tags: 1 ssh: isEnabled: true host: 119.23.218.181 port: 22 user: root password: Luhui586 portForwardingList: - localPort: 6379 remotePort: 6379 remoteHost: 127.0.0.1 - localPort: 3306 remotePort: 3306 remoteHost: 127.0.0.1
\ No newline at end of file
# 项目相关配置 jhlt: # 名称 name: zhonglai # 版本 version: 3.8.2 # 版权年份 copyrightYear: 2022 # 实例演示开关 demoEnabled: true # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) profile: D:/ruoyi/uploadPath # 获取ip地址开关 addressEnabled: false # 验证码类型 math 数组计算 char 字符验证 captchaType: math # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 port: 18080 servlet: # 应用的访问路径 context-path: / tomcat: # tomcat的URI编码 uri-encoding: UTF-8 # 连接数满后的排队数,默认为100 accept-count: 1000 threads: # tomcat最大线程数,默认为200 max: 800 # Tomcat启动初始化的线程数,默认值10 min-spare: 100 # 日志配置 logging: level: com.ruoyi: debug org.springframework: warn com.zhonglai.luhui: debug # Spring配置 spring: # 资源信息 messages: # 国际化资源文件路径 basename: i18n/messages profiles: active: druid # 文件上传 servlet: multipart: # 单个文件大小 max-file-size: 10MB # 设置总上传的文件大小 max-request-size: 20MB # 服务模块 devtools: restart: # 热部署开关 enabled: true # redis 配置 redis: # 地址 host: 127.0.0.1 # 端口,默认为6379 port: 6379 # 数据库索引 database: 1 # 密码 password: # 连接超时时间 timeout: 10s lettuce: pool: # 连接池中的最小空闲连接 min-idle: 0 # 连接池中的最大空闲连接 max-idle: 8 # 连接池的最大数据库连接数 max-active: 8 # #连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms # token配置 token: # 令牌自定义标识 header: Authorization # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) expireTime: 1440 rediskey: lh-api # MyBatis配置 mybatis: # 搜索指定包别名 typeAliasesPackage: com.ruoyi.**.domain,com.zhonglai.**.domain # 配置mapper的扫描,找到所有的mapper.xml映射文件 mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml # PageHelper分页插件 pagehelper: helperDialect: mysql supportMethodsArguments: true params: count=countSql # Swagger配置 swagger: # 是否开启swagger enabled: true # 请求前缀 pathMapping: /dev-api # 防止XSS攻击 xss: # 过滤开关 enabled: true # 排除链接(多个用逗号分隔) excludes: /system/notice # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* mqtt: client: device_life: 180 sys: ## // 对于登录login 注册register 验证码captchaImage 允许匿名访问 antMatchers: /login/ApiLogin/*,/content/**,/test/**,/fish/FishPriceCollection/*,/iot/IotTerminal/listByDeviceId/* # NameServer地址 rocketmq: name-server: 8.129.224.117:9876 # 默认的消息组 producer: group: deviceCommand send-message-timeout: 30000 send-topic: lh-mqtt-service-deviceCommand-test send-tags: 1 ssh: isEnabled: true host: 119.23.218.181 port: 22 user: root password: Luhui586 portForwardingList: - localPort: 6379 remotePort: 6379 remoteHost: 127.0.0.1 - localPort: 3306 remotePort: 3306 remoteHost: 127.0.0.1
\ No newline at end of file
... ...
... ... @@ -59,6 +59,11 @@
<groupId>com.zhonglai.luhui</groupId>
<artifactId>lh-common-firewall</artifactId>
</dependency>
<dependency>
<groupId>com.zhonglai.luhui</groupId>
<artifactId>lh-user</artifactId>
</dependency>
</dependencies>
<build>
... ...
package com.zhonglai.luhui.login.controller.v2;
import com.ruoyi.common.core.domain.AjaxResult;
import com.zhonglai.luhui.action.BaseController;
import com.zhonglai.luhui.dao.service.PublicService;
import com.zhonglai.luhui.login.service.LoginService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@Api(tags = "api登陆V2")
@RestController
@RequestMapping("/v2/apiLogin")
public class ApiLoginV2Controller extends BaseController {
@Autowired
private PublicService publicService;
@Autowired
private LoginService loginService;
@ApiOperation("用户转移")
@PostMapping("/userTransfer")
public AjaxResult userTransfer()
{
List<Map<String,Object>> list =loginService.getRuningFishUserList();
for (Map<String,Object> runingFishuser : list)
{
List<Map<String,Object>> yu2leUserList = publicService.getObjectListBySQL("SELECT * FROM `liu_yu_le`.`user_info` where login_name='"+runingFishuser.get("login_name")+"'");
if (null == yu2leUserList || yu2leUserList.size() == 0)
{
publicService.updateBySql("INSERT INTO liu_yu_le.user_info(" +
"login_name,name,gender,phone,last_login_time,last_login_ip,create_time,last_address," +
"nickname,province_id,city_id,county_id,province_name,city_name,county_name,address" +
") VALUES (" +
"'" + runingFishuser.get("login_name") + "'," +
"'" + runingFishuser.get("name") + "'," +
"'" + runingFishuser.get("gender") + "'," +
"'" + runingFishuser.get("phone") + "'," +
(runingFishuser.get("last_login_time") == null ? "NULL" : "'" + runingFishuser.get("last_login_time") + "'") + "," +
(runingFishuser.get("last_login_ip") == null ? "NULL" : "'" + runingFishuser.get("last_login_ip") + "'") + "," +
"'" + runingFishuser.get("create_time") + "'," +
(runingFishuser.get("last_address") == null ? "NULL" : "'" + runingFishuser.get("last_address") + "'") + "," +
(runingFishuser.get("nickname") == null ? "NULL" : "'" + runingFishuser.get("nickname") + "'") + "," +
(runingFishuser.get("province_id") == null ? "NULL" : "'" + runingFishuser.get("province_id") + "'") + "," +
(runingFishuser.get("city_id") == null ? "NULL" : "'" + runingFishuser.get("city_id") + "'") + "," +
(runingFishuser.get("county_id") == null ? "NULL" : "'" + runingFishuser.get("county_id") + "'") + "," +
(runingFishuser.get("province_name") == null ? "NULL" : "'" + runingFishuser.get("province_name") + "'") + "," +
(runingFishuser.get("city_name") == null ? "NULL" : "'" + runingFishuser.get("city_name") + "'") + "," +
(runingFishuser.get("county_name") == null ? "NULL" : "'" + runingFishuser.get("county_name") + "'") + "," +
(runingFishuser.get("address") == null ? "NULL" : "'" + runingFishuser.get("address") + "'") +
")");
yu2leUserList = publicService.getObjectListBySQL("SELECT * FROM `liu_yu_le`.`user_info` where login_name='"+runingFishuser.get("login_name")+"'");
Map<String,Object> runingFishUserLoginMap =loginService.getRuningFishUserLogin((Integer) runingFishuser.get("id"));
try
{
publicService.updateBySql("INSERT INTO `liu_yu_le`.user_login(" +
"`user_id`,`login_name`,`login_pass`,`user_login_pass_key`) VALUES ("+
"'"+yu2leUserList.get(0).get("id")+"'," +
"'"+runingFishUserLoginMap.get("login_name")+"'," +
"'"+runingFishUserLoginMap.get("login_pass")+"'," +
"'"+runingFishUserLoginMap.get("user_login_pass_key")+"'" +
")");
}
catch (Exception e)
{
logger.error("更新异常",e);
}
}
Map<String,Object> yu2leUser = yu2leUserList.get(0);
if(!(runingFishuser.get("id").toString()).equals(yu2leUser.get("id")+""))
{
//查看是否有相同用户id的用户存在
Map<String,Object> sameRuningFishUser = loginService.getRuningFishUser((Integer) yu2leUser.get("id"));
if (null != sameRuningFishUser) //如果有就先把旧用户id的runing_fish_user_id改为新的
{
loginService.updateRuningFishUserId("500"+yu2leUser.get("id"),yu2leUser.get("id")+"");
}
loginService.updateRuningFishUserId(yu2leUser.get("id")+"",runingFishuser.get("id")+"");
}
}
return success();
}
}
\ No newline at end of file
... ...
package com.zhonglai.luhui.login.model;
public enum UserLoginCode {
USER_NOT_EXIST("用户不存在"),
USER_PASSWORD_ERROR("用户密码错误"),
USER_NOT_ACTIVE("用户未激活"),
USER_NOT_LOGIN("用户未登录"),
USER_NOT_LOGOUT("用户未登出"),
//用户失效
USER_INVALID("用户失效"),
//token失效
TOKEN_INVALID("token失效"),
//token超时
TOKEN_TIMEOUT("token超时"),
//token错误
TOKEN_ERROR("token错误");
private String message;
UserLoginCode(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
... ...
... ... @@ -11,6 +11,8 @@ import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.entity.SysUser;
import com.ruoyi.common.tool.SysLogininforType;
import com.zhonglai.luhui.dao.service.PublicService;
import com.zhonglai.luhui.datasource.enums.DataSource;
import com.zhonglai.luhui.datasource.enums.DataSourceType;
import com.zhonglai.luhui.redis.service.RedisCache;
import com.zhonglai.luhui.security.config.DefaultSecurityConfig;
import com.zhonglai.luhui.security.dto.*;
... ... @@ -24,6 +26,9 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* 登陆业务
*/
... ... @@ -175,4 +180,55 @@ public class LoginService {
}
return authentication;
}
@DataSource(DataSourceType.SLAVE)
public List<Map<String,Object>> getRuningFishUserList()
{
return publicService.getObjectListBySQL("SELECT * FROM `user_info`");
}
@DataSource(DataSourceType.SLAVE)
public Map<String,Object> getRuningFishUserLogin(Integer userId)
{
List<Map<String,Object>> list = publicService.getObjectListBySQL("SELECT * FROM `user_login` where user_id="+userId);
if(null == list || list.size() == 0)
{
return null;
}
return list.get(0);
}
@DataSource(DataSourceType.SLAVE)
public Map<String,Object> getRuningFishUser(Integer userId)
{
List<Map<String,Object>> list = publicService.getObjectListBySQL("SELECT * FROM `user_info` where id="+userId);
if(null == list || list.size() == 0)
{
return null;
}
return list.get(0);
}
@DataSource(DataSourceType.SLAVE)
public void updateRuningFishUserId(String yu2leUserId,String runingFishUserId)
{
publicService.updateBySql("update device_info set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update device_parameter_config set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update device_timer set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update farming_daily set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update farming_disease_report set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update farming_harvest set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update farming_medication set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update farming_water set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update runingfish_base set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update runingfish_pond set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update runingfish_sink set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update sink_maintain_info set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update sys_file_upload set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update user_camera_device set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update user_camera_recharge set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update user_login set user_id="+yu2leUserId+" where user_id="+runingFishUserId);
publicService.updateBySql("update user_info set id="+yu2leUserId+" where id="+runingFishUserId);
}
}
... ...
package com.zhonglai.luhui.login.util;
import io.jsonwebtoken.*;
import io.jsonwebtoken.SignatureException;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.*;
import java.security.spec.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
/**
* JJWT 0.9.1 工具类
* 功能:生成 token、解析 token、校验 token
*
* 说明:
* - SECRET 应妥善保管,不要硬编码到源码(可从配置文件/env读取)
* - expirationSeconds 单位为秒
*/
public class JwtUtils {
private static final String PRIVATE_KEY_PATH = "keys/rsa_private_key.pem";
private static final String PUBLIC_KEY_PATH = "keys/rsa_public_key.pem";
// Token 有效期:24 小时
private static final long EXPIRATION_SECONDS = 60 * 60 * 24;
private static PrivateKey privateKey;
private static PublicKey publicKey;
static {
try {
privateKey = loadPrivateKey(PRIVATE_KEY_PATH);
publicKey = loadPublicKey(PUBLIC_KEY_PATH);
} catch (Exception e) {
throw new RuntimeException("加载 RSA 公私钥失败", e);
}
}
// -------------------- 生成 Token --------------------
public static String generateToken(Map<String, Object> claims, String subject) {
return generateToken(claims,subject,EXPIRATION_SECONDS);
}
public static String generateToken(Map<String, Object> claims, String subject,long EXPIRATION_SECONDS) {
Date now = new Date();
Date expiryDate = new Date(now.getTime() + EXPIRATION_SECONDS * 1000L);
return Jwts.builder()
.setClaims(claims)
.setSubject(subject)
.setIssuedAt(now)
.setExpiration(expiryDate)
.signWith(SignatureAlgorithm.RS256, privateKey)
.compact();
}
public static String generateToken(String subject) {
return generateToken(null, subject);
}
// -------------------- 解析 Token --------------------
private static Claims getAllClaimsFromToken(String token) throws JwtException {
return Jwts.parser()
.setSigningKey(publicKey)
.parseClaimsJws(token)
.getBody();
}
public static <T> T getClaimFromToken(String token, Function<Claims, T> claimsResolver) {
Claims claims = getAllClaimsFromToken(token);
return claimsResolver.apply(claims);
}
public static String getSubjectFromToken(String token) {
try {
return getClaimFromToken(token, Claims::getSubject);
} catch (ExpiredJwtException e) {
return e.getClaims().getSubject();
} catch (JwtException e) {
return null;
}
}
public static Object getCustomClaim(String token, String key) {
try {
Claims claims = getAllClaimsFromToken(token);
return claims.get(key);
} catch (JwtException e) {
return null;
}
}
// -------------------- 验证 Token --------------------
public static boolean isTokenExpired(String token) {
try {
Date expiration = getClaimFromToken(token, Claims::getExpiration);
return expiration.before(new Date());
} catch (ExpiredJwtException e) {
return true;
} catch (JwtException e) {
return true;
}
}
public static boolean validateToken(String token, String expectedSubject) {
try {
Claims claims = getAllClaimsFromToken(token);
String subject = claims.getSubject();
Date expiration = claims.getExpiration();
return subject.equals(expectedSubject) && expiration.after(new Date());
} catch (SignatureException e) {
System.err.println("签名验证失败: " + e.getMessage());
return false;
} catch (JwtException e) {
return false;
}
}
public static boolean validateTokenSignatureAndExpiry(String token) {
try {
Claims claims = getAllClaimsFromToken(token);
return claims.getExpiration().after(new Date());
} catch (JwtException e) {
return false;
}
}
// -------------------- 其他方法 --------------------
public static String getUserIdFromToken(String token) {
Object userId = getCustomClaim(token, "userId");
return userId != null ? userId.toString() : null;
}
public static String refreshToken(String token) {
try {
Claims claims = getAllClaimsFromToken(token);
return generateToken(claims, claims.getSubject());
} catch (JwtException e) {
return null;
}
}
// -------------------- RSA 密钥加载 --------------------
private static PrivateKey loadPrivateKey(String filePath) throws IOException, GeneralSecurityException {
String key = new String(Files.readAllBytes(Paths.get(filePath)))
.replaceAll("-----BEGIN (.*)-----", "")
.replaceAll("-----END (.*)----", "")
.replaceAll("\\s+", "");
byte[] keyBytes = java.util.Base64.getDecoder().decode(key);
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePrivate(spec);
}
private static PublicKey loadPublicKey(String filePath) throws IOException, GeneralSecurityException {
String key = new String(Files.readAllBytes(Paths.get(filePath)))
.replaceAll("-----BEGIN (.*)-----", "")
.replaceAll("-----END (.*)----", "")
.replaceAll("\\s+", "");
byte[] keyBytes = java.util.Base64.getDecoder().decode(key);
X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePublic(spec);
}
public static void main(String[] args) {
Map<String, Object> claims = new HashMap<>();
claims.put("userId", 1001);
claims.put("role", "admin");
String token = generateToken(null, "alice");
System.out.println("Token: " + token);
String subject = getSubjectFromToken(token);
System.out.println("Subject: " + subject);
String role = (String) getCustomClaim(token, "role");
System.out.println("Role: " + role);
boolean valid = validateToken(token, "alice");
System.out.println("Token 有效: " + valid);
}
}
... ...
... ... @@ -12,10 +12,10 @@ spring:
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
enabled: true
url: jdbc:mysql://rm-wz9446bn79p0r80ew0o.mysql.rds.aliyuncs.com:3306/runing_fish?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: luhui
password: Luhui586
# 初始连接数
initialSize: 5
# 最小连接池数量
... ...
# 项目相关配置 jhlt: # 名称 name: zhonglai # 版本 version: 3.8.2 # 版权年份 copyrightYear: 2022 # 实例演示开关 demoEnabled: true # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) profile: D:/ruoyi/uploadPath # 获取ip地址开关 addressEnabled: false # 验证码类型 math 数组计算 char 字符验证 captchaType: math # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 port: 8061 servlet: # 应用的访问路径 context-path: / tomcat: # tomcat的URI编码 uri-encoding: UTF-8 # 连接数满后的排队数,默认为100 accept-count: 1000 threads: # tomcat最大线程数,默认为200 max: 800 # Tomcat启动初始化的线程数,默认值10 min-spare: 100 # 日志配置 logging: level: com.ruoyi: debug org.springframework: warn # Spring配置 spring: # 资源信息 messages: # 国际化资源文件路径 basename: i18n/messages profiles: active: druid # 文件上传 servlet: multipart: # 单个文件大小 max-file-size: 10MB # 设置总上传的文件大小 max-request-size: 20MB # 服务模块 devtools: restart: # 热部署开关 enabled: true # redis 配置 redis: # 地址 host: 47.112.163.61 # 端口,默认为6379 port: 9527 # 数据库索引 database: 1 # 密码 password: Luhui586 # 连接超时时间 timeout: 10s lettuce: pool: # 连接池中的最小空闲连接 min-idle: 0 # 连接池中的最大空闲连接 max-idle: 8 # 连接池的最大数据库连接数 max-active: 8 # #连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms # token配置 token: # 令牌自定义标识 header: Authorization # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) expireTime: 1440 rediskey: lh-admin # MyBatis配置 mybatis: # 搜索指定包别名 typeAliasesPackage: com.ruoyi.**.domain, # 配置mapper的扫描,找到所有的mapper.xml映射文件 mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml # PageHelper分页插件 pagehelper: helperDialect: mysql supportMethodsArguments: true params: count=countSql # Swagger配置 swagger: # 是否开启swagger enabled: true # 请求前缀 pathMapping: /dev-api # 防止XSS攻击 xss: # 过滤开关 enabled: true # 排除链接(多个用逗号分隔) excludes: /system/notice # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* mqtt: client: device_life: 180 sys: ## // 对于登录login 注册register 验证码captchaImage 允许匿名访问 antMatchers: /** # NameServer地址 rocketmq: name-server: 47.115.144.179:9876 # 默认的消息组 producer: group: deviceCommand send-message-timeout: 30000 send-topic: lh-mqtt-service-deviceCommand-test send-tags: 1
\ No newline at end of file
# 项目相关配置
jhlt:
# 名称
name: zhonglai
# 版本
version: 3.8.2
# 版权年份
copyrightYear: 2022
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
profile: D:/ruoyi/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
captchaType: math
# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080
port: 8061
servlet:
# 应用的访问路径
context-path: /
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# 连接数满后的排队数,默认为100
accept-count: 1000
threads:
# tomcat最大线程数,默认为200
max: 800
# Tomcat启动初始化的线程数,默认值10
min-spare: 100
# 日志配置
logging:
level:
com.ruoyi: debug
com.zhonglai.luhui: debug
org.springframework: warn
# Spring配置
spring:
# 资源信息
messages:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: druid
# 文件上传
servlet:
multipart:
# 单个文件大小
max-file-size: 10MB
# 设置总上传的文件大小
max-request-size: 20MB
# 服务模块
devtools:
restart:
# 热部署开关
enabled: true
# redis 配置
redis:
# 地址
host: 47.112.163.61
# 端口,默认为6379
port: 9527
# 数据库索引
database: 1
# 密码
password: Luhui586
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# token配置
token:
# 令牌自定义标识
header: Authorization
# 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期(默认30分钟)
expireTime: 1440
rediskey: lh-admin
# MyBatis配置
mybatis:
# 搜索指定包别名
typeAliasesPackage: com.ruoyi.**.domain,com.zhonglai.luhui.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
# PageHelper分页插件
pagehelper:
helperDialect: mysql
supportMethodsArguments: true
params: count=countSql
# Swagger配置
swagger:
# 是否开启swagger
enabled: true
# 请求前缀
pathMapping: /dev-api
# 防止XSS攻击
xss:
# 过滤开关
enabled: true
# 排除链接(多个用逗号分隔)
excludes: /system/notice
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*
mqtt:
client:
device_life: 180
sys:
## // 对于登录login 注册register 验证码captchaImage 允许匿名访问
antMatchers: /**
# NameServer地址
rocketmq:
name-server: 47.115.144.179:9876
# 默认的消息组
producer:
group: deviceCommand
send-message-timeout: 30000
send-topic: lh-mqtt-service-deviceCommand-test
send-tags: 1
ssh:
isEnabled: true
host: 47.112.163.61
port: 22
user: root
password: Luhui586
portForwardingList:
- localPort: 3306
remotePort: 3306
remoteHost: rm-wz9446bn79p0r80ew.mysql.rds.aliyuncs.com
\ No newline at end of file
... ...