钱惠东 89e6cccd95 Merge remote-tracking branch 'origin/dev_v2' into dev_v2 | 1 týždeň pred | |
---|---|---|
.. | ||
bin | 3 mesiacov pred | |
doc | 3 mesiacov pred | |
sql | 3 mesiacov pred | |
src | 1 týždeň pred | |
.gitignore | 1 mesiac pred | |
LICENSE | 3 mesiacov pred | |
README.md | 2 mesiacov pred | |
pom.xml | 1 mesiac pred | |
ry.bat | 3 mesiacov pred | |
ry.sh | 3 mesiacov pred |
后端通用方法
//获取带逗号的权限字符
String res = SecurityUtils.getPermissionCharSea();
例如: ,1,
//获取不带逗号的权限
String ress = SecurityUtils.getPermissionCharIns();
例如: 1
使用方法
SELECT p.premession_char FROM (SELECT @premessionStr:=',1,' p) param , getpremessionview p
2024修改,个人权限可以选择多个
使用新方法 getpremessionview_chars, 传参处需修改, 权限字符以 A,B,C 的形式传入
SELECT p.premession_char FROM (SELECT @premessionStr:='120,119' p) param , getpremessionview_chars p
其中,1,为登录用户的权限字符串,直接获取传入。
在查询用户数据列表时
select s.*
from XXX s (数据源表)
inner join (
SELECT p.premession_char FROM (SELECT @premessionStr:=',1,' p) param , getpremessionview p
) permission on permission.premession_char = s.premession_char (关联用户权限表。只查询出带有权限的数据列)
where .........
使用commonService下的getCommonID
commonService.getCommonID("seq_area_agent")
传人参数为固定值 seq_area_agent
获取当前登录用户时区
String ss = SecurityUtils.getTimeZone();
此方法为 时间字符串 获取 UTC时间字符串 的方法
参数:time 为当地时间 ; Asia/Shanghai为当前时区
String UTC_Time = DateUtils.UTCTimeStr(Object time,"Asia/Shanghai");
方法优化现拆分为两个方法,传入time参数可输入日期或string,返回类型根据需要调用不同方法
UTCTimeStr(Object time,"Asia/Shanghai") 返回string
UTCTimeDate(Object time,"Asia/Shanghai") 返回Date
此方法为 UTC时间字符串 转 当地时间字符串 的方法
参数:time 为UTC时间 ; Asia/Shanghai为要转换的时区
String LOCAL_Time = DateUtils.LocalTime(Object time,"Asia/Shanghai");
在需要推送消息时
需调用 sseEmitterService.sendSaveMessage(ids,message);方法
例如:
List<Long> ids = new ArrayList<>();
ids.add(1L);
Message message = new Message();
message.setMessageContent("测试推送消息");
sseEmitterService.sendSaveMessage(ids,message);
其中 ids为需要发送的人员id,
message为消息实体,具体内容按需填充。其中消息内容和消息类型需设置。
String No = RedisCache.generateSerialNumber(业务前缀)
导入主要修改文件 ExcelRestController / TableTypeEnum
1.首先修改TableTypeEnum枚举类,新增你需要的导入文件类型
2.在/resources/excelTemplate,放入模板文件,注意名称要和枚举类/前端传入文件名相同
3.修改ExcelRestController-downloadTemplate方法,将枚举类填入switch中,此方法为下载模板方法
4.新增导入实体类,参考 CustomerInfoHelper 。其中导入文件字段顺序需和实体中index保持一致。
其余详细配置项参考官方文档
5..修改ExcelRestController-check方法,将验证导入数据是否正确的方法写在checkSheets()方法中。
此方法在运行时会调用传入的验证方法。
6..修改ExcelRestController-saveBatch方法,此方法为保存数据方法。增加新的类型并填入保存方法完成保存。
详细代码及实例见ExcelRestController
①根据i18n中的msg,分别获取多种语言的msg内容。
例:
MessageSource messageSource = SpringUtils.getBean(MessageSource.class);
String messageContent = messageSource.getMessage("message.reminderNotFollowingProject", args, new Locale("zh","CN"));
String messageContentUS = messageSource.getMessage("message.reminderNotFollowingProject", args,new Locale("en","US"));
String messageContentRU = messageSource.getMessage("message.reminderNotFollowingProject", args,new Locale("ru","RU"));
String messageContentES = messageSource.getMessage("message.reminderNotFollowingProject", args,new Locale("es","ES"));
②MessageType用字典中的value设定,便于前端国际化。
例:
message.setMessageType(MessageTypeEnum.PROJECT_UN_FOLLOW.getValue()); <-- 项目跟踪提醒
③定时任务的场合,创建人必须设定。
message.setCreateBy("1"); <-- 项目创建人设为admin
在更新接口处加入如下注解 @DataUpdateCheck
例:@PutMapping
@DataUpdateCheck(key = "id", tableName ="tp_elevator_model")
public AjaxResult edit(@RequestBody TpElevatorModel tpElevatorModel)
{
return toAjax(tpElevatorModelService.updateTpElevatorModel(tpElevatorModel));
}
其中key 为数据表主键字段
tableName 为修改表名
注意
1.该注解只针对传入实体对应的表,key字段在传入实体中必须要存在,且字段名一致。
2.还需传入updateTime字段,作为判断依据
可以使用com.ruoyi.common.utils.SpecialCharacterEscaper.escapeSpecialCharacters(R r, SFunction<R, Object>... consumers)
方法
第一个参数是要处理的参数对象,
第二个参数是可变参数,需要处理的字段, 取对应字段的get方法引用即可。
使用方法如下:
public List<TcLead> selectTcLeadList(LeadListReq tcLead) {
SpecialCharacterEscaper.escapeSpecialCharacters(tcLead, LeadListReq::getLeadNo, LeadListReq::getAccountNo,
LeadListReq::getCompany, LeadListReq::getOwnerName, LeadListReq::getContact, LeadListReq::getRequirement,
LeadListReq::getAddress, LeadListReq::getCreateByName);
return tcLeadMapper.selectTcLeadList(tcLead);
}
修改点有2个
1. impl 参数中追加 loginUserId(该项目在BaseEnatity里已追加)
Long loginUserId = SecurityUtils.getUserId();
// 代理商销售经理的场合
if(SecurityUtils.hasRole("agent_sales")){
tcFollow.setLoginUserId(loginUserId);
}
2. Mapper.xml里追加检索条件
<where>
<if test="loginUserId != null and loginUserId != ''">
and (sub1.permission_char <> #{permissionChar} or sub1.create_by = #{loginUserId})
</if>
1. 如果以后涉及 服务器ip、nginx代理接口发生变化,需要变更yml中的(fileConfig.file-prefix)配置(一定要变更,否则聊天室图片功能将不能正常使用)
这个配置:
(1): 前端访问的controller层接口 前的请求路径,端口后不跟“/”,
例如
本地:“http://localhost:8080”
高达测试环境:“http://139.196.75.129:8852”
(2):上下文(/prod-api)已经在上传接口中处理,如果后期不需要上下文,则在 CommonController
下的 /upload 接口中,去掉上下文拼接
2.nginx.conf文件限制了 文件上传的大小,
(1)仅前端或者后端checkAllow单方面调整限制无效,需要同步至nginx.conf,
目前配置限制了5m,,如果后续要变更,需要同步ngxin配置;
client_max_body_size 5m; 加在 http级别下