Browse Source

Merge branch 'mh' of http://124.70.32.114:3100/woka/cesium-map-object into ctw

# Conflicts:
#	ruoyi-ui/src/views/cesiumMap/index.vue
lbj
ctw 3 months ago
parent
commit
a8ae3f9dbd
  1. 8
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java
  2. 2
      ruoyi-admin/src/main/resources/application-druid.yml
  3. 269
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
  4. 10
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java
  5. 1
      ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java
  6. 4
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/UsersMapper.java
  7. 1
      ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
  8. 10
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
  9. 8
      ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
  10. 6
      ruoyi-system/src/main/resources/mapper/system/UsersMapper.xml
  11. 90
      ruoyi-ui/src/views/cesiumMap/index.vue
  12. 133
      ruoyi-ui/src/views/login.vue
  13. 1
      ruoyi-ui/src/views/register.vue
  14. 2
      ruoyi-ui/vue.config.js

8
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java

@ -28,6 +28,14 @@ public class SysRegisterController extends BaseController
@PostMapping("/register") @PostMapping("/register")
public AjaxResult register(@RequestBody RegisterBody user) public AjaxResult register(@RequestBody RegisterBody user)
{ {
// 1. 先获取配置值并存入变量
String registerConfig = configService.selectConfigByKey("sys.account.registerUser");
// 2. 打印到控制台
System.out.println("获取到的 Value: [" + registerConfig + "]"); // 加括号能看出是否有空格
System.out.println("类型判断结果: " + "true".equals(registerConfig));
System.out.println("======================");
if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
{ {
return error("当前系统没有开启注册功能!"); return error("当前系统没有开启注册功能!");

2
ruoyi-admin/src/main/resources/application-druid.yml

@ -8,7 +8,7 @@ spring:
master: master:
url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root username: root
password: A20040303ctw! password: 123456
# 从库数据源 # 从库数据源
slave: slave:
# 从数据源开关/默认关闭 # 从数据源开关/默认关闭

269
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java

@ -3,6 +3,7 @@ package com.ruoyi.common.core.domain.entity;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
@ -16,321 +17,333 @@ import com.ruoyi.common.xss.Xss;
/** /**
* 用户对象 sys_user * 用户对象 sys_user
* *
* @author ruoyi * @author ruoyi
*/ */
public class SysUser extends BaseEntity public class SysUser extends BaseEntity {
{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 用户ID */ /**
* 用户ID
*/
@Excel(name = "用户序号", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "用户编号") @Excel(name = "用户序号", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "用户编号")
private Long userId; private Long userId;
/** 部门ID */ /**
* 部门ID
*/
@Excel(name = "部门编号", type = Type.IMPORT) @Excel(name = "部门编号", type = Type.IMPORT)
private Long deptId; private Long deptId;
/** 用户账号 */ /**
* 用户账号
*/
@Excel(name = "登录名称") @Excel(name = "登录名称")
private String userName; private String userName;
/** 用户昵称 */ /**
* 用户昵称
*/
@Excel(name = "用户名称") @Excel(name = "用户名称")
private String nickName; private String nickName;
/** 用户邮箱 */ /**
* 用户邮箱
*/
@Excel(name = "用户邮箱") @Excel(name = "用户邮箱")
private String email; private String email;
/** 手机号码 */ /**
* 手机号码
*/
@Excel(name = "手机号码", cellType = ColumnType.TEXT) @Excel(name = "手机号码", cellType = ColumnType.TEXT)
private String phonenumber; private String phonenumber;
/** 用户性别 */ /**
* 用户性别
*/
@Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知") @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
private String sex; private String sex;
/** 用户头像 */ /**
* 用户头像
*/
private String avatar; private String avatar;
/** 密码 */ /**
* 密码
*/
private String password; private String password;
/** 账号状态(0正常 1停用) */ /**
* 账号状态0正常 1停用
*/
@Excel(name = "账号状态", readConverterExp = "0=正常,1=停用") @Excel(name = "账号状态", readConverterExp = "0=正常,1=停用")
private String status; private String status;
/** 删除标志(0代表存在 2代表删除) */ /**
* 删除标志0代表存在 2代表删除
*/
private String delFlag; private String delFlag;
/** 最后登录IP */ /**
* 最后登录IP
*/
@Excel(name = "最后登录IP", type = Type.EXPORT) @Excel(name = "最后登录IP", type = Type.EXPORT)
private String loginIp; private String loginIp;
/** 最后登录时间 */ /**
* 最后登录时间
*/
@Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
private Date loginDate; private Date loginDate;
/** 密码最后更新时间 */ /**
* 密码最后更新时间
*/
private Date pwdUpdateDate; private Date pwdUpdateDate;
/** 部门对象 */ /**
* 部门对象
*/
@Excels({ @Excels({
@Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT), @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
@Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT) @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
}) })
private SysDept dept; private SysDept dept;
/** 角色对象 */ /**
* 角色对象
*/
private List<SysRole> roles; private List<SysRole> roles;
/** 角色组 */ /**
* 角色组
*/
private Long[] roleIds; private Long[] roleIds;
/** 岗位组 */ /**
* 岗位组
*/
private Long[] postIds; private Long[] postIds;
/** 角色ID */ /**
* 角色ID
*/
private Long roleId; private Long roleId;
public SysUser() /**
{ * 权限等级
*/
@Excel(name = "权限等级", readConverterExp = "1=管理员,2=主持人,3=普通用户")
private String userLevel;
public SysUser() {
} }
public SysUser(Long userId) public SysUser(Long userId) {
{
this.userId = userId; this.userId = userId;
} }
public Long getUserId() public Long getUserId() {
{
return userId; return userId;
} }
public void setUserId(Long userId) public void setUserId(Long userId) {
{
this.userId = userId; this.userId = userId;
} }
public boolean isAdmin() public boolean isAdmin() {
{
return SecurityUtils.isAdmin(this.userId); return SecurityUtils.isAdmin(this.userId);
} }
public Long getDeptId() public Long getDeptId() {
{
return deptId; return deptId;
} }
public void setDeptId(Long deptId) public void setDeptId(Long deptId) {
{
this.deptId = deptId; this.deptId = deptId;
} }
@Xss(message = "用户昵称不能包含脚本字符") @Xss(message = "用户昵称不能包含脚本字符")
@Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符") @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
public String getNickName() public String getNickName() {
{
return nickName; return nickName;
} }
public void setNickName(String nickName) public void setNickName(String nickName) {
{
this.nickName = nickName; this.nickName = nickName;
} }
@Xss(message = "用户账号不能包含脚本字符") @Xss(message = "用户账号不能包含脚本字符")
@NotBlank(message = "用户账号不能为空") @NotBlank(message = "用户账号不能为空")
@Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符") @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
public String getUserName() public String getUserName() {
{
return userName; return userName;
} }
public void setUserName(String userName) public void setUserName(String userName) {
{
this.userName = userName; this.userName = userName;
} }
@Email(message = "邮箱格式不正确") @Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符") @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
public String getEmail() public String getEmail() {
{
return email; return email;
} }
public void setEmail(String email) public void setEmail(String email) {
{
this.email = email; this.email = email;
} }
@Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符") @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
public String getPhonenumber() public String getPhonenumber() {
{
return phonenumber; return phonenumber;
} }
public void setPhonenumber(String phonenumber) public void setPhonenumber(String phonenumber) {
{
this.phonenumber = phonenumber; this.phonenumber = phonenumber;
} }
public String getSex() public String getSex() {
{
return sex; return sex;
} }
public void setSex(String sex) public void setSex(String sex) {
{
this.sex = sex; this.sex = sex;
} }
public String getAvatar() public String getAvatar() {
{
return avatar; return avatar;
} }
public void setAvatar(String avatar) public void setAvatar(String avatar) {
{
this.avatar = avatar; this.avatar = avatar;
} }
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY) @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
public String getPassword() public String getPassword() {
{
return password; return password;
} }
public void setPassword(String password) public void setPassword(String password) {
{
this.password = password; this.password = password;
} }
public String getStatus() public String getStatus() {
{
return status; return status;
} }
public void setStatus(String status) public void setStatus(String status) {
{
this.status = status; this.status = status;
} }
public String getDelFlag() public String getDelFlag() {
{
return delFlag; return delFlag;
} }
public void setDelFlag(String delFlag) public void setDelFlag(String delFlag) {
{
this.delFlag = delFlag; this.delFlag = delFlag;
} }
public String getLoginIp() public String getLoginIp() {
{
return loginIp; return loginIp;
} }
public void setLoginIp(String loginIp) public void setLoginIp(String loginIp) {
{
this.loginIp = loginIp; this.loginIp = loginIp;
} }
public Date getLoginDate() public Date getLoginDate() {
{
return loginDate; return loginDate;
} }
public void setLoginDate(Date loginDate) public void setLoginDate(Date loginDate) {
{
this.loginDate = loginDate; this.loginDate = loginDate;
} }
public Date getPwdUpdateDate() public Date getPwdUpdateDate() {
{
return pwdUpdateDate; return pwdUpdateDate;
} }
public void setPwdUpdateDate(Date pwdUpdateDate) public void setPwdUpdateDate(Date pwdUpdateDate) {
{
this.pwdUpdateDate = pwdUpdateDate; this.pwdUpdateDate = pwdUpdateDate;
} }
public SysDept getDept() public SysDept getDept() {
{
return dept; return dept;
} }
public void setDept(SysDept dept) public void setDept(SysDept dept) {
{
this.dept = dept; this.dept = dept;
} }
public List<SysRole> getRoles() public List<SysRole> getRoles() {
{
return roles; return roles;
} }
public void setRoles(List<SysRole> roles) public void setRoles(List<SysRole> roles) {
{
this.roles = roles; this.roles = roles;
} }
public Long[] getRoleIds() public Long[] getRoleIds() {
{
return roleIds; return roleIds;
} }
public void setRoleIds(Long[] roleIds) public void setRoleIds(Long[] roleIds) {
{
this.roleIds = roleIds; this.roleIds = roleIds;
} }
public Long[] getPostIds() public Long[] getPostIds() {
{
return postIds; return postIds;
} }
public void setPostIds(Long[] postIds) public void setPostIds(Long[] postIds) {
{
this.postIds = postIds; this.postIds = postIds;
} }
public Long getRoleId() public Long getRoleId() {
{
return roleId; return roleId;
} }
public void setRoleId(Long roleId) public void setRoleId(Long roleId) {
{
this.roleId = roleId; this.roleId = roleId;
} }
public String getUserLevel() {
return userLevel;
}
public void setUserLevel(String userLevel) {
this.userLevel = userLevel;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("userId", getUserId()) .append("userId", getUserId())
.append("deptId", getDeptId()) .append("deptId", getDeptId())
.append("userName", getUserName()) .append("userName", getUserName())
.append("nickName", getNickName()) .append("nickName", getNickName())
.append("email", getEmail()) .append("email", getEmail())
.append("phonenumber", getPhonenumber()) .append("phonenumber", getPhonenumber())
.append("sex", getSex()) .append("sex", getSex())
.append("avatar", getAvatar()) .append("avatar", getAvatar())
.append("password", getPassword()) .append("password", getPassword())
.append("status", getStatus()) .append("status", getStatus())
.append("delFlag", getDelFlag()) .append("delFlag", getDelFlag())
.append("loginIp", getLoginIp()) .append("loginIp", getLoginIp())
.append("loginDate", getLoginDate()) .append("loginDate", getLoginDate())
.append("pwdUpdateDate", getPwdUpdateDate()) .append("pwdUpdateDate", getPwdUpdateDate())
.append("createBy", getCreateBy()) .append("createBy", getCreateBy())
.append("createTime", getCreateTime()) .append("createTime", getCreateTime())
.append("updateBy", getUpdateBy()) .append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime()) .append("updateTime", getUpdateTime())
.append("remark", getRemark()) .append("remark", getRemark())
.append("dept", getDept()) .append("dept", getDept())
.toString(); .append("userLevel", getUserLevel())
.toString()
;
} }
} }

