This commit is contained in:
tangzh 2025-05-19 15:30:40 +08:00
parent ab7163eea2
commit b64e9a4e0d
19 changed files with 401 additions and 108 deletions

View File

@ -21,7 +21,7 @@
<ul class="user-info"> <ul class="user-info">
<li><div style="height: 100%"><svg-icon icon-class="login" /> 登录账号<div class="user-right">{{ user.username }}</div></div></li> <li><div style="height: 100%"><svg-icon icon-class="login" /> 登录账号<div class="user-right">{{ user.username }}</div></div></li>
<li><svg-icon icon-class="user1" /> 用户昵称 <div class="user-right">{{ user.nickName }}</div></li> <li><svg-icon icon-class="user1" /> 用户昵称 <div class="user-right">{{ user.nickName }}</div></li>
<li><svg-icon icon-class="dept" /> 所属医院 <div class="user-right"> {{ user.dept.name }}</div></li> <li><svg-icon icon-class="dept" /> 所属部门 <div class="user-right"> {{ user.dept.name }}</div></li>
<li><svg-icon icon-class="phone" /> 手机号码 <div class="user-right">{{ user.phone }}</div></li> <li><svg-icon icon-class="phone" /> 手机号码 <div class="user-right">{{ user.phone }}</div></li>
<li><svg-icon icon-class="email" /> 用户邮箱 <div class="user-right">{{ user.email }}</div></li> <li><svg-icon icon-class="email" /> 用户邮箱 <div class="user-right">{{ user.email }}</div></li>
<li> <li>

View File

