From 457d1cf84604602ca68427dbb3e9f60be2617e8c Mon Sep 17 00:00:00 2001 From: 15856 <15856818120@163.com> Date: Mon, 20 May 2024 09:12:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=9A=E5=85=AC=E5=8F=B8?= =?UTF-8?q?=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bonus/sgzb/system/api/domain/SysDept.java | 21 ++++++ .../bonus/sgzb/system/api/domain/SysRole.java | 12 ++++ sgzb-modules/pom.xml | 6 -- sgzb-modules/sgzb-system/pom.xml | 6 ++ .../system/config/ConstantPropertiesUtil.java | 41 +++++++++++ .../system/controller/SysUserController.java | 15 ++-- .../service/impl/SysDeptServiceImpl.java | 5 +- .../service/impl/SysFileServiceImpl.java | 71 +++++++++++++++++-- .../service/impl/SysSmsServiceImpl.java | 8 +-- .../service/impl/SysUserServiceImpl.java | 24 ++++--- .../src/main/resources/bootstrap.yml | 14 +++- .../resources/mapper/system/SysDeptMapper.xml | 8 ++- .../resources/mapper/system/SysRoleMapper.xml | 4 +- .../resources/mapper/system/SysUserMapper.xml | 7 +- 14 files changed, 201 insertions(+), 41 deletions(-) create mode 100644 sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/config/ConstantPropertiesUtil.java diff --git a/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/system/api/domain/SysDept.java b/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/system/api/domain/SysDept.java index 41f98566..db3508a2 100644 --- a/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/system/api/domain/SysDept.java +++ b/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/system/api/domain/SysDept.java @@ -72,6 +72,27 @@ public class SysDept extends BaseEntity /** 备注信息 */ private String remark; + /** 所属组织id */ + private Long companyId; + + @Override + public String getRemark() { + return remark; + } + + @Override + public void setRemark(String remark) { + this.remark = remark; + } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } + public Long getDeptId() { return deptId; diff --git a/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/system/api/domain/SysRole.java b/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/system/api/domain/SysRole.java index 2638a34c..8a7d1d7d 100644 --- a/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/system/api/domain/SysRole.java +++ b/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/system/api/domain/SysRole.java @@ -78,6 +78,17 @@ public class SysRole extends BaseEntity /** 数据所属组织 */ private String deptName; + /** 所属组织id */ + private Long companyId; + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } + public SysRole() { @@ -259,6 +270,7 @@ public class SysRole extends BaseEntity .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .append("deptName", getDeptName()) + .append("companyId", getCompanyId()) .toString(); } } diff --git a/sgzb-modules/pom.xml b/sgzb-modules/pom.xml index 3d9d85cc..5fe08680 100644 --- a/sgzb-modules/pom.xml +++ b/sgzb-modules/pom.xml @@ -24,10 +24,4 @@ sgzb-modules业务模块 - - - com.bonus.sgzb - sgzb-api-system - - diff --git a/sgzb-modules/sgzb-system/pom.xml b/sgzb-modules/sgzb-system/pom.xml index a71282f0..2153e59e 100644 --- a/sgzb-modules/sgzb-system/pom.xml +++ b/sgzb-modules/sgzb-system/pom.xml @@ -110,6 +110,12 @@ tencentcloud-sdk-java 3.1.423 + + + com.qcloud + cos_api + 5.6.54 + diff --git a/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/config/ConstantPropertiesUtil.java b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/config/ConstantPropertiesUtil.java new file mode 100644 index 00000000..440da4bc --- /dev/null +++ b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/config/ConstantPropertiesUtil.java @@ -0,0 +1,41 @@ +package com.bonus.sgzb.system.config; + +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + * Description: 腾讯云cos配置 + * + * @Author 阮世耀 + * @Create 2023/12/3 16:26 + * @Version 1.0 + */ +@Component +public class ConstantPropertiesUtil implements InitializingBean { + + @Value("${tencent.cos.file.region}") + private String region; + + @Value("${tencent.cos.file.secretid}") + private String secretId; + + @Value("${tencent.cos.file.secretkey}") + private String secretKey; + + @Value("${tencent.cos.file.bucketname}") + private String bucketName; + + public static String END_POINT; + public static String ACCESS_KEY_ID; + public static String ACCESS_KEY_SECRET; + public static String BUCKET_NAME; + + @Override + public void afterPropertiesSet() throws Exception { + END_POINT = region; + ACCESS_KEY_ID = secretId; + ACCESS_KEY_SECRET = secretKey; + BUCKET_NAME = bucketName; + } +} diff --git a/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/controller/SysUserController.java b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/controller/SysUserController.java index 1b20090a..663d19e5 100644 --- a/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/controller/SysUserController.java +++ b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/controller/SysUserController.java @@ -48,25 +48,25 @@ import java.util.stream.Collectors; @RequestMapping("/user") @Slf4j public class SysUserController extends BaseController { - @Autowired + @Resource private ISysUserService userService; - @Autowired + @Resource private ISysRoleService roleService; - @Autowired + @Resource private ISysDeptService deptService; - @Autowired + @Resource private ISysPostService postService; - @Autowired + @Resource private ISysSmsService smsService; - @Autowired + @Resource private ISysPermissionService permissionService; - @Autowired + @Resource private ISysConfigService configService; @Resource @@ -220,6 +220,7 @@ public class SysUserController extends BaseController { } user.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getUserName()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + return toAjax(userService.insertUser(user)); } diff --git a/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysDeptServiceImpl.java b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysDeptServiceImpl.java index e45ff563..c2c1005d 100644 --- a/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysDeptServiceImpl.java +++ b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysDeptServiceImpl.java @@ -17,6 +17,7 @@ import com.bonus.sgzb.system.service.ISysDeptService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -29,10 +30,10 @@ import java.util.stream.Collectors; */ @Service public class SysDeptServiceImpl implements ISysDeptService { - @Autowired + @Resource private SysDeptMapper deptMapper; - @Autowired + @Resource private SysRoleMapper roleMapper; /** diff --git a/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysFileServiceImpl.java b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysFileServiceImpl.java index d13b322d..3b60e105 100644 --- a/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysFileServiceImpl.java +++ b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysFileServiceImpl.java @@ -3,17 +3,28 @@ package com.bonus.sgzb.system.service.impl; import cn.hutool.core.util.IdUtil; import com.bonus.sgzb.common.core.utils.DateTimeHelper; import com.bonus.sgzb.common.core.utils.GlobalConstants; -import com.bonus.sgzb.common.core.web.domain.AjaxResult; +import com.bonus.sgzb.common.core.utils.uuid.IdUtils; import com.bonus.sgzb.common.security.utils.SecurityUtils; +import com.bonus.sgzb.system.config.ConstantPropertiesUtil; import com.bonus.sgzb.system.domain.FileInfo; import com.bonus.sgzb.system.mapper.FileInfoMapper; import com.bonus.sgzb.system.service.SysFileService; import com.bonus.sgzb.system.service.feign.FileClient; +import com.qcloud.cos.COSClient; +import com.qcloud.cos.ClientConfig; +import com.qcloud.cos.auth.BasicCOSCredentials; +import com.qcloud.cos.auth.COSCredentials; +import com.qcloud.cos.http.HttpProtocol; +import com.qcloud.cos.model.ObjectMetadata; +import com.qcloud.cos.model.PutObjectRequest; +import com.qcloud.cos.model.PutObjectResult; +import com.qcloud.cos.region.Region; import lombok.extern.slf4j.Slf4j; import org.apache.poi.hwpf.extractor.WordExtractor; import org.apache.poi.openxml4j.util.ZipSecureFile; import org.apache.poi.xwpf.extractor.XWPFWordExtractor; import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; @@ -63,9 +74,10 @@ public class SysFileServiceImpl implements SysFileService { List items = (List) map.get("filePath"); MultipartFile item = items.get(0); try { - String url = saveFile(request, item, photoType); - //AjaxResult res = fileClient.uploadFile(item); - //String url = (String) res.get("msg"); + //String url = saveFile(request, item, photoType); + /*AjaxResult res = fileClient.uploadFile(item); + String url = (String) res.get("msg");*/ + String url = this.uploadFile(item); if (url != null) { int words = getFileText(item); String fileName = item.getOriginalFilename(); @@ -87,6 +99,52 @@ public class SysFileServiceImpl implements SysFileService { return file; } + /** + * 腾讯云文件上传 + * @param file + * @return + */ + public String uploadFile(MultipartFile file) { + // 1 初始化用户身份信息(secretId, secretKey)。 + String secretId = ConstantPropertiesUtil.ACCESS_KEY_ID; + String secretKey = ConstantPropertiesUtil.ACCESS_KEY_SECRET; + COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); + // 2 设置 bucket 的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 + Region region = new Region(ConstantPropertiesUtil.END_POINT); + ClientConfig clientConfig = new ClientConfig(); + // 这里建议设置使用 https 协议 + clientConfig.setHttpProtocol(HttpProtocol.https); + clientConfig.setRegion(region); + // 3 生成 cos 客户端。 + COSClient cosClient = new COSClient(cred, clientConfig); + + // 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 + String bucketName = ConstantPropertiesUtil.BUCKET_NAME; + // 对象键(Key)是对象在存储桶中的唯一标识。 998u-09iu-09i-333 + //在文件名称前面添加uuid值 + String key = IdUtils.fastSimpleUuid() + file.getOriginalFilename(); + //对上传文件分组,根据当前日期 /2024/04/02 + String dateTime = new DateTime().toString("yyyy/MM/dd"); + key = dateTime+"/"+key; + try { + //获取上传文件输入流 + InputStream inputStream = file.getInputStream(); + ObjectMetadata objectMetadata = new ObjectMetadata(); + PutObjectRequest putObjectRequest = new PutObjectRequest( + bucketName, + key, + inputStream, + objectMetadata); + // 高级接口会返回一个异步结果Upload + PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); + // 返回上传文件路径:https://ggkt-atguigu-1310644373.cos.ap-beijing.myqcloud.com/01.jpg + return "https://" + bucketName + "." + "cos" + "." + ConstantPropertiesUtil.END_POINT+".myqcloud.com" + "/" + key; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + /** * 头像上传 * @@ -98,9 +156,10 @@ public class SysFileServiceImpl implements SysFileService { FileInfo file = new FileInfo(); Long userId = SecurityUtils.getLoginUser().getUserid(); try { - String url = saveFilePic(item, fileType); + //String url = saveFilePic(item, fileType); /*AjaxResult res = fileClient.uploadFile(item); String url = (String) res.get("msg");*/ + String url = this.uploadFile(item); if (url != null) { int words = getFileText(item); String fileName = item.getOriginalFilename(); @@ -145,7 +204,7 @@ public class SysFileServiceImpl implements SysFileService { String tmpName = multipartFile.getOriginalFilename(); tmpName = tmpName.substring(tmpName.lastIndexOf("\\") + 1); tmpName = IdUtil.fastSimpleUUID() + System.currentTimeMillis() + tmpName.substring(tmpName.lastIndexOf("."), tmpName.length()); - String imageFiles = localFilePath + fileType + "/"; + String imageFiles = localFilePath+ "/" + fileType + "/"; String os = System.getProperty("os.name"); if (os.toLowerCase().startsWith(GlobalConstants.STRING_WIN)) { imageFiles = "D://files/" + fileType + "/"; diff --git a/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysSmsServiceImpl.java b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysSmsServiceImpl.java index afe1cd07..7c0b836c 100644 --- a/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysSmsServiceImpl.java +++ b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysSmsServiceImpl.java @@ -67,14 +67,14 @@ public class SysSmsServiceImpl implements ISysSmsService { if (phone.length() != UserConstants.PHONE_DEFAULT_LENGTH_LOGIN) { return AjaxResult.error("手机号格式不正确"); } - /* try { + try { String[] args = msg.split(","); String body = sendMessageNew(phone,tencentSmsConfig.getTemplateId().get(0),args); return success("发送手机号码:" + phone + ",内容:" + msg + ",返回结果:" + body); } catch (Exception e) { return AjaxResult.error("发送失败:" + e.getMessage()); - }*/ - return sendMsgByPhone( phone, msg); + } + // return sendMsgByPhone( phone, msg); } /** @@ -247,7 +247,7 @@ public class SysSmsServiceImpl implements ISysSmsService { } } - return resp.getRequestId(); + return resp.getRequestId(); } catch (TencentCloudSDKException e) { e.printStackTrace(); log.error("短信发送失败:{}", e.getMessage()); diff --git a/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysUserServiceImpl.java b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysUserServiceImpl.java index 376ae8c0..0457023e 100644 --- a/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysUserServiceImpl.java +++ b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/SysUserServiceImpl.java @@ -39,28 +39,28 @@ import java.util.stream.Collectors; public class SysUserServiceImpl implements ISysUserService { private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); - @Autowired + @Resource private SysUserMapper userMapper; - @Autowired + @Resource private SysRoleMapper roleMapper; - @Autowired + @Resource private SysPostMapper postMapper; - @Autowired + @Resource private SysUserRoleMapper userRoleMapper; - @Autowired + @Resource private SysUserPostMapper userPostMapper; @Resource private ISysConfigService configService; - @Autowired + @Resource protected Validator validator; - @Autowired + @Resource private SysDeptMapper deptMapper; /** @@ -238,10 +238,11 @@ public class SysUserServiceImpl implements ISysUserService { @Transactional(rollbackFor = Exception.class) public int insertUser(SysUser user) { // 暂时使用,需修改 - Long deptId = user.getDeptId(); + //南网改造,所属组织存公司id------20240516 + /* Long deptId = user.getDeptId(); SysDept sysDept = deptMapper.selectDeptById(deptId); String ancestors = sysDept.getAncestors(); - String[] split = ancestors.split(","); + String[] split = ancestors.split(",");*/ /* List deptList = deptMapper.selectDeptByAncestors(split); for (SysDept dept : deptList) { String ancestors1 = dept.getAncestors(); @@ -252,14 +253,15 @@ public class SysUserServiceImpl implements ISysUserService { user.setCompanyId(dept.getDeptId()); } }*/ - if (split.length == 2) { + //南网改造,所属组织存公司id------20240516 + /* if (split.length == 2) { //表示属于分公司 user.setCompanyId(sysDept.getDeptId()); } if (split.length >= 3) { //表示属于分公司下的某个部门 user.setCompanyId(Long.parseLong(split[2])); - } + }*/ // 新增用户信息 int rows = userMapper.insertUser(user); diff --git a/sgzb-modules/sgzb-system/src/main/resources/bootstrap.yml b/sgzb-modules/sgzb-system/src/main/resources/bootstrap.yml index 13e6331a..c20589a1 100644 --- a/sgzb-modules/sgzb-system/src/main/resources/bootstrap.yml +++ b/sgzb-modules/sgzb-system/src/main/resources/bootstrap.yml @@ -53,7 +53,19 @@ tencent: smsSign: 南方电网互联网 #云平台模板id 2116937-验收通知 2115503-登录验证 templateId: 2116937,2115503 - + # 腾讯云cos + cos: + file: + # 存储桶所在地域 + region: ap-guangzhou + # 存储桶所在地域 + bucketregion: ap-guangzhou + # 存储桶名称 + bucketname: prod-rental-1301524038 + # API账号 + secretid: AKIDrreCVaRKDtMcgfU5QW9iEfv67tMfldJn + # API密钥 + secretkey: OXUgeMo0yhBRTGo6sVu3yiFX4rQtAzc3 diff --git a/sgzb-modules/sgzb-system/src/main/resources/mapper/system/SysDeptMapper.xml b/sgzb-modules/sgzb-system/src/main/resources/mapper/system/SysDeptMapper.xml index 262601db..8f94a006 100644 --- a/sgzb-modules/sgzb-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/sgzb-modules/sgzb-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -21,11 +21,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time, - d.remark + d.remark,d.company_id from sys_dept d @@ -44,6 +45,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND status = #{status} + + AND company_id = #{companyId} + ${params.dataScope} order by d.parent_id, d.order_num @@ -99,6 +103,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" email, status, create_by, + company_id, create_time )values( #{deptId}, @@ -111,6 +116,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{email}, #{status}, #{createBy}, + #{companyId}, sysdate() ) diff --git a/sgzb-modules/sgzb-system/src/main/resources/mapper/system/SysRoleMapper.xml b/sgzb-modules/sgzb-system/src/main/resources/mapper/system/SysRoleMapper.xml index eafbf884..8d6198cf 100644 --- a/sgzb-modules/sgzb-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/sgzb-modules/sgzb-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -24,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly, - r.status, r.del_flag, r.create_time, r.remark ,IFNULL(CONCAT_WS('/', d3.dept_name, d2.dept_name, d1.dept_name), 'Unknown') AS dept_name + r.status, r.del_flag, r.create_time, r.remark ,r.company_id,IFNULL(CONCAT_WS('/', d3.dept_name, d2.dept_name, d1.dept_name), 'Unknown') AS dept_name from sys_role r left join sys_user_role ur on ur.role_id = r.role_id left join sys_user u on u.user_id = ur.user_id @@ -110,6 +110,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" status, remark, create_by, + company_id, create_time )values( #{roleId}, @@ -122,6 +123,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{status}, #{remark}, #{createBy}, + #{companyId}, sysdate() ) diff --git a/sgzb-modules/sgzb-system/src/main/resources/mapper/system/SysUserMapper.xml b/sgzb-modules/sgzb-system/src/main/resources/mapper/system/SysUserMapper.xml index 2507360f..0b44c790 100644 --- a/sgzb-modules/sgzb-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/sgzb-modules/sgzb-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -48,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - 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.create_by, u.create_time, u.remark, u.company_id, + select u.user_id, u.dept_id, u.user_name, u.nick_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.company_id, 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 from sys_user u @@ -58,7 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"