10
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java

@ -7,5 +7,15 @@ package com.ruoyi.common.core.domain.model;
*/ */
public class RegisterBody extends LoginBody public class RegisterBody extends LoginBody
{ {
private String userLevel;
public String getUserLevel()
{
return userLevel;
}
public void setUserLevel(String role)
{
this.userLevel = userLevel;
}
} }

1
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java

@ -79,6 +79,7 @@ public class SysRegisterService
sysUser.setNickName(username); sysUser.setNickName(username);
sysUser.setPwdUpdateDate(DateUtils.getNowDate()); sysUser.setPwdUpdateDate(DateUtils.getNowDate());
sysUser.setPassword(SecurityUtils.encryptPassword(password)); sysUser.setPassword(SecurityUtils.encryptPassword(password));
sysUser.setUserLevel(registerBody.getUserLevel());
boolean regFlag = userService.registerUser(sysUser); boolean regFlag = userService.registerUser(sysUser);
if (!regFlag) if (!regFlag)
{ {

4
ruoyi-system/src/main/java/com/ruoyi/system/mapper/UsersMapper.java

@ -1,6 +1,8 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import java.util.List; import java.util.List;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.domain.Users; import com.ruoyi.system.domain.Users;
/** /**
@ -58,4 +60,6 @@ public interface UsersMapper
* @return 结果 * @return 结果
*/ */
public int deleteUsersByIds(Long[] ids); public int deleteUsersByIds(Long[] ids);
SysUser selectUserByUserName(String userName);
} }

