支持多公司使用

This commit is contained in:
15856 2024-05-20 09:12:28 +08:00
parent b92c98a222
commit 457d1cf846
14 changed files with 201 additions and 41 deletions

View File

@ -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;

View File

@ -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();
}
}

View File

@ -24,10 +24,4 @@
<description>
sgzb-modules业务模块
</description>
<dependencies>
<dependency>
<groupId>com.bonus.sgzb</groupId>
<artifactId>sgzb-api-system</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -110,6 +110,12 @@
<artifactId>tencentcloud-sdk-java</artifactId>
<version>3.1.423</version>
</dependency>
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.54</version>
</dependency>
</dependencies>
<build>

View File

@ -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;
}
}

View File

@ -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));
}

View File

@ -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;
/**

View File

@ -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<MultipartFile> items = (List<MultipartFile>) 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 + "/";

View File

@ -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());

View File

@ -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<SysDept> 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);

View File

@ -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

View File

@ -21,11 +21,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="companyId" column="company_id" />
</resultMap>
<sql id="selectDeptVo">
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
</sql>
@ -44,6 +45,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="status != null and status != ''">
AND status = #{status}
</if>
<if test="companyId != null and companyId != ''">
AND company_id = #{companyId}
</if>
<!-- 数据范围过滤 -->
${params.dataScope}
order by d.parent_id, d.order_num
@ -99,6 +103,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="email != null and email != ''">email,</if>
<if test="status != null">status,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="companyId != null and companyId != ''">company_id,</if>
create_time
)values(
<if test="deptId != null and deptId != 0">#{deptId},</if>
@ -111,6 +116,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="email != null and email != ''">#{email},</if>
<if test="status != null">#{status},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="companyId != null and companyId != ''">#{companyId},</if>
sysdate()
)
</insert>

View File

@ -24,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectRoleVo">
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"
<if test="status != null and status != ''">status,</if>
<if test="remark != null and remark != ''">remark,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="companyId != null and companyId != ''">company_id,</if>
create_time
)values(
<if test="roleId != null and roleId != 0">#{roleId},</if>
@ -122,6 +123,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="status != null and status != ''">#{status},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="companyId != null and companyId != ''">#{companyId},</if>
sysdate()
)
</insert>

View File

@ -48,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<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.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"
</sql>
<select id="selectUserList" parameterType="com.bonus.sgzb.system.api.domain.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.company_id, d.dept_name, d.leader from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
where u.del_flag = '0'
<if test="userId != null and userId != 0">
@ -70,6 +70,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="status != null and status != ''">
AND u.status = #{status}
</if>
<if test="companyId != null and companyId != ''">
AND u.company_id = #{companyId}
</if>
<if test="phonenumber != null and phonenumber != ''">
AND u.phonenumber like concat('%', #{phonenumber}, '%')
</if>