@ -17,9 +17,13 @@ package me.zhengjie.config.properties;
import lombok.Data; import lombok.Data;
import me.zhengjie.utils.ElConstant; import me.zhengjie.utils.ElConstant;
import org.apache.commons.io.FileUtils;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import java.io.File;
import java.net.URL;
/** /**
* @author Tz * @author Tz
*/ */
@ -43,6 +47,16 @@ public class FileProperties {
public ElPath getPath(){ public ElPath getPath(){
String os = System.getProperty("os.name"); String os = System.getProperty("os.name");
if(os.toLowerCase().startsWith(ElConstant.WIN)) { if(os.toLowerCase().startsWith(ElConstant.WIN)) {
String dir = System.getProperty("user.dir");
dir = dir.replace("\\","/");
String path = windows.getPath();
String avatar = windows.getAvatar();
if (path.indexOf(dir) == -1) {
windows.setPath(dir + path);
}
if (avatar.indexOf(dir) == -1) {
windows.setAvatar(dir + avatar);
}
return windows; return windows;
} else if(os.toLowerCase().startsWith(ElConstant.MAC)){ } else if(os.toLowerCase().startsWith(ElConstant.MAC)){
return mac; return mac;

View File

@ -14,8 +14,8 @@ public class LoginVo {
@ApiModelProperty(value = "状态:login-登录register-注册") @ApiModelProperty(value = "状态:login-登录register-注册")
private String type; private String type;
@ApiModelProperty(value = "注册key") @ApiModelProperty(value = "头像")
private String key; private String avatar;
@ApiModelProperty(value = "登录用户Uid") @ApiModelProperty(value = "登录用户Uid")
private Long uid; private Long uid;

View File

@ -7,6 +7,8 @@ import me.zhengjie.annotation.Log;
import me.zhengjie.annotation.rest.AnonymousPostMapping; import me.zhengjie.annotation.rest.AnonymousPostMapping;
import me.zhengjie.modules.front.domain.dto.LoginVo; import me.zhengjie.modules.front.domain.dto.LoginVo;
import me.zhengjie.modules.front.service.WeChatService; import me.zhengjie.modules.front.service.WeChatService;
import me.zhengjie.modules.security.service.dto.JwtUserDto;
import me.zhengjie.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -26,7 +28,7 @@ public class WeChatController {
/** /**
* 微信登录小程序授权登录 * 微信登录小程序授权登录
*/ */
@Log("C端用户登录") @Log("用户授权登录")
@ApiOperation(value = "微信登录小程序授权登录") @ApiOperation(value = "微信登录小程序授权登录")
@AnonymousPostMapping(value = "/authorize/login") @AnonymousPostMapping(value = "/authorize/login")
public ResponseEntity<LoginVo> authorizeLogin(@RequestParam String code, HttpServletRequest request){ public ResponseEntity<LoginVo> authorizeLogin(@RequestParam String code, HttpServletRequest request){
@ -34,9 +36,18 @@ public class WeChatController {
return new ResponseEntity<>(loginVo, HttpStatus.OK); return new ResponseEntity<>(loginVo, HttpStatus.OK);
} }
@GetMapping(value = "/hello") @Log("用户信息")
public ResponseEntity<String> hello() { @ApiOperation("获取用户信息")
return new ResponseEntity<>("Hello", HttpStatus.OK); @GetMapping(value = "/info")
public ResponseEntity<LoginVo> getLoginInfo() {
JwtUserDto jwtUser = (JwtUserDto) SecurityUtils.getCurrentUser();
LoginVo loginVo = new LoginVo();
loginVo.setType("login");
loginVo.setUid(jwtUser.getUser().getId());
loginVo.setNikeName(jwtUser.getUser().getNickName());
loginVo.setAvatar(jwtUser.getUser().getAvatarPath());
loginVo.setPhone(jwtUser.getUser().getPhone());
return new ResponseEntity<>(loginVo, HttpStatus.OK);
} }
} }

View File

@ -1,10 +0,0 @@
package me.zhengjie.modules.front.service;
import me.zhengjie.modules.security.service.dto.JwtUserDto;
import me.zhengjie.modules.system.domain.CusUser;
public interface CusUserService {
JwtUserDto addUserCache(CusUser cusUser);
}

View File

@ -1,40 +0,0 @@
package me.zhengjie.modules.front.service.impl;
import me.zhengjie.modules.front.service.CusUserService;
import me.zhengjie.modules.security.service.UserCacheManager;
import me.zhengjie.modules.security.service.dto.JwtUserDto;
import me.zhengjie.modules.system.domain.CusUser;
import me.zhengjie.modules.system.domain.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@Service
public class CusUserServiceImpl implements CusUserService {
private final Logger logger = LoggerFactory.getLogger(CusUserServiceImpl.class);
@Autowired private UserCacheManager userCacheManager;
@Override
public JwtUserDto addUserCache(CusUser cusUser) {
String openId = cusUser.getToken();
JwtUserDto jwtUserDto = userCacheManager.getUserCache(openId);
if (null == jwtUserDto) {
User user = new User();
user.setId(cusUser.getId());
user.setUsername(cusUser.getToken());
user.setNickName(cusUser.getNickname());
user.setAvatarPath(cusUser.getAvatar());
user.setPhone(cusUser.getPhone());
user.setFlag(2);
jwtUserDto = new JwtUserDto(user, new ArrayList<>(), new ArrayList<>());
userCacheManager.addUserCache(cusUser.getToken(), jwtUserDto);
}
return jwtUserDto;
}
}

View File

@ -11,11 +11,9 @@ import me.zhengjie.modules.front.service.WeChatService;
import me.zhengjie.modules.security.config.SecurityProperties; import me.zhengjie.modules.security.config.SecurityProperties;
import me.zhengjie.modules.security.security.TokenProvider; import me.zhengjie.modules.security.security.TokenProvider;
import me.zhengjie.modules.security.service.OnlineUserService; import me.zhengjie.modules.security.service.OnlineUserService;
import me.zhengjie.modules.security.service.UserCacheManager;
import me.zhengjie.modules.security.service.dto.JwtUserDto; import me.zhengjie.modules.security.service.dto.JwtUserDto;
import me.zhengjie.modules.system.domain.CusUser; import me.zhengjie.modules.system.domain.BusUser;
import me.zhengjie.modules.system.domain.User; import me.zhengjie.modules.system.mapper.BusUserMapper;
import me.zhengjie.modules.system.mapper.CusUserMapper;
import me.zhengjie.utils.DateUtil; import me.zhengjie.utils.DateUtil;
import me.zhengjie.utils.RestTemplateUtils; import me.zhengjie.utils.RestTemplateUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -27,7 +25,7 @@ import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.Random;
@Service @Service
public class WeChatServiceImpl implements WeChatService { public class WeChatServiceImpl implements WeChatService {
@ -40,14 +38,14 @@ public class WeChatServiceImpl implements WeChatService {
@Value("${weChat.secret}") @Value("${weChat.secret}")
private String secret; private String secret;
@Autowired private CusUserMapper cusUserMapper; @Autowired private BusUserMapper BusUserMapper;
@Autowired private RestTemplateUtils restTemplateUtil; @Autowired private RestTemplateUtils restTemplateUtil;
@Autowired private TokenProvider tokenProvider; @Autowired private TokenProvider tokenProvider;
@Autowired private UserCacheManager userCacheManager;
@Autowired private SecurityProperties properties; @Autowired private SecurityProperties properties;
@Autowired private OnlineUserService onlineUserService; @Autowired private OnlineUserService onlineUserService;
@Autowired private CusUserService cusUserService; @Autowired private CusUserService BusUserService;
public static final String WECHAT_MINI_SNS_AUTH_CODE2SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session?appid={}&secret={}&js_code={}&grant_type=authorization_code"; private static final String WECHAT_MINI_SNS_AUTH_CODE2SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session?appid={}&secret={}&js_code={}&grant_type=authorization_code";
private static final String DEFAULT_AVATAR = "/avatar/avatar.png";
@Override @Override
public LoginVo authorizeLogin(String code, HttpServletRequest request) { public LoginVo authorizeLogin(String code, HttpServletRequest request) {
@ -56,25 +54,27 @@ public class WeChatServiceImpl implements WeChatService {
response.setOpenId("123456"); response.setOpenId("123456");
String openId = response.getOpenId(); String openId = response.getOpenId();
String type = "login"; String type = "login";
CusUser cusUser = cusUserMapper.getUserByOpenId(openId); BusUser BusUser = BusUserMapper.getUserByOpenId(openId);
if (ObjectUtil.isNotNull(cusUser)) { if (ObjectUtil.isNotNull(BusUser)) {
if (cusUser.getStatus().equals(0)) { throw new BadRequestException("当前账户已禁用,请联系管理员!"); } if (BusUser.getStatus().equals(0)) { throw new BadRequestException("当前账户已禁用,请联系管理员!"); }
} else { } else {
CusUser add = new CusUser(); BusUser add = new BusUser();
add.setSex(0); add.setSex(0);
add.setRealName(DateUtil.localDateTimeFormat(LocalDateTime.now(), DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"))); add.setRealName(DateUtil.localDateTimeFormat(LocalDateTime.now(), DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")));
add.setNickname("微信用户"); add.setNickname("用户_" + new Random().nextInt(900000) + 100000);
add.setToken(openId); add.setToken(openId);
cusUserMapper.insert(add); add.setAvatar(DEFAULT_AVATAR);
cusUser = add; BusUserMapper.insert(add);
BusUser = add;
type = "register"; type = "register";
} }
loginVo.setType(type); loginVo.setType(type);
loginVo.setUid(cusUser.getId()); loginVo.setUid(BusUser.getId());
loginVo.setNikeName(cusUser.getNickname()); loginVo.setNikeName(BusUser.getNickname());
loginVo.setPhone(cusUser.getPhone()); loginVo.setPhone(BusUser.getPhone());
loginVo.setAvatar(BusUser.getAvatar());
// 生成令牌 // 生成令牌
JwtUserDto jwtUserDto = cusUserService.addUserCache(cusUser); JwtUserDto jwtUserDto = BusUserService.addUserCache(BusUser);
String token = tokenProvider.createToken(jwtUserDto); String token = tokenProvider.createToken(jwtUserDto);
loginVo.setToken(properties.getTokenStartWith() + token); loginVo.setToken(properties.getTokenStartWith() + token);
// 保存在线信息 // 保存在线信息

View File

@ -18,12 +18,12 @@ package me.zhengjie.modules.security.service;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.zhengjie.exception.BadRequestException; import me.zhengjie.exception.BadRequestException;
import me.zhengjie.modules.front.service.CusUserService;
import me.zhengjie.modules.security.service.dto.AuthorityDto; import me.zhengjie.modules.security.service.dto.AuthorityDto;
import me.zhengjie.modules.security.service.dto.JwtUserDto; import me.zhengjie.modules.security.service.dto.JwtUserDto;
import me.zhengjie.modules.system.domain.CusUser; import me.zhengjie.modules.system.domain.BusUser;
import me.zhengjie.modules.system.domain.User; import me.zhengjie.modules.system.domain.User;
import me.zhengjie.modules.system.mapper.CusUserMapper; import me.zhengjie.modules.system.mapper.BusUserMapper;
import me.zhengjie.modules.system.service.BusUserService;
import me.zhengjie.modules.system.service.DataService; import me.zhengjie.modules.system.service.DataService;
import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.RoleService;
import me.zhengjie.modules.system.service.UserService; import me.zhengjie.modules.system.service.UserService;
@ -31,7 +31,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -46,8 +45,8 @@ public class UserDetailsServiceImpl implements UserDetailsService {
private final RoleService roleService; private final RoleService roleService;
private final DataService dataService; private final DataService dataService;
private final UserCacheManager userCacheManager; private final UserCacheManager userCacheManager;
@Autowired private CusUserService cusUserService; @Autowired private BusUserService busUserService;
@Autowired private CusUserMapper cusUserMapper; @Autowired private BusUserMapper BusUserMapper;
@Override @Override
public JwtUserDto loadUserByUsername(String username) { public JwtUserDto loadUserByUsername(String username) {
@ -56,13 +55,13 @@ public class UserDetailsServiceImpl implements UserDetailsService {
User user = userService.getLoginData(username); User user = userService.getLoginData(username);
if (user == null) { if (user == null) {
String openId = username; String openId = username;
CusUser cusUser = cusUserMapper.getUserByOpenId(openId); BusUser BusUser = BusUserMapper.getUserByOpenId(openId);
if (null == cusUser) { if (null == BusUser) {
throw new BadRequestException("用户不存在"); throw new BadRequestException("用户不存在");
} else if (!cusUser.getStatus().equals(1)) { } else if (!BusUser.getStatus().equals(1)) {
throw new BadRequestException("账号已注销!"); throw new BadRequestException("账号已注销!");
} }
cusUserService.addUserCache(cusUser); busUserService.addUserCache(BusUser);
} else { } else {
if (!user.getEnabled()) { if (!user.getEnabled()) {
throw new BadRequestException("账号未激活!"); throw new BadRequestException("账号未激活!");

View File

@ -15,6 +15,8 @@
*/ */
package me.zhengjie.modules.system.domain; package me.zhengjie.modules.system.domain;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
@ -28,8 +30,8 @@ import java.sql.Timestamp;
@Getter @Getter
@Setter @Setter
@TableName("cus_user") @TableName("bus_user")
public class CusUser extends BaseEntity implements Serializable { public class BusUser extends BaseEntity implements Serializable {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value = "ID", hidden = true) @ApiModelProperty(value = "ID", hidden = true)
@ -47,7 +49,7 @@ public class CusUser extends BaseEntity implements Serializable {
@ApiModelProperty(value = "手机号码") @ApiModelProperty(value = "手机号码")
private String phone; private String phone;
@ApiModelProperty(value = "token") @ApiModelProperty(value = "openId")
private String token; private String token;
@ApiModelProperty(value = "1为正常0为禁止") @ApiModelProperty(value = "1为正常0为禁止")
@ -59,4 +61,8 @@ public class CusUser extends BaseEntity implements Serializable {
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "创建时间")
private Timestamp createTime; private Timestamp createTime;
public void copy(BusUser source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
} }

View File

@ -0,0 +1,33 @@
/*
* Copyright 2019-2025 Tz
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package me.zhengjie.modules.system.domain.dto;
import lombok.Data;
import io.swagger.annotations.ApiModelProperty;
/**
* @author tz
* @date 2025-05-19
**/
@Data
public class BusUserQueryCriteria{
@ApiModelProperty(value = "页码", example = "1")
private Integer page = 1;
@ApiModelProperty(value = "每页数据量", example = "10")
private Integer size = 10;
}

View File

@ -16,11 +16,12 @@
package me.zhengjie.modules.system.mapper; package me.zhengjie.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import me.zhengjie.modules.system.domain.CusUser; import com.baomidou.mybatisplus.core.metadata.IPage;
import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.modules.system.domain.BusUser;
import me.zhengjie.modules.system.domain.dto.DashboardDataVo; import me.zhengjie.modules.system.domain.dto.BusUserQueryCriteria;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List; import java.util.List;
@ -29,8 +30,12 @@ import java.util.List;
* @date 2023-06-19 * @date 2023-06-19
*/ */
@Mapper @Mapper
public interface CusUserMapper extends BaseMapper<CusUser> { public interface BusUserMapper extends BaseMapper<BusUser> {
CusUser getUserByOpenId(@Param("openId") String openId); BusUser getUserByOpenId(@Param("openId") String openId);
IPage<BusUser> findAll(@Param("criteria") BusUserQueryCriteria criteria, Page<Object> page);
List<BusUser> findAll(@Param("criteria") BusUserQueryCriteria criteria);
} }

View File

@ -0,0 +1,79 @@
/*
* Copyright 2019-2025 Tz
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package me.zhengjie.modules.system.rest;
import me.zhengjie.annotation.Log;
import me.zhengjie.modules.system.domain.BusUser;
import me.zhengjie.modules.system.domain.dto.BusUserQueryCriteria;
import me.zhengjie.modules.system.service.BusUserService;
import lombok.RequiredArgsConstructor;
import java.util.List;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import me.zhengjie.utils.PageResult;
/**
* @author tz
* @date 2025-05-19
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "busUser")
@RequestMapping("/api/busUser")
public class BusUserController {
private final BusUserService busUserService;
@GetMapping
@ApiOperation("查询busUser")
@PreAuthorize("@el.check('busUser:list')")
public ResponseEntity<PageResult<BusUser>> queryBusUser(BusUserQueryCriteria criteria){
Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
return new ResponseEntity<>(busUserService.queryAll(criteria,page),HttpStatus.OK);
}
@PostMapping
@Log("新增busUser")
@ApiOperation("新增busUser")
@PreAuthorize("@el.check('busUser:add')")
public ResponseEntity<Object> createBusUser(@Validated @RequestBody BusUser resources){
busUserService.create(resources);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PutMapping
@Log("修改busUser")
@ApiOperation("修改busUser")
@PreAuthorize("@el.check('busUser:edit')")
public ResponseEntity<Object> updateBusUser(@Validated @RequestBody BusUser resources){
busUserService.update(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@DeleteMapping
@Log("删除busUser")
@ApiOperation("删除busUser")
@PreAuthorize("@el.check('busUser:del')")
public ResponseEntity<Object> deleteBusUser(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
busUserService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@ -0,0 +1,72 @@
/*
* Copyright 2019-2025 Tz
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package me.zhengjie.modules.system.service;
import me.zhengjie.domain.BusUser;
import me.zhengjie.domain.dto.BusUserQueryCriteria;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import me.zhengjie.modules.security.service.dto.JwtUserDto;
import me.zhengjie.modules.system.domain.BusUser;
import me.zhengjie.modules.system.domain.dto.BusUserQueryCriteria;
import me.zhengjie.utils.PageResult;
/**
* @description 服务接口
* @author tz
* @date 2025-05-19
**/
public interface BusUserService extends IService<BusUser> {
JwtUserDto addUserCache(BusUser BusUser);
/**
* 查询数据分页
* @param criteria 条件
* @param page 分页参数
* @return PageResult
*/
PageResult<BusUser> queryAll(BusUserQueryCriteria criteria, Page<Object> page);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<BusUserDto>
*/
List<BusUser> queryAll(BusUserQueryCriteria criteria);
/**
* 创建
* @param resources /
*/
void create(BusUser resources);
/**
* 编辑
* @param resources /
*/
void update(BusUser resources);
/**
* 多选删除
* @param ids /
*/
void deleteAll(List<Long> ids);
}

View File

@ -0,0 +1,96 @@
/*
* Copyright 2019-2025 Tz
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package me.zhengjie.modules.system.service.impl;
import me.zhengjie.modules.security.service.UserCacheManager;
import me.zhengjie.modules.security.service.dto.JwtUserDto;
import me.zhengjie.modules.system.domain.BusUser;
import me.zhengjie.modules.system.domain.User;
import me.zhengjie.modules.system.domain.dto.BusUserQueryCriteria;
import me.zhengjie.modules.system.mapper.BusUserMapper;
import me.zhengjie.modules.system.service.BusUserService;
import lombok.RequiredArgsConstructor;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import me.zhengjie.utils.PageUtil;
import java.util.List;
import java.util.ArrayList;
import me.zhengjie.utils.PageResult;
/**
* @description 服务实现
* @author tz
* @date 2025-05-19
**/
@Service
@RequiredArgsConstructor
public class BusUserServiceImpl extends ServiceImpl<BusUserMapper, BusUser> implements BusUserService {
private final BusUserMapper busUserMapper;
@Autowired private UserCacheManager userCacheManager;
@Override
public PageResult<BusUser> queryAll(BusUserQueryCriteria criteria, Page<Object> page){
return PageUtil.toPage(busUserMapper.findAll(criteria, page));
}
@Override
public List<BusUser> queryAll(BusUserQueryCriteria criteria){
return busUserMapper.findAll(criteria);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(BusUser resources) {
busUserMapper.insert(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(BusUser resources) {
BusUser busUser = getById(resources.getId());
busUser.copy(resources);
busUserMapper.updateById(busUser);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteAll(List<Long> ids) {
busUserMapper.deleteBatchIds(ids);
}
@Override
public JwtUserDto addUserCache(BusUser BusUser) {
String openId = BusUser.getToken();
JwtUserDto jwtUserDto = userCacheManager.getUserCache(openId);
if (null == jwtUserDto) {
User user = new User();
user.setId(BusUser.getId());
user.setUsername(BusUser.getToken());
user.setNickName(BusUser.getNickname());
user.setAvatarPath(BusUser.getAvatar());
user.setPhone(BusUser.getPhone());
user.setFlag(2);
jwtUserDto = new JwtUserDto(user, new ArrayList<>(), new ArrayList<>());
userCacheManager.addUserCache(BusUser.getToken(), jwtUserDto);
}
return jwtUserDto;
}
}

View File

@ -116,8 +116,8 @@ file:
path: /home/eladmin/file/ path: /home/eladmin/file/
avatar: /home/eladmin/avatar/ avatar: /home/eladmin/avatar/
windows: windows:
path: C:\eladmin\file\ path: /eladmin/eladmin-upload/file/
avatar: C:\eladmin\avatar\ avatar: /eladmin/eladmin-upload/avatar/
# 文件大小 /M # 文件大小 /M
maxSize: 100 maxSize: 100
avatarMaxSize: 5 avatarMaxSize: 5

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="me.zhengjie.modules.system.mapper.BusUserMapper">
<resultMap id="BaseResultMap" type="me.zhengjie.modules.system.domain.BusUser">
<id column="id" property="id"/>
<result column="real_name" property="realName"/>
<result column="nickname" property="nickname"/>
<result column="avatar" property="avatar"/>
<result column="phone" property="phone"/>
<result column="status" property="status"/>
<result column="token" property="token"/>
<result column="sex" property="sex"/>
<result column="create_by" property="createBy"/>
<result column="update_by" property="updateBy"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<sql id="Base_Column_List">
id, real_name, nickname, avatar, phone, status, token, sex, create_by, update_by, create_time, update_time
</sql>
<select id="findAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from bus_user
<where>
</where>
order by id desc
</select>
<select id="getUserByOpenId" resultType="me.zhengjie.modules.system.domain.BusUser">
select id, real_name realName, nickname, avatar, phone, status, token, sex, create_time createTime
from bus_user where token = #{openId}
</select>
</mapper>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="me.zhengjie.modules.system.mapper.CusUserMapper">
<select id="getUserByOpenId" resultType="me.zhengjie.modules.system.domain.CusUser">
select id, real_name realName, nickname, avatar, phone, status, token, sex, create_time createTime
from cus_user where token = #{openId}
</select>
</mapper>

View File

@ -15,7 +15,7 @@
UNION ALL UNION ALL
select 'role' text, count(*) value from sys_role select 'role' text, count(*) value from sys_role
UNION ALL UNION ALL
select 'law' text, count(*) value from bus_law_enforcement select 'law' text, count(*) value from bus_user
</select> </select>
<select id="getLineChartData" resultType="me.zhengjie.modules.system.domain.dto.DashboardDataVo"> <select id="getLineChartData" resultType="me.zhengjie.modules.system.domain.dto.DashboardDataVo">

View File

@ -10,6 +10,7 @@
<modules> <modules>
<module>eladmin-common</module> <module>eladmin-common</module>
<module>eladmin-logging</module> <module>eladmin-logging</module>
<module>eladmin-tools</module>
<module>eladmin-system</module> <module>eladmin-system</module>
<module>eladmin-generator</module> <module>eladmin-generator</module>
</modules> </modules>