1
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java

@ -3,6 +3,7 @@ package com.ruoyi.system.service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.domain.Users;
/** /**
* 用户 业务层 * 用户 业务层

10
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@ -5,6 +5,9 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.validation.Validator; import javax.validation.Validator;
import com.ruoyi.system.domain.Users;
import com.ruoyi.system.mapper.*;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -23,11 +26,6 @@ import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.domain.SysUserPost; import com.ruoyi.system.domain.SysUserPost;
import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.mapper.SysPostMapper;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysUserPostMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
@ -107,7 +105,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* 通过用户名查询用户 * 通过用户名查询用户
* *
* @param userName 用户名 * @param userName 用户名
* @return 用户对象信息 * @return 用户对象信息
*/ */

8
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@ -24,6 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="remark" column="remark" /> <result property="remark" column="remark" />
<result property="userLevel" column="user_level" />
<association property="dept" javaType="SysDept" resultMap="deptResult" /> <association property="dept" javaType="SysDept" resultMap="deptResult" />
<collection property="roles" javaType="java.util.List" resultMap="RoleResult" /> <collection property="roles" javaType="java.util.List" resultMap="RoleResult" />
</resultMap> </resultMap>
@ -48,7 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectUserVo"> <sql id="selectUserVo">
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_by, u.create_time, u.remark, select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_by, u.create_time, u.remark,u.user_level,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u from sys_user u
@ -58,7 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql> </sql>
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult"> <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.user_level, d.dept_name, d.leader from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
where u.del_flag = '0' where u.del_flag = '0'
<if test="userId != null and userId != 0"> <if test="userId != null and userId != 0">
@ -158,6 +159,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="pwdUpdateDate != null">pwd_update_date,</if> <if test="pwdUpdateDate != null">pwd_update_date,</if>
<if test="createBy != null and createBy != ''">create_by,</if> <if test="createBy != null and createBy != ''">create_by,</if>
<if test="remark != null and remark != ''">remark,</if> <if test="remark != null and remark != ''">remark,</if>
<if test="userLevel != null and userLevel != ''">user_level,</if>
create_time create_time
)values( )values(
<if test="userId != null and userId != ''">#{userId},</if> <if test="userId != null and userId != ''">#{userId},</if>
@ -173,6 +175,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="pwdUpdateDate != null">#{pwdUpdateDate},</if> <if test="pwdUpdateDate != null">#{pwdUpdateDate},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if> <if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="remark != null and remark != ''">#{remark},</if> <if test="remark != null and remark != ''">#{remark},</if>
<if test="userLevel != null and userLevel != ''">#{userLevel},</if>
sysdate() sysdate()
) )
</insert> </insert>
@ -192,6 +195,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="loginDate != null">login_date = #{loginDate},</if> <if test="loginDate != null">login_date = #{loginDate},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
<if test="remark != null">remark = #{remark},</if> <if test="remark != null">remark = #{remark},</if>
<if test="userLevel != null and userLevel != ''">user_level = #{userLevel},</if>
update_time = sysdate() update_time = sysdate()
</set> </set>
where user_id = #{userId} where user_id = #{userId}

