From dd04c1adf53ada311cb014cf5906e2ed52aad153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E7=8E=89=E7=90=A6?= <7507756+jiang_yuqi@user.noreply.gitee.com> Date: Thu, 29 Aug 2024 22:51:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-prod.yml | 4 +- .../src/main/resources/application.yml | 2 +- .../framework/web/service/TokenService.java | 20 ++- .../yanzhu/web/BaseAssetsTypeController.java | 44 ++++-- .../wechat/controller/WxLoginController.java | 49 +++++++ .../yanzhu/base/domain/BaseAssetsType.java | 13 +- .../base/service/IBaseAssetsTypeService.java | 8 ++ .../impl/BaseAssetsTypeServiceImpl.java | 19 ++- .../mapper/base/BaseAssetsTypeMapper.xml | 26 ++-- yanzhu-ui/.env.development | 4 +- yanzhu-ui/.env.production | 4 +- yanzhu-ui/.env.staging | 4 +- yanzhu-ui/package.json | 2 +- yanzhu-ui/src/api/base/assetsType.js | 8 ++ yanzhu-ui/src/views/base/assetsType/index.vue | 132 ++++++++++++------ yanzhu-ui/src/views/login.vue | 2 +- yanzhu-ui/src/views/register.vue | 2 +- yanzhu-ui/vue.config.js | 4 +- 18 files changed, 264 insertions(+), 83 deletions(-) diff --git a/yanzhu-admin/src/main/resources/application-prod.yml b/yanzhu-admin/src/main/resources/application-prod.yml index bde3c27..549d4d2 100644 --- a/yanzhu-admin/src/main/resources/application-prod.yml +++ b/yanzhu-admin/src/main/resources/application-prod.yml @@ -39,9 +39,9 @@ spring: druid: # 主库数据源 master: - url: jdbc:mysql://cd-cynosdbmysql-grp-9rqrhxsm.sql.tencentcdb.com:27981/yanzhu_project?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8 + url: jdbc:mysql://62.234.3.186:3306/yanzhu_project?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8 username: root - password: Sxyanzhu@cf + password: Sxyanzhu@cf123 # 从库数据源 slave: # 从数据源开关/默认关闭 diff --git a/yanzhu-admin/src/main/resources/application.yml b/yanzhu-admin/src/main/resources/application.yml index d6ea028..1b946db 100644 --- a/yanzhu-admin/src/main/resources/application.yml +++ b/yanzhu-admin/src/main/resources/application.yml @@ -19,7 +19,7 @@ spring: # 国际化资源文件路径 basename: i18n/messages profiles: - active: test + active: prod # 文件上传 servlet: multipart: diff --git a/yanzhu-framework/src/main/java/com/yanzhu/framework/web/service/TokenService.java b/yanzhu-framework/src/main/java/com/yanzhu/framework/web/service/TokenService.java index 4021af1..14be985 100644 --- a/yanzhu-framework/src/main/java/com/yanzhu/framework/web/service/TokenService.java +++ b/yanzhu-framework/src/main/java/com/yanzhu/framework/web/service/TokenService.java @@ -166,6 +166,24 @@ public class TokenService redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); } + /** + * 刷新用户信息 + * + * @param token 登录token + */ + public void refreshUserInfo(String token,LoginUser user) + { + Claims claims = parseToken(token); + // 解析对应的权限以及用户信息 + String uuid = (String) claims.get(Constants.LOGIN_USER_KEY); + String userKey = getTokenKey(uuid); + user.setLoginTime(System.currentTimeMillis()); + int mobileExpireTime = expireTime * 3650 * 60 ; + user.setExpireTime(user.getLoginTime() + mobileExpireTime * MILLIS_MINUTE); + // 根据uuid将loginUser缓存 + redisCache.setCacheObject(userKey, user, mobileExpireTime, TimeUnit.MINUTES); + } + /** * 移动端主动刷新令牌有效期 * @@ -247,7 +265,7 @@ public class TokenService * @param request * @return token */ - private String getToken(HttpServletRequest request) + public String getToken(HttpServletRequest request) { String token = request.getHeader(header); if (StringUtils.isNotEmpty(token) && token.startsWith(Constants.TOKEN_PREFIX)) diff --git a/yanzhu-manage/src/main/java/com/yanzhu/web/BaseAssetsTypeController.java b/yanzhu-manage/src/main/java/com/yanzhu/web/BaseAssetsTypeController.java index 293d3b4..4288226 100644 --- a/yanzhu-manage/src/main/java/com/yanzhu/web/BaseAssetsTypeController.java +++ b/yanzhu-manage/src/main/java/com/yanzhu/web/BaseAssetsTypeController.java @@ -1,6 +1,7 @@ package com.yanzhu.web; import java.util.List; +import java.util.Objects; import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletResponse; @@ -8,6 +9,7 @@ import com.yanzhu.common.constant.Constants; import com.yanzhu.common.core.domain.entity.SysDept; import com.yanzhu.common.core.domain.entity.SysUser; import com.yanzhu.common.core.redis.RedisCache; +import com.yanzhu.common.utils.StringUtils; import com.yanzhu.system.service.ISysDeptService; @@ -41,11 +43,13 @@ import com.yanzhu.common.core.page.TableDataInfo; public class BaseAssetsTypeController extends BaseController { @Autowired - private IBaseAssetsTypeService baseAssetsTypeService; + private RedisCache redisCache; + @Autowired private ISysDeptService sysDeptService; + @Autowired - private RedisCache redisCache; + private IBaseAssetsTypeService baseAssetsTypeService; /** * 查询物资类型列表 @@ -107,21 +111,25 @@ public class BaseAssetsTypeController extends BaseController } void updateDeptUnit(BaseAssetsType baseAssetsType){ - long deptId= baseAssetsType.getDeptId(); + Long deptId= baseAssetsType.getDeptId(); String unit=baseAssetsType.getUnit(); if(unit==null || unit.trim().length()==0){ unit=""; } String[] tmps= unit.split("[|]"); - baseAssetsType.setUnit(""); + baseAssetsType.setUnit(null); if(tmps.length>0){ - baseAssetsType.setUnit(tmps[0]); + if(StringUtils.isNotEmpty(tmps[0]) && !Objects.equals(tmps[0],"null")){ + baseAssetsType.setUnit(tmps[0]); + } } - if(tmps.length>1){ - SysDept dept= sysDeptService.selectDeptById(deptId); - if(dept!=null){ - dept.setUnit(tmps[1]); - sysDeptService.updateDept(dept); + if(tmps.length>1 && Objects.nonNull(deptId)){ + if(StringUtils.isNotEmpty(tmps[1]) && !Objects.equals(tmps[1],"null")){ + SysDept dept= sysDeptService.selectDeptById(deptId); + if(dept!=null){ + dept.setUnit(tmps[1]); + sysDeptService.updateDept(dept); + } } } } @@ -149,6 +157,22 @@ public class BaseAssetsTypeController extends BaseController return toAjax(baseAssetsTypeService.deleteBaseAssetsTypeByIds(ids)); } + /** + * 查询二级分类物资类型 + */ + @GetMapping("/findParentTypesByCategory/{category}") + public AjaxResult findParentTypesByCategory(@PathVariable String category) + { + SysUser sysUser = super.getLoginUser().getUser(); + String key = "YANZHU.BASE.ASSETSTYPE.findParentTypesByCategory." + sysUser.getParDeptId() + "." + category; + Object object = redisCache.getCacheObject(key); + if (object != null) { + return success(object); + } + List list = baseAssetsTypeService.findParentTypesByCategory(category); + redisCache.setCacheObject(key, list, Constants.BASE_DATA_EXPIRATION, TimeUnit.MINUTES); + return success(list); + } /** * 查询物资类型 diff --git a/yanzhu-manage/src/main/java/com/yanzhu/wechat/controller/WxLoginController.java b/yanzhu-manage/src/main/java/com/yanzhu/wechat/controller/WxLoginController.java index 2664a31..e06ec1e 100644 --- a/yanzhu-manage/src/main/java/com/yanzhu/wechat/controller/WxLoginController.java +++ b/yanzhu-manage/src/main/java/com/yanzhu/wechat/controller/WxLoginController.java @@ -6,22 +6,32 @@ import com.yanzhu.common.annotation.RateLimiter; import com.yanzhu.common.constant.Constants; import com.yanzhu.common.core.controller.BaseController; import com.yanzhu.common.core.domain.AjaxResult; +import com.yanzhu.common.core.domain.entity.SysDept; +import com.yanzhu.common.core.domain.entity.SysUser; import com.yanzhu.common.core.domain.model.LoginBody; +import com.yanzhu.common.core.domain.model.LoginUser; import com.yanzhu.common.core.redis.RedisCache; +import com.yanzhu.common.core.text.Convert; import com.yanzhu.common.enums.BusinessType; import com.yanzhu.common.enums.LimitType; import com.yanzhu.common.enums.OperatorType; +import com.yanzhu.common.exception.ServiceException; import com.yanzhu.framework.web.service.SysLoginService; +import com.yanzhu.framework.web.service.SysPermissionService; import com.yanzhu.framework.web.service.TokenService; import com.yanzhu.system.domain.vo.UpdatePwdVo; +import com.yanzhu.system.service.ISysDeptService; import com.yanzhu.system.service.ISysUserService; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.Map; +import java.util.Objects; /** * @version : V1.0 @@ -46,6 +56,12 @@ public class WxLoginController extends BaseController { @Autowired private ISysUserService sysUserService; + @Autowired + private ISysDeptService sysDeptService; + + @Autowired + private SysPermissionService permissionService; + /** * 登录方法 * @@ -97,4 +113,37 @@ public class WxLoginController extends BaseController { return success(); } + /** + * 刷线用户信息 + * + * @return 结果 + */ + @ApiOperation(value = "刷线用户信息") + @RateLimiter(count = 10, limitType = LimitType.IP) + @GetMapping("/refreshUserInfo") + public AjaxResult refreshUserInfo(HttpServletRequest request) + { + SysUser user = sysUserService.selectUserByUserName(super.getUsername()); + if(Objects.isNull(user)){ + throw new ServiceException("用户信息异常..."); + } + //设置项目单位信息 + if(!user.isAdmin()){ + //判断是否是段队管理员 + String[] ancestors = user.getDept().getAncestors().split(","); + Long deptId = Convert.toLong(ancestors[ancestors.length-1]); + if(deptId != null){ + SysDept sysDept = sysDeptService.selectDeptById(deptId); + user.setParDeptId(sysDept.getDeptId()); + user.setParDeptName(sysDept.getDeptName()); + } + }else{ + user.setParDeptId(100L); + user.setParDeptName("中铁建设集团有限公司"); + } + LoginUser loginUser = new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user)); + tokenService.refreshUserInfo(tokenService.getToken(request),loginUser); + return success(); + } + } diff --git a/yanzhu-mapper/src/main/java/com/yanzhu/base/domain/BaseAssetsType.java b/yanzhu-mapper/src/main/java/com/yanzhu/base/domain/BaseAssetsType.java index 06bca48..36ca53c 100644 --- a/yanzhu-mapper/src/main/java/com/yanzhu/base/domain/BaseAssetsType.java +++ b/yanzhu-mapper/src/main/java/com/yanzhu/base/domain/BaseAssetsType.java @@ -21,9 +21,12 @@ public class BaseAssetsType extends BaseEntity private Long id; /** 父级分类 */ - @Excel(name = "父级分类") private Long parentId; + /** 父级分类 */ + @Excel(name = "父级分类") + private String parentName; + /** 单位主键 */ @Excel(name = "单位主键") private Long deptId; @@ -130,6 +133,14 @@ public class BaseAssetsType extends BaseEntity this.defaultDeptId = defaultDeptId; } + public String getParentName() { + return parentName; + } + + public void setParentName(String parentName) { + this.parentName = parentName; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/yanzhu-mapper/src/main/java/com/yanzhu/base/service/IBaseAssetsTypeService.java b/yanzhu-mapper/src/main/java/com/yanzhu/base/service/IBaseAssetsTypeService.java index a7431c4..0a30772 100644 --- a/yanzhu-mapper/src/main/java/com/yanzhu/base/service/IBaseAssetsTypeService.java +++ b/yanzhu-mapper/src/main/java/com/yanzhu/base/service/IBaseAssetsTypeService.java @@ -60,6 +60,14 @@ public interface IBaseAssetsTypeService */ public int deleteBaseAssetsTypeById(Long id); + /** + * 查询二级分类物资类型 + * + * @param category 物资类型 + * @return 结果 + */ + public List findParentTypesByCategory(String category); + /** * 查询物资类型 * diff --git a/yanzhu-mapper/src/main/java/com/yanzhu/base/service/impl/BaseAssetsTypeServiceImpl.java b/yanzhu-mapper/src/main/java/com/yanzhu/base/service/impl/BaseAssetsTypeServiceImpl.java index de6927f..fc1e127 100644 --- a/yanzhu-mapper/src/main/java/com/yanzhu/base/service/impl/BaseAssetsTypeServiceImpl.java +++ b/yanzhu-mapper/src/main/java/com/yanzhu/base/service/impl/BaseAssetsTypeServiceImpl.java @@ -132,17 +132,34 @@ public class BaseAssetsTypeServiceImpl implements IBaseAssetsTypeService return res; } + /** + * 查询二级分类物资类型 + * + * @param category 物资类型 + * @return 结果 + */ + @Override + public List findParentTypesByCategory(String category){ + BaseAssetsType baseAssetsType = new BaseAssetsType(); + baseAssetsType.setParentId(0L); + baseAssetsType.setType(category); + baseAssetsType.setIsDel("0"); + baseAssetsType.setDefaultDeptId(SecurityUtils.getLoginUser().getUser().getParDeptId()); + return baseAssetsTypeMapper.selectBaseAssetsTypeList(baseAssetsType); + } + /** * 查询物资类型 * * @param category 物资类型 * @return 结果 */ + @Override public List findAllByCategory(String category){ - //boolean isAdmin = SysUser.isAdmin(SecurityUtils.getUserId()); BaseAssetsType baseAssetsType = new BaseAssetsType(); baseAssetsType.setParentId(0L); baseAssetsType.setType(category); + baseAssetsType.setIsDel("0"); List list = baseAssetsTypeMapper.selectBaseAssetsTypeList(baseAssetsType); if(CollectionUtils.isNotEmpty(list)){ for(BaseAssetsType entity:list){ diff --git a/yanzhu-mapper/src/main/resources/mapper/base/BaseAssetsTypeMapper.xml b/yanzhu-mapper/src/main/resources/mapper/base/BaseAssetsTypeMapper.xml index c162c6f..ced4bda 100644 --- a/yanzhu-mapper/src/main/resources/mapper/base/BaseAssetsTypeMapper.xml +++ b/yanzhu-mapper/src/main/resources/mapper/base/BaseAssetsTypeMapper.xml @@ -7,6 +7,7 @@ + @@ -20,7 +21,8 @@ - select id, parent_id, dept_id, type, name, unit, is_del, create_by, create_time, update_by, update_time, remark from base_assets_type + select t.id, t.parent_id, pt.name as parent_name, t.dept_id, t.type, t.name, t.unit, t.is_del, t.create_by, t.create_time, t.update_by, t.update_time, t.remark from base_assets_type t + left join base_assets_type pt on pt.id = t.parent_id @@ -111,6 +113,6 @@ \ No newline at end of file diff --git a/yanzhu-ui/.env.development b/yanzhu-ui/.env.development index 3c4f2e9..b6c6a11 100644 --- a/yanzhu-ui/.env.development +++ b/yanzhu-ui/.env.development @@ -1,10 +1,10 @@ # 页面标题 -VUE_APP_TITLE = 研筑临时项目管理系统 +VUE_APP_TITLE = 临建管家 # 开发环境配置 ENV = 'development' -# 研筑临时项目管理系统/开发环境 +# 临建管家/开发环境 VUE_APP_BASE_API = '/yanZhuProject' # 路由懒加载 diff --git a/yanzhu-ui/.env.production b/yanzhu-ui/.env.production index 9025ff0..3bb22a9 100644 --- a/yanzhu-ui/.env.production +++ b/yanzhu-ui/.env.production @@ -1,8 +1,8 @@ # 页面标题 -VUE_APP_TITLE = 研筑临时项目管理系统 +VUE_APP_TITLE = 临建管家 # 生产环境配置 ENV = 'production' -# 研筑临时项目管理系统/生产环境 +# 临建管家/生产环境 VUE_APP_BASE_API = '/yanZhuProject' diff --git a/yanzhu-ui/.env.staging b/yanzhu-ui/.env.staging index 477f9d9..f4df5b6 100644 --- a/yanzhu-ui/.env.staging +++ b/yanzhu-ui/.env.staging @@ -1,10 +1,10 @@ # 页面标题 -VUE_APP_TITLE = 研筑临时项目管理系统 +VUE_APP_TITLE = 临建管家 NODE_ENV = production # 测试环境配置 ENV = 'staging' -# 研筑临时项目管理系统/测试环境 +# 临建管家/测试环境 VUE_APP_BASE_API = '/stage-api' diff --git a/yanzhu-ui/package.json b/yanzhu-ui/package.json index ff4aa2a..3893a67 100644 --- a/yanzhu-ui/package.json +++ b/yanzhu-ui/package.json @@ -1,7 +1,7 @@ { "name": "yanZhu", "version": "3.8.7", - "description": "研筑临时项目管理系统", + "description": "临建管家", "author": "研筑科技", "license": "MIT", "scripts": { diff --git a/yanzhu-ui/src/api/base/assetsType.js b/yanzhu-ui/src/api/base/assetsType.js index db7d352..19074bb 100644 --- a/yanzhu-ui/src/api/base/assetsType.js +++ b/yanzhu-ui/src/api/base/assetsType.js @@ -50,6 +50,14 @@ export function listLevel2(){ }) } +// 查询二级分类物资类型 +export function findParentTypesByCategory(category) { + return request({ + url: '/base/assetsType/findParentTypesByCategory/' + category, + method: 'get' + }) +} + // 根据分类查询物资 export function findAllByCategory(category) { return request({ diff --git a/yanzhu-ui/src/views/base/assetsType/index.vue b/yanzhu-ui/src/views/base/assetsType/index.vue index 79081a3..3a7e32d 100644 --- a/yanzhu-ui/src/views/base/assetsType/index.vue +++ b/yanzhu-ui/src/views/base/assetsType/index.vue @@ -62,18 +62,27 @@ + + +