fix(office编辑): 编辑后再次打开报错问题修复

This commit is contained in:
马超 2023-03-07 14:34:52 +08:00
parent 7cf1abccc7
commit 6fa2e2e03f
6 changed files with 24 additions and 22 deletions

View File

@ -109,8 +109,7 @@ public class OfficeController {
FileModel fileModel = fileConfigurer.getFileModel(
DefaultFileWrapper
.builder()
.userFileId(userFile.getUserFileId())
.fileName(userFile.getFileName() + "." + userFile.getExtendName())
.userFile(userFile)
.type(type)
.lang(locale.toLanguageTag())
.action(action)
@ -154,8 +153,7 @@ public class OfficeController {
FileModel fileModel = fileConfigurer.getFileModel(
DefaultFileWrapper
.builder()
.userFileId(userFile.getUserFileId())
.fileName(userFile.getFileName() + "." + userFile.getExtendName())
.userFile(userFile)
.type(type)
.lang(locale.toLanguageTag())
.action(action)

View File

@ -18,6 +18,7 @@
package com.qiwenshare.file.office.services.configurers.implementations;
import com.qiwenshare.file.domain.UserFile;
import com.qiwenshare.file.office.documentserver.managers.document.DocumentManager;
import com.qiwenshare.file.office.documentserver.models.filemodel.Document;
import com.qiwenshare.file.office.documentserver.models.filemodel.Permission;
@ -49,7 +50,9 @@ public class DefaultDocumentConfigurer implements DocumentConfigurer<DefaultDocu
private ServiceConverter serviceConverter;
public void configure(Document document, DefaultDocumentWrapper wrapper){ // define the document configurer
String fileName = wrapper.getFileName(); // get the fileName parameter from the document wrapper
UserFile userFile = wrapper.getUserFile();
String fileName = userFile.getFileName() + "." + userFile.getExtendName(); // get the fileName parameter from the document wrapper
Permission permission = wrapper.getPermission(); // get the permission parameter from the document wrapper
document.setTitle(fileName); // set the title to the document config
@ -58,9 +61,7 @@ public class DefaultDocumentConfigurer implements DocumentConfigurer<DefaultDocu
document.getInfo().setFavorite(wrapper.getFavorite()); // set the favorite parameter to the document config
String key = serviceConverter. // get the document key
generateRevisionId(storagePathBuilder.getStorageLocation()
+ "/" + fileName + "/"
+ new File(storagePathBuilder.getFileLocation(fileName)).lastModified());
generateRevisionId(userFile.getUserFileId() + userFile.getUploadTime());
document.setKey(key); // set the key to the document config
document.setPermissions(permission); // set the permission parameters to the document config

View File

@ -19,6 +19,7 @@
package com.qiwenshare.file.office.services.configurers.implementations;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.qiwenshare.file.domain.UserFile;
import com.qiwenshare.file.office.documentserver.managers.document.DocumentManager;
import com.qiwenshare.file.office.documentserver.managers.template.TemplateManager;
import com.qiwenshare.file.office.documentserver.models.enums.Action;
@ -70,12 +71,14 @@ public class DefaultEditorConfigConfigurer implements EditorConfigConfigurer<Def
// if (wrapper.getActionData() != null) { // check if the actionData is not empty in the editorConfig wrapper
// config.setActionLink(objectMapper.readValue(wrapper.getActionData(), (JavaType) new TypeToken<HashMap<String, Object>>() { }.getType())); // set actionLink to the editorConfig
// }
String fileName = wrapper.getFileName(); // set the fileName parameter from the editorConfig wrapper
String fileExt = fileUtility.getFileExtension(fileName);
// String fileName = wrapper.getFileName(); // set the fileName parameter from the editorConfig wrapper
UserFile userFile = wrapper.getUserFile();
// String fileExt = fileUtility.getFileExtension(fileName);
String fileName = userFile.getFileName() + "." + userFile.getExtendName();
boolean userIsAnon = wrapper.getUser().getName().equals("Anonymous"); // check if the user from the editorConfig wrapper is anonymous or not
config.setTemplates(userIsAnon ? null : templateManager.createTemplates(fileName)); // set a template to the editorConfig if the user is not anonymous
config.setCallbackUrl(documentManager.getCallback(wrapper.getUserFileId())); // set the callback URL to the editorConfig
config.setCallbackUrl(documentManager.getCallback(userFile.getUserFileId())); // set the callback URL to the editorConfig
config.setCreateUrl(userIsAnon ? null : documentManager.getCreateUrl(fileName, false)); // set the document URL where it will be created to the editorConfig if the user is not anonymous
config.setLang(wrapper.getLang()); // set the language to the editorConfig
Boolean canEdit = wrapper.getCanEdit(); // check if the file of the specified type can be edited or not

View File

@ -19,6 +19,7 @@
package com.qiwenshare.file.office.services.configurers.implementations;
import com.alibaba.fastjson2.JSON;
import com.qiwenshare.file.domain.UserFile;
import com.qiwenshare.file.office.documentserver.managers.jwt.JwtManager;
import com.qiwenshare.file.office.documentserver.models.enums.Action;
import com.qiwenshare.file.office.documentserver.models.enums.DocumentType;
@ -61,17 +62,17 @@ public class DefaultFileConfigurer implements FileConfigurer<DefaultFileWrapper>
public void configure(FileModel fileModel, DefaultFileWrapper wrapper){ // define the file configurer
if (fileModel != null){ // check if the file model is specified
String fileName = wrapper.getFileName(); // get the fileName parameter from the file wrapper
UserFile userFile = wrapper.getUserFile(); // get the fileName parameter from the file wrapper
Action action = wrapper.getAction(); // get the action parameter from the file wrapper
DocumentType documentType = fileUtility.getDocumentType(fileName); // get the document type of the specified file
DocumentType documentType = fileUtility.getDocumentType(userFile.getFileName() + "." + userFile.getExtendName()); // get the document type of the specified file
fileModel.setDocumentType(documentType); // set the document type to the file model
fileModel.setType(wrapper.getType()); // set the platform type to the file model
// Permission userPermissions = mapper.toModel(wrapper.getUser().getPermissions()); // convert the permission entity to the model
Permission userPermissions = new Permission(); // TODO
String fileExt = fileUtility.getFileExtension(wrapper.getFileName());
String fileExt = fileUtility.getFileExtension(userFile.getFileName() + "." + userFile.getExtendName());
Boolean canEdit = fileUtility.getEditedExts().contains(fileExt);
if ((!canEdit && action.equals(Action.edit) || action.equals(Action.fillForms)) && fileUtility.getFillExts().contains(fileExt)) {
canEdit = true;
@ -81,7 +82,8 @@ public class DefaultFileConfigurer implements FileConfigurer<DefaultFileWrapper>
DefaultDocumentWrapper documentWrapper = DefaultDocumentWrapper // define the document wrapper
.builder()
.fileName(fileName)
.userFile(userFile)
// .fileName(userFile.getFileName() + "." + userFile.getExtendName())
.permission(updatePermissions(userPermissions, action, canEdit))
.favorite(wrapper.getUser().getFavorite())
.previewUrl(wrapper.getActionData())
@ -97,10 +99,7 @@ public class DefaultFileConfigurer implements FileConfigurer<DefaultFileWrapper>
map.put("editorConfig", fileModel.getEditorConfig());
fileModel.setToken(jwtManager.createToken(map)); // create a token and set it to the file model
JWT res = jwtManager.readToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlZGl0b3JDb25maWciOnsiY2FsbGJhY2tVcmwiOiJodHRwOi8vbG9jYWxob3N0OjQwMDAvdHJhY2s_ZmlsZU5hbWU9bmV3LmRvY3gmdXNlckFkZHJlc3M9RSUzQSU1Q2NvZGUlNUMlRTYlOEYlOTIlRTQlQkIlQjYyJTVDSmF2YStTcHJpbmcrRXhhbXBsZSU1Q0phdmErU3ByaW5nK0V4YW1wbGUlNUNkb2N1bWVudHMlNUMxOTIuMTY4LjEuNiU1QyIsImNyZWF0ZVVybCI6Imh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9jcmVhdGU_ZmlsZUV4dD1kb2N4JnNhbXBsZT1mYWxzZSIsImN1c3RvbWl6YXRpb24iOnsibG9nbyI6eyJpbWFnZSI6IiIsImltYWdlRW1iZWRkZWQiOiIiLCJ1cmwiOiJodHRwczovL3d3dy5vbmx5b2ZmaWNlLmNvbSJ9LCJnb2JhY2siOnsidXJsIjoiaHR0cDovL2xvY2FsaG9zdDo0MDAwLyJ9LCJhdXRvc2F2ZSI6dHJ1ZSwiY29tbWVudHMiOnRydWUsImNvbXBhY3RIZWFkZXIiOmZhbHNlLCJjb21wYWN0VG9vbGJhciI6ZmFsc2UsImNvbXBhdGlibGVGZWF0dXJlcyI6ZmFsc2UsImZvcmNlc2F2ZSI6ZmFsc2UsImhlbHAiOnRydWUsImhpZGVSaWdodE1lbnUiOmZhbHNlLCJoaWRlUnVsZXJzIjpmYWxzZSwic3VibWl0Rm9ybSI6ZmFsc2UsImFib3V0Ijp0cnVlLCJmZWVkYmFjayI6dHJ1ZX0sImVtYmVkZGVkIjp7fSwibGFuZyI6ImVuIiwibW9kZSI6ImVkaXQiLCJ1c2VyIjp7ImlkIjoiMSIsIm5hbWUiOiJKb2huIFNtaXRoIiwiZ3JvdXAiOiIifSwidGVtcGxhdGVzIjpbeyJpbWFnZSI6IiIsInRpdGxlIjoiQmxhbmsiLCJ1cmwiOiJodHRwOi8vbG9jYWxob3N0OjQwMDAvY3JlYXRlP2ZpbGVFeHQ9ZG9jeCZzYW1wbGU9ZmFsc2UifSx7ImltYWdlIjoiaHR0cDovL2xvY2FsaG9zdDo0MDAwL2Nzcy9pbWcvZmlsZV9kb2N4LnN2ZyIsInRpdGxlIjoiV2l0aCBzYW1wbGUgY29udGVudCIsInVybCI6Imh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9jcmVhdGU_ZmlsZUV4dD1kb2N4JnNhbXBsZT10cnVlIn1dfSwiZG9jdW1lbnRUeXBlIjoid29yZCIsImRvY3VtZW50Ijp7ImluZm8iOnsib3duZXIiOiJNZSIsInVwbG9hZGVkIjoiU3VuIE5vdiAyNyAyMDIyIn0sInBlcm1pc3Npb25zIjp7ImNvbW1lbnQiOnRydWUsImNvcHkiOnRydWUsImRvd25sb2FkIjp0cnVlLCJlZGl0Ijp0cnVlLCJwcmludCI6dHJ1ZSwiZmlsbEZvcm1zIjp0cnVlLCJtb2RpZnlGaWx0ZXIiOnRydWUsIm1vZGlmeUNvbnRlbnRDb250cm9sIjp0cnVlLCJyZXZpZXciOnRydWUsImNoYXQiOnRydWUsImNvbW1lbnRHcm91cHMiOnt9fSwiZmlsZVR5cGUiOiJkb2N4Iiwia2V5IjoiLTgxNjAzMzMxMiIsInVybFVzZXIiOiJodHRwOi8vbG9jYWxob3N0OjQwMDAvZG93bmxvYWQ_ZmlsZU5hbWU9bmV3LmRvY3gmdXNlckFkZHJlc3NFJTNBJTVDY29kZSU1QyVFNiU4RiU5MiVFNCVCQiVCNjIlNUNKYXZhK1NwcmluZytFeGFtcGxlJTVDSmF2YStTcHJpbmcrRXhhbXBsZSU1Q2RvY3VtZW50cyU1QzE5Mi4xNjguMS42JTVDIiwidGl0bGUiOiJuZXcuZG9jeCIsInVybCI6Imh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9kb3dubG9hZD9maWxlTmFtZT1uZXcuZG9jeCZ1c2VyQWRkcmVzcz1FJTNBJTVDY29kZSU1QyVFNiU4RiU5MiVFNCVCQiVCNjIlNUNKYXZhK1NwcmluZytFeGFtcGxlJTVDSmF2YStTcHJpbmcrRXhhbXBsZSU1Q2RvY3VtZW50cyU1QzE5Mi4xNjguMS42JTVDIiwiZGlyZWN0VXJsIjoiaHR0cDovL2xvY2FsaG9zdDo0MDAwL2Rvd25sb2FkP2ZpbGVOYW1lPW5ldy5kb2N4In0sInR5cGUiOiJkZXNrdG9wIn0.xZHMRgDUK76I_a_DOZSGJ1Fcxp_ghOCwR1FTqxwbnxE");
System.out.println(JSON.toJSONString(res));
JWT res2 = jwtManager.readToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlZGl0b3JDb25maWciOnsiY2FsbGJhY2tVcmwiOiJodHRwOi8vMTIxLjg5LjIyMi4xMDM6ODc2My9vZmZpY2UvSW5kZXhTZXJ2bGV0P3R5cGU9ZWRpdCZ1c2VyRmlsZUlkPTE1ODUxMzQyOTcyMjQwNDQ1NDQmdG9rZW49QmVhcmVyIGV5SmhiR2NpT2lKSVV6STFOaUo5LmV5SnBjM01pT2lKeGFYZGxiaTFqYlhNaUxDSmxlSEFpT2pFMk5qazNPVFV3T0RJc0luTjFZaUk2SW50Y0luVnpaWEpKWkZ3aU9qSjlJaXdpWVhWa0lqb2ljV2wzWlc1emFHRnlaU0lzSW1saGRDSTZNVFkyT1RFNU1ESTRNbjAuYzJwa1hwejFjMHZRcU9zX3I2V0JySnJDZ1lnbUtNMGc2Q2YxZEhVaG51cyIsImNyZWF0ZVVybCI6Imh0dHA6Ly8xMjEuODkuMjIyLjEwMzo4NzYzL2NyZWF0ZT9maWxlRXh0PXhsc3gmc2FtcGxlPWZhbHNlIiwiY3VzdG9taXphdGlvbiI6eyJsb2dvIjp7ImltYWdlIjoiIiwiaW1hZ2VFbWJlZGRlZCI6IiIsInVybCI6Imh0dHBzOi8vd3d3Lm9ubHlvZmZpY2UuY29tIn0sImdvYmFjayI6eyJ1cmwiOiJodHRwOi8vMTIxLjg5LjIyMi4xMDM6ODc2My8ifSwiYXV0b3NhdmUiOnRydWUsImNvbW1lbnRzIjp0cnVlLCJjb21wYWN0SGVhZGVyIjpmYWxzZSwiY29tcGFjdFRvb2xiYXIiOmZhbHNlLCJjb21wYXRpYmxlRmVhdHVyZXMiOmZhbHNlLCJmb3JjZXNhdmUiOmZhbHNlLCJoZWxwIjp0cnVlLCJoaWRlUmlnaHRNZW51IjpmYWxzZSwiaGlkZVJ1bGVycyI6ZmFsc2UsInN1Ym1pdEZvcm0iOmZhbHNlLCJhYm91dCI6dHJ1ZSwiZmVlZGJhY2siOnRydWV9LCJlbWJlZGRlZCI6e30sImxhbmciOiJ6aCIsIm1vZGUiOiJ2aWV3IiwidXNlciI6eyJpZCI6IjEiLCJuYW1lIjoiSm9obiBTbWl0aCIsImdyb3VwIjoiIn0sInRlbXBsYXRlcyI6W3siaW1hZ2UiOiIiLCJ0aXRsZSI6IkJsYW5rIiwidXJsIjoiaHR0cDovLzEyMS44OS4yMjIuMTAzOjg3NjMvY3JlYXRlP2ZpbGVFeHQ9eGxzeCZzYW1wbGU9ZmFsc2UifSx7ImltYWdlIjoiaHR0cDovLzEyMS44OS4yMjIuMTAzOjg3NjMvY3NzL2ltZy9maWxlX3hsc3guc3ZnIiwidGl0bGUiOiJXaXRoIHNhbXBsZSBjb250ZW50IiwidXJsIjoiaHR0cDovLzEyMS44OS4yMjIuMTAzOjg3NjMvY3JlYXRlP2ZpbGVFeHQ9eGxzeCZzYW1wbGU9dHJ1ZSJ9XX0sImRvY3VtZW50VHlwZSI6ImNlbGwiLCJkb2N1bWVudCI6eyJpbmZvIjp7Im93bmVyIjoiTWUiLCJ1cGxvYWRlZCI6Ik1vbiBOb3YgMjggMjAyMiJ9LCJwZXJtaXNzaW9ucyI6eyJjb21tZW50IjpmYWxzZSwiY29weSI6dHJ1ZSwiZG93bmxvYWQiOnRydWUsImVkaXQiOnRydWUsInByaW50Ijp0cnVlLCJmaWxsRm9ybXMiOmZhbHNlLCJtb2RpZnlGaWx0ZXIiOnRydWUsIm1vZGlmeUNvbnRlbnRDb250cm9sIjp0cnVlLCJyZXZpZXciOmZhbHNlLCJjaGF0Ijp0cnVlLCJjb21tZW50R3JvdXBzIjp7ImFhYSI6ImJiYiJ9fSwiZmlsZVR5cGUiOiJ4bHN4Iiwia2V5IjoiLTExMzc3NjkyMDciLCJ1cmxVc2VyIjoiaHR0cDovLzEyMS44OS4yMjIuMTAzOjg3NjMvZG93bmxvYWQ_ZmlsZU5hbWU9JUU5JTk3JUFFJUU5JUEyJTk4JUU4JUFFJUIwJUU1JUJEJTk1Lnhsc3gmdXNlckFkZHJlc3MlMkZyb290JTJGZ2l0ZWVfZ28lMkZkZXBsb3klMkZxaXdlbi1maWxlJTJGZG9jdW1lbnRzJTJGMTcyLjI2LjIxMS4yMDklMkYiLCJ0aXRsZSI6IumXrumimOiusOW9lS54bHN4IiwidXJsIjoiaHR0cHM6Ly90ZXN0cGFuLnFpd2Vuc2hhcmUuY29tL2FwaS9maWxldHJhbnNmZXIvcHJldmlldz91c2VyRmlsZUlkPTE1ODUxMzQyOTcyMjQwNDQ1NDQmaXNNaW49ZmFsc2Umc2hhcmVCYXRjaE51bT11bmRlZmluZWQmZXh0cmFjdGlvbkNvZGU9dW5kZWZpbmVkJnRva2VuPUJlYXJlciBleUpoYkdjaU9pSklVekkxTmlKOS5leUpwYzNNaU9pSnhhWGRsYmkxamJYTWlMQ0psZUhBaU9qRTJOamszT1RVd09ESXNJbk4xWWlJNkludGNJblZ6WlhKSlpGd2lPako5SWl3aVlYVmtJam9pY1dsM1pXNXphR0Z5WlNJc0ltbGhkQ0k2TVRZMk9URTVNREk0TW4wLmMycGtYcHoxYzB2UXFPc19yNldCckpyQ2dZZ21LTTBnNkNmMWRIVWhudXMiLCJkaXJlY3RVcmwiOiJodHRwOi8vMTIxLjg5LjIyMi4xMDM6ODc2My9kb3dubG9hZD9maWxlTmFtZT0lRTklOTclQUUlRTklQTIlOTglRTglQUUlQjAlRTUlQkQlOTUueGxzeCJ9LCJ0eXBlIjoiZGVza3RvcCJ9.O5eBtPY0eA9CCCkbglO2gt4L42CnBtJsvoOUnL3PujM");
System.out.println(JSON.toJSONString(res2));
}
}

View File

@ -18,6 +18,7 @@
package com.qiwenshare.file.office.services.configurers.wrappers;
import com.qiwenshare.file.domain.UserFile;
import com.qiwenshare.file.office.documentserver.models.filemodel.Permission;
import lombok.Builder;
import lombok.Getter;
@ -26,7 +27,7 @@ import lombok.Getter;
@Builder
public class DefaultDocumentWrapper {
private Permission permission;
private String fileName;
private UserFile userFile;
private Boolean favorite;
private String previewUrl;
}

View File

@ -18,6 +18,7 @@
package com.qiwenshare.file.office.services.configurers.wrappers;
import com.qiwenshare.file.domain.UserFile;
import com.qiwenshare.file.office.documentserver.models.enums.Action;
import com.qiwenshare.file.office.documentserver.models.enums.Type;
import com.qiwenshare.file.office.entities.User;
@ -29,8 +30,7 @@ import lombok.Setter;
@Builder
@Setter
public class DefaultFileWrapper {
private String userFileId;
private String fileName;
private UserFile userFile;
private Type type;
private User user;
private String lang;