6
ruoyi-system/src/main/resources/mapper/system/UsersMapper.xml

@ -29,6 +29,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id} where id = #{id}
</select> </select>
<select id="selectUserByUserName" parameterType="String" resultMap="com.ruoyi.system.mapper.UsersMapper.UsersResult">
select id, username, password, role
from users
where username = #{userName}
</select>
<insert id="insertUsers" parameterType="Users" useGeneratedKeys="true" keyProperty="id"> <insert id="insertUsers" parameterType="Users" useGeneratedKeys="true" keyProperty="id">
insert into users insert into users
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">

90
ruoyi-ui/src/views/cesiumMap/index.vue

@ -13,16 +13,16 @@
<!-- 工具栏内容 --> <!-- 工具栏内容 -->
<div class="location-panel"> <div class="location-panel">
<div class="input-group"> <div class="input-group">
<input <input
type="number" type="number"
v-model.number="targetLng" v-model.number="targetLng"
placeholder="经度 (例如 116.40)" placeholder="经度 (例如 116.40)"
step="0.000001" step="0.000001"
> >
<input <input
type="number" type="number"
v-model.number="targetLat" v-model.number="targetLat"
placeholder="纬度 (例如 39.90)" placeholder="纬度 (例如 39.90)"
step="0.000001" step="0.000001"
> >
<button @click="flyToLocation" class="tool-btn location-btn"> <button @click="flyToLocation" class="tool-btn location-btn">
@ -242,15 +242,15 @@ export default {
drawingPoints: [], drawingPoints: [],
drawingStartPoint: null, drawingStartPoint: null,
isDrawing: false, isDrawing: false,
// //
allEntities: [], // allEntities: [], //
entityCounter: 0, entityCounter: 0,
selectedEntity: null, // selectedEntity: null, //
// //
measurementResult: null, measurementResult: null,
// //
defaultStyles: { defaultStyles: {
point: { color: '#FF0000', size: 12 }, point: { color: '#FF0000', size: 12 },
@ -400,11 +400,11 @@ export default {
// TilingScheme使 WebMercator // TilingScheme使 WebMercator
tilingScheme: new Cesium.WebMercatorTilingScheme() tilingScheme: new Cesium.WebMercatorTilingScheme()
}) })
this.viewer.imageryLayers.addImageryProvider(administrativeMap) this.viewer.imageryLayers.addImageryProvider(administrativeMap)
// add // add
} catch (error) { } catch (error) {
console.error('加载地图失败:', error) console.error('加载地图失败:', error)
this.showGridLayer() this.showGridLayer()
@ -497,7 +497,7 @@ export default {
this.viewer.entities.remove(this.tempEntity); this.viewer.entities.remove(this.tempEntity);
this.tempEntity = null; this.tempEntity = null;
} }
// //
if (this.tempPreviewEntity) { if (this.tempPreviewEntity) {
this.viewer.entities.remove(this.tempPreviewEntity); this.viewer.entities.remove(this.tempPreviewEntity);
@ -528,7 +528,7 @@ export default {
this.drawingPoints = []; this.drawingPoints = [];
// //
let activeCursorPosition = null; let activeCursorPosition = null;
// //
if (this.tempEntity) this.viewer.entities.remove(this.tempEntity); if (this.tempEntity) this.viewer.entities.remove(this.tempEntity);
if (this.tempPreviewEntity) this.viewer.entities.remove(this.tempPreviewEntity); if (this.tempPreviewEntity) this.viewer.entities.remove(this.tempPreviewEntity);
@ -552,7 +552,7 @@ export default {
// === 线 === // === 线 ===
if (this.drawingPoints.length === 1) { if (this.drawingPoints.length === 1) {
activeCursorPosition = position; // activeCursorPosition = position; //
// 线 // 线
this.tempPreviewEntity = this.viewer.entities.add({ this.tempPreviewEntity = this.viewer.entities.add({
polyline: { polyline: {
@ -576,7 +576,7 @@ export default {
clampToGround: true // clampToGround: true //
} }
}); });
} }
// === /线 === // === /线 ===
else { else {
// 线线 // 线线
@ -608,7 +608,7 @@ export default {
} else { } else {
this.cancelDrawing(); this.cancelDrawing();
} }
// //
activeCursorPosition = null; activeCursorPosition = null;
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK); }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
@ -622,7 +622,7 @@ export default {
this.viewer.entities.remove(this.tempPreviewEntity); this.viewer.entities.remove(this.tempPreviewEntity);
this.tempPreviewEntity = null; this.tempPreviewEntity = null;
} }
// 线 // 线
const entity = this.addLineEntity([...this.drawingPoints]); const entity = this.addLineEntity([...this.drawingPoints]);
@ -685,7 +685,7 @@ export default {
// 使便 // 使便
material: Cesium.Color.fromCssColorString(this.defaultStyles.polygon.color).withAlpha(0.5), material: Cesium.Color.fromCssColorString(this.defaultStyles.polygon.color).withAlpha(0.5),
// //
perPositionHeight: false perPositionHeight: false
}, },
// --- 线 --- // --- 线 ---
polyline: { polyline: {
@ -717,7 +717,7 @@ export default {
} else { } else {
this.cancelDrawing(); // this.cancelDrawing(); //
} }
// //
activeCursorPosition = null; activeCursorPosition = null;
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK); }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
@ -785,15 +785,15 @@ export default {
clampToGround: true // clampToGround: true //
} }
}); });
} }
// --- B --- // --- B ---
else { else {
this.drawingPoints.push(position); this.drawingPoints.push(position);
// //
activeCursorPosition = null; activeCursorPosition = null;
// //
this.finishRectangleDrawing(); this.finishRectangleDrawing();
} }
} }
}, Cesium.ScreenSpaceEventType.LEFT_CLICK); }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
@ -807,7 +807,7 @@ export default {
finishRectangleDrawing() { finishRectangleDrawing() {
// 1. // 1.
const rect = Cesium.Rectangle.fromCartesianArray(this.drawingPoints); const rect = Cesium.Rectangle.fromCartesianArray(this.drawingPoints);
// 2. // 2.
if (this.tempEntity) { if (this.tempEntity) {
this.viewer.entities.remove(this.tempEntity); this.viewer.entities.remove(this.tempEntity);
@ -826,10 +826,10 @@ export default {
clampToGround: true clampToGround: true
} }
}); });
// 4. // 4.
this.allEntities.push(finalEntity); this.allEntities.push(finalEntity);
// 5. // 5.
const area = this.calculateRectangleArea(rect); const area = this.calculateRectangleArea(rect);
this.measurementResult = { this.measurementResult = {
@ -845,33 +845,33 @@ export default {
calculateRectangleArea(rectangle) { calculateRectangleArea(rectangle) {
// //
const ellipsoid = this.viewer.scene.globe.ellipsoid; const ellipsoid = this.viewer.scene.globe.ellipsoid;
// 使 Cesium // 使 Cesium
// const geometry = new Cesium.RectangleGeometry({ rectangle: rectangle }); // const geometry = new Cesium.RectangleGeometry({ rectangle: rectangle });
// const geometryInstance = Cesium.RectangleGeometry.createGeometry(geometry); // const geometryInstance = Cesium.RectangleGeometry.createGeometry(geometry);
// ... // ...
// 使 // 使
// //
const west = rectangle.west; const west = rectangle.west;
const south = rectangle.south; const south = rectangle.south;
const east = rectangle.east; const east = rectangle.east;
const north = rectangle.north; const north = rectangle.north;
// //
const centerLat = (south + north) / 2; const centerLat = (south + north) / 2;
// 西使 // 西使
// 6378137 // 6378137
const R = 6378137; const R = 6378137;
const width = (east - west) * R * Math.cos(centerLat); const width = (east - west) * R * Math.cos(centerLat);
// //
const height = (north - south) * R; const height = (north - south) * R;
// = * // = *
const area = Math.abs(width * height); const area = Math.abs(width * height);
return area; return area;
}, },
// //
@ -927,15 +927,15 @@ export default {
// height: 0, // 使 heightReference // height: 0, // 使 heightReference
} }
}); });
} }
// --- B/ --- // --- B/ ---
else { else {
// 便 // 便
this.drawingPoints.push(position); this.drawingPoints.push(position);
activeCursorPosition = null; // activeCursorPosition = null; //
// //
this.finishCircleDrawing(position); this.finishCircleDrawing(position);
} }
} }
}, Cesium.ScreenSpaceEventType.LEFT_CLICK); }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
@ -948,10 +948,10 @@ export default {
finishCircleDrawing(edgePosition) { finishCircleDrawing(edgePosition) {
const centerPoint = this.drawingPoints[0]; const centerPoint = this.drawingPoints[0];
// 1. // 1.
const radius = Cesium.Cartesian3.distance(centerPoint, edgePosition); const radius = Cesium.Cartesian3.distance(centerPoint, edgePosition);
// 2. // 2.
if (this.tempEntity) { if (this.tempEntity) {
this.viewer.entities.remove(this.tempEntity); this.viewer.entities.remove(this.tempEntity);
@ -978,7 +978,7 @@ export default {
// 5. (π * r²) // 5. (π * r²)
// //
const area = Math.PI * Math.pow(radius, 2); const area = Math.PI * Math.pow(radius, 2);
this.measurementResult = { this.measurementResult = {
radius: radius, // radius: radius, //
area: area, area: area,
@ -1180,7 +1180,7 @@ export default {
id: id, id: id,
name: `圆形 ${this.entityCounter}`, name: `圆形 ${this.entityCounter}`,
position: center, // position: center, //
// 使 ellipse () // 使 ellipse ()
ellipse: { ellipse: {
semiMinorAxis: radius, // = semiMinorAxis: radius, // =
@ -1378,7 +1378,7 @@ export default {
clearAll() { clearAll() {
// 1. // 1.
if (this.allEntities && this.allEntities.length > 0) { if (this.allEntities && this.allEntities.length > 0) {
// 2. // 2.
this.allEntities.forEach(item => { this.allEntities.forEach(item => {
try { try {

133
ruoyi-ui/src/views/login.vue

@ -1,4 +1,5 @@
<template> <template>
<div class="page-container"> <div class="page-container">
<!-- 登录主容器 v--> <!-- 登录主容器 v-->
<div class="login-wrapper"> <div class="login-wrapper">
@ -14,14 +15,14 @@
<div class="login-card"> <div class="login-card">
<!-- 登录/注册切换标签 --> <!-- 登录/注册切换标签 -->
<div class="tab-container"> <div class="tab-container">
<button <button
@click="switchTab('login')" @click="switchTab('login')"
:class="{ 'tab-active': activeTab === 'login' }" :class="{ 'tab-active': activeTab === 'login' }"
class="tab-item" class="tab-item"
> >
<i class="el-icon-user mr-1"></i> 登录 <i class="el-icon-user mr-1"></i> 登录
</button> </button>
<button <button
@click="switchTab('register')" @click="switchTab('register')"
:class="{ 'tab-active': activeTab === 'register' }" :class="{ 'tab-active': activeTab === 'register' }"
class="tab-item" class="tab-item"
@ -39,10 +40,10 @@
<label class="form-label">账号</label> <label class="form-label">账号</label>
<div class="input-wrapper"> <div class="input-wrapper">
<i class="el-icon-user input-icon"></i> <i class="el-icon-user input-icon"></i>
<input <input
type="text" type="text"
v-model="form.username" v-model="form.username"
placeholder="请输入账号" placeholder="请输入账号"
class="form-input" class="form-input"
> >
</div> </div>
@ -56,13 +57,13 @@
</div> </div>
<div class="input-wrapper"> <div class="input-wrapper">
<i class="el-icon-lock input-icon"></i> <i class="el-icon-lock input-icon"></i>
<input <input
:type="showPwd ? 'text' : 'password'" :type="showPwd ? 'text' : 'password'"
v-model="form.password" v-model="form.password"
placeholder="请输入密码" placeholder="请输入密码"
class="form-input" class="form-input"
> >
<i <i
@click="togglePwd" @click="togglePwd"
:class="showPwd ? 'el-icon-view' : 'el-icon-hide'" :class="showPwd ? 'el-icon-view' : 'el-icon-hide'"
class="toggle-pwd-icon" class="toggle-pwd-icon"
@ -83,7 +84,7 @@
</div> </div>
<!-- 登录按钮 --> <!-- 登录按钮 -->
<button <button
@click="handleLogin" @click="handleLogin"
:class="{ 'login-btn-disabled': isLogging }" :class="{ 'login-btn-disabled': isLogging }"
class="login-btn" class="login-btn"
@ -99,10 +100,10 @@
<label class="form-label">账号</label> <label class="form-label">账号</label>
<div class="input-wrapper"> <div class="input-wrapper">
<i class="el-icon-user input-icon"></i> <i class="el-icon-user input-icon"></i>
<input <input
type="text" type="text"
v-model="form.username" v-model="form.username"
placeholder="请输入账号" placeholder="请输入账号"
class="form-input" class="form-input"
> >
</div> </div>
@ -113,13 +114,13 @@
<label class="form-label">密码</label> <label class="form-label">密码</label>
<div class="input-wrapper"> <div class="input-wrapper">
<i class="el-icon-lock input-icon"></i> <i class="el-icon-lock input-icon"></i>
<input <input
:type="showPwd ? 'text' : 'password'" :type="showPwd ? 'text' : 'password'"
v-model="form.password" v-model="form.password"
placeholder="请输入密码" placeholder="请输入密码"
class="form-input" class="form-input"
> >
<i <i
@click="togglePwd" @click="togglePwd"
:class="showPwd ? 'el-icon-view' : 'el-icon-hide'" :class="showPwd ? 'el-icon-view' : 'el-icon-hide'"
class="toggle-pwd-icon" class="toggle-pwd-icon"
@ -132,13 +133,13 @@
<label class="form-label">确认密码</label> <label class="form-label">确认密码</label>
<div class="input-wrapper"> <div class="input-wrapper">
<i class="el-icon-lock input-icon"></i> <i class="el-icon-lock input-icon"></i>
<input <input
:type="showConfirmPwd ? 'text' : 'password'" :type="showConfirmPwd ? 'text' : 'password'"
v-model="form.confirmPassword" v-model="form.confirmPassword"
placeholder="请确认密码" placeholder="请确认密码"
class="form-input" class="form-input"
> >
<i <i
@click="toggleConfirmPwd" @click="toggleConfirmPwd"
:class="showConfirmPwd ? 'el-icon-view' : 'el-icon-hide'" :class="showConfirmPwd ? 'el-icon-view' : 'el-icon-hide'"
class="toggle-pwd-icon" class="toggle-pwd-icon"
@ -149,7 +150,7 @@
<!-- 权限等级 --> <!-- 权限等级 -->
<div class="form-item"> <div class="form-item">
<label class="form-label">权限等级</label> <label class="form-label">权限等级</label>
<select <select
v-model="form.role" v-model="form.role"
class="form-select" class="form-select"
> >
@ -160,7 +161,7 @@
</div> </div>
<!-- 注册按钮 --> <!-- 注册按钮 -->
<button <button
@click="handleRegister" @click="handleRegister"
:class="{ 'login-btn-disabled': isRegistering }" :class="{ 'login-btn-disabled': isRegistering }"
class="login-btn" class="login-btn"
@ -181,6 +182,7 @@
<script> <script>
import axios from 'axios'; import axios from 'axios';
import { register } from "@/api/login";
export default { export default {
name: 'Login', name: 'Login',
@ -210,52 +212,77 @@ export default {
toggleConfirmPwd() { toggleConfirmPwd() {
this.showConfirmPwd = !this.showConfirmPwd; this.showConfirmPwd = !this.showConfirmPwd;
}, },
handleLogin() { async handleLogin() {
if (this.isLogging) return; if (this.isLogging) return;
if (!this.form.username || !this.form.password) {
this.$message.error('请输入账号和密码');
return;
}
this.isLogging = true; this.isLogging = true;
// selectRoom
setTimeout(() => { try {
const loginBody = {
username: this.form.username,
password: this.form.password
};
await this.$store.dispatch("Login", loginBody);
this.$router.push('/selectRoom'); this.$router.push('/selectRoom');
} catch (error) {
// error msg
this.$message.error(error.msg || '登录失败');
} finally {
this.isLogging = false; this.isLogging = false;
}, 500); }
}, },
async handleRegister() { async handleRegister() {
if (this.isRegistering) return; if (this.isRegistering) return;
// // 1.
if (!this.form.username || !this.form.password || !this.form.confirmPassword) { if (!this.form.username || !this.form.password || !this.form.confirmPassword) {
alert('请填写所有必填字段'); this.$message.error('请填写所有必填字段');
return; return;
} }
if (this.form.password !== this.form.confirmPassword) { if (this.form.password !== this.form.confirmPassword) {
alert('两次输入的密码不一致'); this.$message.error('两次输入的密码不一致');
return; return;
} }
this.isRegistering = true; this.isRegistering = true;
try { // 2.
const response = await axios.post('http://localhost:3002/api/users/register', { const roleMap = {
username: this.form.username, 'admin': '1',
password: this.form.password, 'host': '2',
role: this.form.role 'user': '3'
}); };
// sys_user
const regData = {
username: this.form.username,
password: this.form.password,
userLevel: roleMap[this.form.role] || '3' // role
};
// 3. API
register(regData).then(res => {
this.isRegistering = false; this.isRegistering = false;
alert('注册成功,请登录'); this.$alert("<font color='red'>恭喜你,您的账号 " + regData.username + " 注册成功!</font>", '系统提示', {
this.switchTab('login'); dangerouslyUseHTMLString: true,
// type: 'success'
this.form = { }).then(() => {
username: '', this.switchTab('login');
password: '', //
confirmPassword: '', this.form = {
role: 'user' username: '',
}; password: '',
} catch (error) { confirmPassword: '',
role: 'user'
};
});
}).catch(() => {
this.isRegistering = false; this.isRegistering = false;
alert(error.response?.data?.message || '注册失败,请重试'); });
}
} }
} }
} }

1
ruoyi-ui/src/views/register.vue

@ -88,6 +88,7 @@ export default {
username: "", username: "",
password: "", password: "",
confirmPassword: "", confirmPassword: "",
userLevel: "3",
code: "", code: "",
uuid: "" uuid: ""
}, },

2
ruoyi-ui/vue.config.js

@ -10,7 +10,7 @@ const CompressionPlugin = require('compression-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin') const CopyWebpackPlugin = require('copy-webpack-plugin')
const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题 const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题
const baseUrl = 'http://192.168.50.30:8080' // 后端接口 const baseUrl = 'http://127.0.0.1:8080' // 后端接口
const port = process.env.port || process.env.npm_config_port || 80 // 端口 const port = process.env.port || process.env.npm_config_port || 80 // 端口
// 定义 Cesium 源码路径 // 定义 Cesium 源码路径

Loading…
Cancel
Save