Browse Source

修复个人信息地区不显示

huangqizheng/feature-20250717200321-优化导出
lijianlin 1 month ago
parent
commit
52a53b4f9a
  1. 43
      src/main/java/com/example/demo/Util/StringToListTypeHandler.java
  2. 13
      src/main/java/com/example/demo/controller/AdminController.java
  3. 6
      src/main/java/com/example/demo/controller/RoleController.java
  4. 9
      src/main/java/com/example/demo/domain/entity/Admin.java
  5. 2
      src/main/java/com/example/demo/mapper/RoleMapper.java
  6. 2
      src/main/java/com/example/demo/service/RoleService.java
  7. 7
      src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java
  8. 1
      src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java
  9. 5
      src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java
  10. 29
      src/main/resources/mapper/AdminMapper.xml
  11. 7
      src/main/resources/mapper/RoleMapper.xml

43
src/main/java/com/example/demo/Util/StringToListTypeHandler.java

@ -0,0 +1,43 @@
package com.example.demo.Util;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
public class StringToListTypeHandler extends BaseTypeHandler<List<String>> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType) throws SQLException {
// List<String> 转换为字符串
ps.setString(i, String.join(",", parameter));
}
@Override
public List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException {
return parseStringToList(rs.getString(columnName));
}
@Override
public List<String> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return parseStringToList(rs.getString(columnIndex));
}
@Override
public List<String> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return parseStringToList(cs.getString(columnIndex));
}
private List<String> parseStringToList(String str) {
if (str == null || str.isEmpty()) {
return null;
}
return Arrays.asList(str.split(","));
}
}

13
src/main/java/com/example/demo/controller/AdminController.java

@ -1,13 +1,11 @@
package com.example.demo.controller;
import com.example.demo.Util.JWTUtil;
import com.example.demo.Util.TokenPayload;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.Password;
import com.example.demo.domain.vo.Result;
import com.example.demo.mapper.AdminMapper;
import com.example.demo.service.AdminService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -30,6 +28,14 @@ import org.springframework.web.bind.annotation.*;
public class AdminController {
@Autowired
private AdminService adminService;
@Autowired
private AdminMapper adminMapper;
@PostMapping("/test")
public void testGetAdmin() {
Admin admin = adminMapper.getAdmin("14518");
System.out.println(admin.getMarkets()); // 应该输出 "马来西亚,新加坡,美国"
}
@PostMapping("/login")
public Result login(@RequestBody Admin admin) {
@ -39,6 +45,7 @@ public class AdminController {
String token = JWTUtil.createJWT(admin);
System.out.println(token);
admin.setPassword(null);
return Result.success(token, admin);
} catch (Exception e) {
e.printStackTrace();

6
src/main/java/com/example/demo/controller/RoleController.java

@ -46,6 +46,12 @@ public class RoleController {
List<RoleVo> list = roleService.selectAllRole();
return Result.success(list);
}
//获取上级角色的下属角色列表
@PostMapping("/selectSub")
public List<RoleVo> selectSub(Integer fatherId) {
return roleService.selectSubRole(fatherId);
}
}

9
src/main/java/com/example/demo/domain/entity/Admin.java

@ -24,7 +24,9 @@ public class Admin implements UserDetails, Serializable {
private String password; // 密码
private String machineId; // 机器码限两个
private Byte adminStatus; // 状态启用/不启用
private List<String> market; // 地区
private List<String> market; // 地区列表
private String markets; // 地区
private String postiton; // 职位
private String remark; // 备注
@ -34,7 +36,10 @@ public class Admin implements UserDetails, Serializable {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date updateTime; // 更新时间
private Integer roleId;
// 添加一个方法来方便测试和调试
// public void setMarket(String marketStr) {
// this.market = Arrays.asList(marketStr.split(","));
//}
@Override
@JsonIgnore

2
src/main/java/com/example/demo/mapper/RoleMapper.java

@ -31,4 +31,6 @@ public interface RoleMapper {
//新建角色
void addRole(RoleVo roleVo);
//根据父级id查下属角色
List<RoleVo> selectByFatherId(Integer fatherId);
}

2
src/main/java/com/example/demo/service/RoleService.java

@ -22,4 +22,6 @@ public interface RoleService {
//查找全部角色
List<RoleVo> selectAllRole();
//根据父级id查找下属角色
List<RoleVo> selectSubRole(Integer fatherId);
}

7
src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java

@ -11,14 +11,10 @@ import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.regex.Pattern;
@ -41,6 +37,7 @@ public class AdminServiceImpl implements AdminService {
Admin adminInDB = adminMapper.getAdmin(account);
System.out.println("adminInDB:" + adminInDB);
System.out.println("adminInDB markets: " + adminInDB.getMarkets()); // 添加日志检查
if (adminInDB == null) {
throw new RuntimeException("无此精网号");
}
@ -56,6 +53,8 @@ public class AdminServiceImpl implements AdminService {
UsernamePasswordAuthenticationToken token =
new UsernamePasswordAuthenticationToken(account, admin.getPassword());
Authentication authentication = authenticationManager.authenticate(token);
Admin authenticatedAdmin = (Admin) authentication.getPrincipal();
System.out.println("authenticatedAdmin markets: " + authenticatedAdmin.getMarkets()); // 添加日志检查
return (Admin) authentication.getPrincipal();
} catch (Exception e) {

1
src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java

@ -90,6 +90,7 @@ public class PermissionServiceImpl implements PermissionService {
} else {
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
admin.setPassword(passwordEncoder.encode(("123456")));
// 将地区列表转换为逗号分隔的字符串
String markets = String.join(",", admin.getMarket());
admin.setMarket(Collections.singletonList(markets));

5
src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java

@ -69,6 +69,11 @@ public class RoleServiceImpl implements RoleService {
public List<RoleVo> selectAllRole() {
return roleMapper.selectAllRole();
}
@Override
public List<RoleVo> selectSubRole(Integer fatherId) {
return roleMapper.selectByFatherId(fatherId);
}
}

29
src/main/resources/mapper/AdminMapper.xml

@ -3,11 +3,36 @@
<mapper namespace="com.example.demo.mapper.AdminMapper">
<select id="getAdmin" resultType="com.example.demo.domain.entity.Admin">
select * from admin
select
id as id,
admin_name as adminName,
account as account,
password as password,
machine_id as machineId,
admin_status as adminStatus,
market as markets,
postiton as postiton,
remark as remark,
create_time as createTime,
update_time as updateTime,
role_id as roleId
from admin
where account=#{account}
</select>
<select id="selectByName" resultType="com.example.demo.domain.entity.Admin">
select * from admin
select id as id,
admin_name as adminName,
account as account,
password as password,
machine_id as machineId,
admin_status as adminStatus,
market as markets,
postiton as postiton,
remark as remark,
create_time as createTime,
update_time as updateTime,
role_id as roleId
from admin
where account= #{account}
</select>
<select id="getId" resultType="java.lang.Integer">

7
src/main/resources/mapper/RoleMapper.xml

@ -20,6 +20,13 @@
<select id="selectAllRole" resultType="com.example.demo.domain.vo.RoleVo">
SELECT id,role_name FROM role
</select>
<select id="selectByFatherId" resultType="com.example.demo.domain.vo.RoleVo">
SELECT id,role_name FROM role
<where>
father_id = #{fatherId}
</where>
ORDER BY priority
</select>
<!-- 插入角色信息 -->
<insert id="addRole" parameterType="com.example.demo.domain.vo.RoleVo" useGeneratedKeys="true" keyProperty="id">

Loading…
Cancel
Save