diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 4d84e2c..4cae735 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -44,7 +44,6 @@ @ExcelProperty("点位类型") @TableField(exist = false) - @NotBlank(message = "点位类型不能为空") private String wellTypeName; @ExcelProperty("位置信息") @@ -55,7 +54,6 @@ @TableField(exist = false) @ExcelProperty("所属项目") - @NotBlank(message = "所属项目不能为空") private String projectName; private Date createTime; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 4d84e2c..4cae735 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -44,7 +44,6 @@ @ExcelProperty("点位类型") @TableField(exist = false) - @NotBlank(message = "点位类型不能为空") private String wellTypeName; @ExcelProperty("位置信息") @@ -55,7 +54,6 @@ @TableField(exist = false) @ExcelProperty("所属项目") - @NotBlank(message = "所属项目不能为空") private String projectName; private Date createTime; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index a8921c5..8a5f81a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -33,6 +33,8 @@ String begTime, String endTime, String project, String installPerson); + void deleteExportFile(String fileValidDays); + void convert84(); void exportImageExcel(Map sluiceWellDictMap, diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 4d84e2c..4cae735 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -44,7 +44,6 @@ @ExcelProperty("点位类型") @TableField(exist = false) - @NotBlank(message = "点位类型不能为空") private String wellTypeName; @ExcelProperty("位置信息") @@ -55,7 +54,6 @@ @TableField(exist = false) @ExcelProperty("所属项目") - @NotBlank(message = "所属项目不能为空") private String projectName; private Date createTime; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index a8921c5..8a5f81a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -33,6 +33,8 @@ String begTime, String endTime, String project, String installPerson); + void deleteExportFile(String fileValidDays); + void convert84(); void exportImageExcel(Map sluiceWellDictMap, diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java index 2f180c1..d008c8a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java @@ -13,4 +13,5 @@ */ public interface IAppUserOpenidService extends IService { + Boolean isBindByOpenId(String openId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 4d84e2c..4cae735 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -44,7 +44,6 @@ @ExcelProperty("点位类型") @TableField(exist = false) - @NotBlank(message = "点位类型不能为空") private String wellTypeName; @ExcelProperty("位置信息") @@ -55,7 +54,6 @@ @TableField(exist = false) @ExcelProperty("所属项目") - @NotBlank(message = "所属项目不能为空") private String projectName; private Date createTime; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index a8921c5..8a5f81a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -33,6 +33,8 @@ String begTime, String endTime, String project, String installPerson); + void deleteExportFile(String fileValidDays); + void convert84(); void exportImageExcel(Map sluiceWellDictMap, diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java index 2f180c1..d008c8a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java @@ -13,4 +13,5 @@ */ public interface IAppUserOpenidService extends IService { + Boolean isBindByOpenId(String openId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0d9c990..2cafc39 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -20,6 +20,9 @@ Object update(AppUserSaveDTO appUserDTO); + Object resetPassword(AppUserSaveDTO appUserDTO); + + Object project(String openId); Object unbind(Long id); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 4d84e2c..4cae735 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -44,7 +44,6 @@ @ExcelProperty("点位类型") @TableField(exist = false) - @NotBlank(message = "点位类型不能为空") private String wellTypeName; @ExcelProperty("位置信息") @@ -55,7 +54,6 @@ @TableField(exist = false) @ExcelProperty("所属项目") - @NotBlank(message = "所属项目不能为空") private String projectName; private Date createTime; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index a8921c5..8a5f81a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -33,6 +33,8 @@ String begTime, String endTime, String project, String installPerson); + void deleteExportFile(String fileValidDays); + void convert84(); void exportImageExcel(Map sluiceWellDictMap, diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java index 2f180c1..d008c8a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java @@ -13,4 +13,5 @@ */ public interface IAppUserOpenidService extends IService { + Boolean isBindByOpenId(String openId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0d9c990..2cafc39 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -20,6 +20,9 @@ Object update(AppUserSaveDTO appUserDTO); + Object resetPassword(AppUserSaveDTO appUserDTO); + + Object project(String openId); Object unbind(Long id); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java index 9804cae..68eb4aa 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java @@ -37,6 +37,7 @@ import java.util.*; import java.util.List; import java.util.concurrent.*; +import java.util.stream.Collectors; /** *

@@ -140,6 +141,30 @@ return this.selectList(query); } + //删除超期一天的日志 + @Override + public void deleteExportFile(String fileValidDays) { + //查询超出一天的文件,删除文件日志,删除文件 + List batchExportLogs = batchExportLogMapper.getOverdueExportLog(fileValidDays); + //待删除的目录 + List userIds = batchExportLogs.stream().map(BatchExportLog::getCreateUserId) + .distinct().collect(Collectors.toList()); + //待删除的目录 + List ids = batchExportLogs.stream().map(BatchExportLog::getId) + .distinct().collect(Collectors.toList()); + //删除目录 + for (Long userId : userIds) { + String currentStampDir = filePath + userId + File.separator; + File invalidFile = new File(currentStampDir); + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + deleteFile(invalidFile, currentStampDir); + } + } + //删除日志 + this.deleteBatchIds(ids); + } + @Override public void convert84() { EntityWrapper query = new EntityWrapper<>(); @@ -168,9 +193,8 @@ appDeviceAdds.forEach(appDeviceAdd -> { appDeviceAdd.setWelltype(sluiceWellDictMap.get(appDeviceAdd.getWelltype())); }); - Long stampeDir = System.currentTimeMillis(); //以当前时间戳为目录 - String currentStampDir = filePath + stampeDir + File.separator; + String currentStampDir = filePath + currentUserId + File.separator; setLocalFileDir(currentStampDir); List batchExportLogsList = new ArrayList<>(); try { @@ -190,15 +214,18 @@ } }; executor.submit(task); - batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(stampeDir))); + batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(currentStampDir))); } while (true) { Long activeCount = ((ThreadPoolExecutor) executor).getTaskCount() - ((ThreadPoolExecutor) executor).getCompletedTaskCount(); if (activeCount == 0) { + //只删除自己的 + EntityWrapper query = new EntityWrapper(); + query.eq("create_user_id", currentUserId); //删除所有的文件日志 - this.batchExportLogMapper.delete(null); + this.batchExportLogMapper.delete(query); //删除所有历史文件 - deleteFile(new File(filePath), String.valueOf(stampeDir)); + deleteFile(new File(currentStampDir), String.valueOf(currentStampDir)); //批量导入日志 batchExportLogsList.stream().forEach( batchExportLog -> this.batchExportLogMapper.insert(batchExportLog) @@ -207,7 +234,7 @@ List userList = new ArrayList<>(); userList.add(String.valueOf(currentUserId)); Map map = new HashMap(); - map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(stampeDir)) + "的文件导出已经生成了,请到导出列表页面查看"); + map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "的文件导出已经生成了,请到导出列表页面查看"); map.put("type", "alarm"); webSocket.sendListMessage(userList, JSON.toJSONString(map)); break; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 4d84e2c..4cae735 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -44,7 +44,6 @@ @ExcelProperty("点位类型") @TableField(exist = false) - @NotBlank(message = "点位类型不能为空") private String wellTypeName; @ExcelProperty("位置信息") @@ -55,7 +54,6 @@ @TableField(exist = false) @ExcelProperty("所属项目") - @NotBlank(message = "所属项目不能为空") private String projectName; private Date createTime; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index a8921c5..8a5f81a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -33,6 +33,8 @@ String begTime, String endTime, String project, String installPerson); + void deleteExportFile(String fileValidDays); + void convert84(); void exportImageExcel(Map sluiceWellDictMap, diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java index 2f180c1..d008c8a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java @@ -13,4 +13,5 @@ */ public interface IAppUserOpenidService extends IService { + Boolean isBindByOpenId(String openId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0d9c990..2cafc39 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -20,6 +20,9 @@ Object update(AppUserSaveDTO appUserDTO); + Object resetPassword(AppUserSaveDTO appUserDTO); + + Object project(String openId); Object unbind(Long id); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java index 9804cae..68eb4aa 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java @@ -37,6 +37,7 @@ import java.util.*; import java.util.List; import java.util.concurrent.*; +import java.util.stream.Collectors; /** *

@@ -140,6 +141,30 @@ return this.selectList(query); } + //删除超期一天的日志 + @Override + public void deleteExportFile(String fileValidDays) { + //查询超出一天的文件,删除文件日志,删除文件 + List batchExportLogs = batchExportLogMapper.getOverdueExportLog(fileValidDays); + //待删除的目录 + List userIds = batchExportLogs.stream().map(BatchExportLog::getCreateUserId) + .distinct().collect(Collectors.toList()); + //待删除的目录 + List ids = batchExportLogs.stream().map(BatchExportLog::getId) + .distinct().collect(Collectors.toList()); + //删除目录 + for (Long userId : userIds) { + String currentStampDir = filePath + userId + File.separator; + File invalidFile = new File(currentStampDir); + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + deleteFile(invalidFile, currentStampDir); + } + } + //删除日志 + this.deleteBatchIds(ids); + } + @Override public void convert84() { EntityWrapper query = new EntityWrapper<>(); @@ -168,9 +193,8 @@ appDeviceAdds.forEach(appDeviceAdd -> { appDeviceAdd.setWelltype(sluiceWellDictMap.get(appDeviceAdd.getWelltype())); }); - Long stampeDir = System.currentTimeMillis(); //以当前时间戳为目录 - String currentStampDir = filePath + stampeDir + File.separator; + String currentStampDir = filePath + currentUserId + File.separator; setLocalFileDir(currentStampDir); List batchExportLogsList = new ArrayList<>(); try { @@ -190,15 +214,18 @@ } }; executor.submit(task); - batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(stampeDir))); + batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(currentStampDir))); } while (true) { Long activeCount = ((ThreadPoolExecutor) executor).getTaskCount() - ((ThreadPoolExecutor) executor).getCompletedTaskCount(); if (activeCount == 0) { + //只删除自己的 + EntityWrapper query = new EntityWrapper(); + query.eq("create_user_id", currentUserId); //删除所有的文件日志 - this.batchExportLogMapper.delete(null); + this.batchExportLogMapper.delete(query); //删除所有历史文件 - deleteFile(new File(filePath), String.valueOf(stampeDir)); + deleteFile(new File(currentStampDir), String.valueOf(currentStampDir)); //批量导入日志 batchExportLogsList.stream().forEach( batchExportLog -> this.batchExportLogMapper.insert(batchExportLog) @@ -207,7 +234,7 @@ List userList = new ArrayList<>(); userList.add(String.valueOf(currentUserId)); Map map = new HashMap(); - map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(stampeDir)) + "的文件导出已经生成了,请到导出列表页面查看"); + map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "的文件导出已经生成了,请到导出列表页面查看"); map.put("type", "alarm"); webSocket.sendListMessage(userList, JSON.toJSONString(map)); break; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java index 02c4fb2..3c2b715 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.app.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.app.dao.AppUserMapper; import com.casic.missiles.modular.app.dao.AppUserOpenidMapper; import com.casic.missiles.modular.app.model.AppUserOpenid; import com.casic.missiles.modular.app.service.IAppUserOpenidService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /** @@ -15,6 +18,16 @@ * @since 2020-05-24 */ @Service +@AllArgsConstructor public class AppUserOpenidServiceImpl extends ServiceImpl implements IAppUserOpenidService { + private final AppUserMapper appUserMapper; + + @Override + public Boolean isBindByOpenId(String openId) { + String phone =appUserMapper.getPhoneByOpenId(openId); + return StringUtils.isNotEmpty(phone); + } + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 4d84e2c..4cae735 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -44,7 +44,6 @@ @ExcelProperty("点位类型") @TableField(exist = false) - @NotBlank(message = "点位类型不能为空") private String wellTypeName; @ExcelProperty("位置信息") @@ -55,7 +54,6 @@ @TableField(exist = false) @ExcelProperty("所属项目") - @NotBlank(message = "所属项目不能为空") private String projectName; private Date createTime; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index a8921c5..8a5f81a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -33,6 +33,8 @@ String begTime, String endTime, String project, String installPerson); + void deleteExportFile(String fileValidDays); + void convert84(); void exportImageExcel(Map sluiceWellDictMap, diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java index 2f180c1..d008c8a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java @@ -13,4 +13,5 @@ */ public interface IAppUserOpenidService extends IService { + Boolean isBindByOpenId(String openId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0d9c990..2cafc39 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -20,6 +20,9 @@ Object update(AppUserSaveDTO appUserDTO); + Object resetPassword(AppUserSaveDTO appUserDTO); + + Object project(String openId); Object unbind(Long id); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java index 9804cae..68eb4aa 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java @@ -37,6 +37,7 @@ import java.util.*; import java.util.List; import java.util.concurrent.*; +import java.util.stream.Collectors; /** *

@@ -140,6 +141,30 @@ return this.selectList(query); } + //删除超期一天的日志 + @Override + public void deleteExportFile(String fileValidDays) { + //查询超出一天的文件,删除文件日志,删除文件 + List batchExportLogs = batchExportLogMapper.getOverdueExportLog(fileValidDays); + //待删除的目录 + List userIds = batchExportLogs.stream().map(BatchExportLog::getCreateUserId) + .distinct().collect(Collectors.toList()); + //待删除的目录 + List ids = batchExportLogs.stream().map(BatchExportLog::getId) + .distinct().collect(Collectors.toList()); + //删除目录 + for (Long userId : userIds) { + String currentStampDir = filePath + userId + File.separator; + File invalidFile = new File(currentStampDir); + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + deleteFile(invalidFile, currentStampDir); + } + } + //删除日志 + this.deleteBatchIds(ids); + } + @Override public void convert84() { EntityWrapper query = new EntityWrapper<>(); @@ -168,9 +193,8 @@ appDeviceAdds.forEach(appDeviceAdd -> { appDeviceAdd.setWelltype(sluiceWellDictMap.get(appDeviceAdd.getWelltype())); }); - Long stampeDir = System.currentTimeMillis(); //以当前时间戳为目录 - String currentStampDir = filePath + stampeDir + File.separator; + String currentStampDir = filePath + currentUserId + File.separator; setLocalFileDir(currentStampDir); List batchExportLogsList = new ArrayList<>(); try { @@ -190,15 +214,18 @@ } }; executor.submit(task); - batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(stampeDir))); + batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(currentStampDir))); } while (true) { Long activeCount = ((ThreadPoolExecutor) executor).getTaskCount() - ((ThreadPoolExecutor) executor).getCompletedTaskCount(); if (activeCount == 0) { + //只删除自己的 + EntityWrapper query = new EntityWrapper(); + query.eq("create_user_id", currentUserId); //删除所有的文件日志 - this.batchExportLogMapper.delete(null); + this.batchExportLogMapper.delete(query); //删除所有历史文件 - deleteFile(new File(filePath), String.valueOf(stampeDir)); + deleteFile(new File(currentStampDir), String.valueOf(currentStampDir)); //批量导入日志 batchExportLogsList.stream().forEach( batchExportLog -> this.batchExportLogMapper.insert(batchExportLog) @@ -207,7 +234,7 @@ List userList = new ArrayList<>(); userList.add(String.valueOf(currentUserId)); Map map = new HashMap(); - map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(stampeDir)) + "的文件导出已经生成了,请到导出列表页面查看"); + map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "的文件导出已经生成了,请到导出列表页面查看"); map.put("type", "alarm"); webSocket.sendListMessage(userList, JSON.toJSONString(map)); break; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java index 02c4fb2..3c2b715 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.app.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.app.dao.AppUserMapper; import com.casic.missiles.modular.app.dao.AppUserOpenidMapper; import com.casic.missiles.modular.app.model.AppUserOpenid; import com.casic.missiles.modular.app.service.IAppUserOpenidService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /** @@ -15,6 +18,16 @@ * @since 2020-05-24 */ @Service +@AllArgsConstructor public class AppUserOpenidServiceImpl extends ServiceImpl implements IAppUserOpenidService { + private final AppUserMapper appUserMapper; + + @Override + public Boolean isBindByOpenId(String openId) { + String phone =appUserMapper.getPhoneByOpenId(openId); + return StringUtils.isNotEmpty(phone); + } + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index d7c3308..352cdfc 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -32,8 +32,10 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Update; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; @@ -43,6 +45,10 @@ import java.util.function.Function; import java.util.stream.Collectors; +/** + * @author cz + * @date 2023-06-01 + */ @Slf4j @Service @AllArgsConstructor @@ -69,10 +75,11 @@ } @Override - public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { appUser.setStatus(ALREADY_BOUND); appUser.setAttr(appUserLoginDTO.getWeChatName()); appUser.setOpenId(appUserLoginDTO.getOpenId()); + appUser.setLabelLastTime(new Date()); int bindFlag = this.baseMapper.updateById(appUser); if (bindFlag > 0) { return ResponseData.success(); @@ -116,18 +123,33 @@ Assert.isFalse(accountNumber > 0, () -> { throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); }); + Boolean updateFlag = this.updateById(this.createUser(userDTO)); + if (updateFlag) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object resetPassword(AppUserSaveDTO appUserDTO) { + AppUser user = new AppUser(); try { - userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + user.setPassword(RSAUtils.decrypt(appUserDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); } catch (Exception var5) { log.error("密码解密异常", var5); return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); } - userDTO.setSalt(ShiroKit.getRandomSalt(5)); - userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); - this.updateById(this.createUser(userDTO)); - return ResponseData.success(); + user.setId(appUserDTO.getId()); + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + Boolean updateFlag=this.updateById(user); + if(updateFlag){ + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override public Object project(String openId) { EntityWrapper appUserWrapper = new EntityWrapper(); @@ -170,6 +192,10 @@ //准备校验参数 AppUserImportValid userValid = prepareUserValid(); List list = new ArrayList<>(); + if (userValid == null) { + list.add("用户获取校验参数出错"); + return list; + } if (!CollectionUtil.isEmpty(results)) { final Integer[] index = {0}; results.forEach(user -> { @@ -184,19 +210,24 @@ ); return; } - //手机号的格式、唯一性校验 - Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); - if (wellCodeIsExist) { - list.add("第" + index[0] + "行,手机号已经注册!"); - return; + if (userValid.getUserPhoneMap() != null) { + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } } + if (StringUtils.isEmpty(user.getPassword())) { + user.setPassword("111111"); + } //验证项目名称是否存在 String[] projectNames = user.getProjectNames().split(","); String projectIdIs = ""; for (String projectName : projectNames) { Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); - if (projectIdIsExist) { + if (!projectIdIsExist) { list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); return; } else { @@ -212,8 +243,8 @@ if (StringUtils.isNotEmpty(user.getRole())) { Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); if (roleIsExist) { - list.add("第" + index[0] + "行,角色类型错误,查询不到!"); - return; + //默认为普通角色 + user.setRole("2"); } else { user.setRole(userValid.getRoleMap().get(user.getRole())); } @@ -302,7 +333,7 @@ private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { EntityWrapper query = new EntityWrapper<>(); query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); - query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectIds", appUserListDTO.getProjectId()); query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); @@ -312,11 +343,17 @@ } private AppUserImportValid prepareUserValid() { - return AppUserImportValid.builder() - .projectNameMap(appWellPreService.getProjestNameMap()) - .roleMap(getDictRole()) - .userPhoneMap(getUserPhoneMap()) - .build(); + try { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } catch (Exception ex) { + //主要捕获项目和角色 + log.error("验证参数出错,异常信息为{}", ex); + } + return null; } /** @@ -335,10 +372,16 @@ //获取项目名称 private Map getUserPhoneMap() { List userPhoneList = this.baseMapper.getUserPhoneList(); - //由名称查询id - Map userPhoneMap = userPhoneList.stream().collect( - Collectors.toMap(Function.identity(), Function.identity())); - return userPhoneMap; + + if (!CollectionUtils.isEmpty(userPhoneList)) { + List userPhoneFilerList = userPhoneList.stream().filter(e -> StringUtils.isNotEmpty(e)).collect(Collectors.toList()); + //由名称查询id + Map userPhoneMap = userPhoneFilerList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } else { + return null; + } } /** diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 4d84e2c..4cae735 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -44,7 +44,6 @@ @ExcelProperty("点位类型") @TableField(exist = false) - @NotBlank(message = "点位类型不能为空") private String wellTypeName; @ExcelProperty("位置信息") @@ -55,7 +54,6 @@ @TableField(exist = false) @ExcelProperty("所属项目") - @NotBlank(message = "所属项目不能为空") private String projectName; private Date createTime; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index a8921c5..8a5f81a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -33,6 +33,8 @@ String begTime, String endTime, String project, String installPerson); + void deleteExportFile(String fileValidDays); + void convert84(); void exportImageExcel(Map sluiceWellDictMap, diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java index 2f180c1..d008c8a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java @@ -13,4 +13,5 @@ */ public interface IAppUserOpenidService extends IService { + Boolean isBindByOpenId(String openId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0d9c990..2cafc39 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -20,6 +20,9 @@ Object update(AppUserSaveDTO appUserDTO); + Object resetPassword(AppUserSaveDTO appUserDTO); + + Object project(String openId); Object unbind(Long id); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java index 9804cae..68eb4aa 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java @@ -37,6 +37,7 @@ import java.util.*; import java.util.List; import java.util.concurrent.*; +import java.util.stream.Collectors; /** *

@@ -140,6 +141,30 @@ return this.selectList(query); } + //删除超期一天的日志 + @Override + public void deleteExportFile(String fileValidDays) { + //查询超出一天的文件,删除文件日志,删除文件 + List batchExportLogs = batchExportLogMapper.getOverdueExportLog(fileValidDays); + //待删除的目录 + List userIds = batchExportLogs.stream().map(BatchExportLog::getCreateUserId) + .distinct().collect(Collectors.toList()); + //待删除的目录 + List ids = batchExportLogs.stream().map(BatchExportLog::getId) + .distinct().collect(Collectors.toList()); + //删除目录 + for (Long userId : userIds) { + String currentStampDir = filePath + userId + File.separator; + File invalidFile = new File(currentStampDir); + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + deleteFile(invalidFile, currentStampDir); + } + } + //删除日志 + this.deleteBatchIds(ids); + } + @Override public void convert84() { EntityWrapper query = new EntityWrapper<>(); @@ -168,9 +193,8 @@ appDeviceAdds.forEach(appDeviceAdd -> { appDeviceAdd.setWelltype(sluiceWellDictMap.get(appDeviceAdd.getWelltype())); }); - Long stampeDir = System.currentTimeMillis(); //以当前时间戳为目录 - String currentStampDir = filePath + stampeDir + File.separator; + String currentStampDir = filePath + currentUserId + File.separator; setLocalFileDir(currentStampDir); List batchExportLogsList = new ArrayList<>(); try { @@ -190,15 +214,18 @@ } }; executor.submit(task); - batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(stampeDir))); + batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(currentStampDir))); } while (true) { Long activeCount = ((ThreadPoolExecutor) executor).getTaskCount() - ((ThreadPoolExecutor) executor).getCompletedTaskCount(); if (activeCount == 0) { + //只删除自己的 + EntityWrapper query = new EntityWrapper(); + query.eq("create_user_id", currentUserId); //删除所有的文件日志 - this.batchExportLogMapper.delete(null); + this.batchExportLogMapper.delete(query); //删除所有历史文件 - deleteFile(new File(filePath), String.valueOf(stampeDir)); + deleteFile(new File(currentStampDir), String.valueOf(currentStampDir)); //批量导入日志 batchExportLogsList.stream().forEach( batchExportLog -> this.batchExportLogMapper.insert(batchExportLog) @@ -207,7 +234,7 @@ List userList = new ArrayList<>(); userList.add(String.valueOf(currentUserId)); Map map = new HashMap(); - map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(stampeDir)) + "的文件导出已经生成了,请到导出列表页面查看"); + map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "的文件导出已经生成了,请到导出列表页面查看"); map.put("type", "alarm"); webSocket.sendListMessage(userList, JSON.toJSONString(map)); break; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java index 02c4fb2..3c2b715 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.app.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.app.dao.AppUserMapper; import com.casic.missiles.modular.app.dao.AppUserOpenidMapper; import com.casic.missiles.modular.app.model.AppUserOpenid; import com.casic.missiles.modular.app.service.IAppUserOpenidService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /** @@ -15,6 +18,16 @@ * @since 2020-05-24 */ @Service +@AllArgsConstructor public class AppUserOpenidServiceImpl extends ServiceImpl implements IAppUserOpenidService { + private final AppUserMapper appUserMapper; + + @Override + public Boolean isBindByOpenId(String openId) { + String phone =appUserMapper.getPhoneByOpenId(openId); + return StringUtils.isNotEmpty(phone); + } + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index d7c3308..352cdfc 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -32,8 +32,10 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Update; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; @@ -43,6 +45,10 @@ import java.util.function.Function; import java.util.stream.Collectors; +/** + * @author cz + * @date 2023-06-01 + */ @Slf4j @Service @AllArgsConstructor @@ -69,10 +75,11 @@ } @Override - public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { appUser.setStatus(ALREADY_BOUND); appUser.setAttr(appUserLoginDTO.getWeChatName()); appUser.setOpenId(appUserLoginDTO.getOpenId()); + appUser.setLabelLastTime(new Date()); int bindFlag = this.baseMapper.updateById(appUser); if (bindFlag > 0) { return ResponseData.success(); @@ -116,18 +123,33 @@ Assert.isFalse(accountNumber > 0, () -> { throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); }); + Boolean updateFlag = this.updateById(this.createUser(userDTO)); + if (updateFlag) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object resetPassword(AppUserSaveDTO appUserDTO) { + AppUser user = new AppUser(); try { - userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + user.setPassword(RSAUtils.decrypt(appUserDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); } catch (Exception var5) { log.error("密码解密异常", var5); return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); } - userDTO.setSalt(ShiroKit.getRandomSalt(5)); - userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); - this.updateById(this.createUser(userDTO)); - return ResponseData.success(); + user.setId(appUserDTO.getId()); + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + Boolean updateFlag=this.updateById(user); + if(updateFlag){ + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override public Object project(String openId) { EntityWrapper appUserWrapper = new EntityWrapper(); @@ -170,6 +192,10 @@ //准备校验参数 AppUserImportValid userValid = prepareUserValid(); List list = new ArrayList<>(); + if (userValid == null) { + list.add("用户获取校验参数出错"); + return list; + } if (!CollectionUtil.isEmpty(results)) { final Integer[] index = {0}; results.forEach(user -> { @@ -184,19 +210,24 @@ ); return; } - //手机号的格式、唯一性校验 - Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); - if (wellCodeIsExist) { - list.add("第" + index[0] + "行,手机号已经注册!"); - return; + if (userValid.getUserPhoneMap() != null) { + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } } + if (StringUtils.isEmpty(user.getPassword())) { + user.setPassword("111111"); + } //验证项目名称是否存在 String[] projectNames = user.getProjectNames().split(","); String projectIdIs = ""; for (String projectName : projectNames) { Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); - if (projectIdIsExist) { + if (!projectIdIsExist) { list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); return; } else { @@ -212,8 +243,8 @@ if (StringUtils.isNotEmpty(user.getRole())) { Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); if (roleIsExist) { - list.add("第" + index[0] + "行,角色类型错误,查询不到!"); - return; + //默认为普通角色 + user.setRole("2"); } else { user.setRole(userValid.getRoleMap().get(user.getRole())); } @@ -302,7 +333,7 @@ private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { EntityWrapper query = new EntityWrapper<>(); query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); - query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectIds", appUserListDTO.getProjectId()); query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); @@ -312,11 +343,17 @@ } private AppUserImportValid prepareUserValid() { - return AppUserImportValid.builder() - .projectNameMap(appWellPreService.getProjestNameMap()) - .roleMap(getDictRole()) - .userPhoneMap(getUserPhoneMap()) - .build(); + try { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } catch (Exception ex) { + //主要捕获项目和角色 + log.error("验证参数出错,异常信息为{}", ex); + } + return null; } /** @@ -335,10 +372,16 @@ //获取项目名称 private Map getUserPhoneMap() { List userPhoneList = this.baseMapper.getUserPhoneList(); - //由名称查询id - Map userPhoneMap = userPhoneList.stream().collect( - Collectors.toMap(Function.identity(), Function.identity())); - return userPhoneMap; + + if (!CollectionUtils.isEmpty(userPhoneList)) { + List userPhoneFilerList = userPhoneList.stream().filter(e -> StringUtils.isNotEmpty(e)).collect(Collectors.toList()); + //由名称查询id + Map userPhoneMap = userPhoneFilerList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } else { + return null; + } } /** diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 68a15cc..63a7aab 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -15,6 +15,7 @@ import com.casic.missiles.modular.system.dao.DictMapper; import com.casic.missiles.modular.system.model.Dict; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.validation.BeanPropertyBindingResult; @@ -25,6 +26,7 @@ import java.util.function.Function; import java.util.stream.Collectors; +@Slf4j @Service @AllArgsConstructor public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { @@ -37,7 +39,7 @@ EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); Map projestMaps = getProjestIdMap(); - Map dictWellTypeMap =getDictWellType(); + Map dictWellTypeMap = getDictWellType(); for (WellPreAdd wellPreAdd : wellPreAddList) { if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); @@ -69,9 +71,13 @@ @Override public List addWellPreBatch(List results) { BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + List list = new ArrayList<>(); //准备校验参数 WellPreImportValid wellPreValid = prepareWellPreValid(); - List list = new ArrayList<>(); + if(wellPreValid==null){ + list.add("获取校验参数出错"); + return list; + } if (!CollectionUtil.isEmpty(results)) { final Integer[] index = {0}; results.forEach(wellPreAdd -> { @@ -94,7 +100,7 @@ } //验证项目名称是否存在 Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); - if (projectIdIsExist) { + if (!projectIdIsExist) { list.add("第" + index[0] + "行,项目名称错误,查询不到!"); return; } else { @@ -143,7 +149,7 @@ public Object delete(Long id) { int deleteFlag = this.baseMapper.deleteById(id); if (deleteFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @@ -165,11 +171,16 @@ * 预录入初始化的内容都放在该方法进行批量初始化 */ private WellPreImportValid prepareWellPreValid() { - return WellPreImportValid.builder() - .projectMap(getProjestNameMap()) - .wellCodeMap(getAllWellCodeMap(null)) - .dictSuiltWellMap(getDictSluitWell()) - .build(); + try { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllWellCodeMap(null)) + .dictSuiltWellMap(getDictSluitWell()) + .build(); + }catch (Exception ex){ + log.error("验证准备阶段出现异常,异常信息为{}",ex); + } + return null; } /** @@ -186,9 +197,11 @@ //获取点位编号 private Map getAllWellCodeMap(Long updateId) { + List allWellPreList = this.baseMapper.getAllWellPreList(updateId); Map wellCodeMap = allWellPreList.stream().collect( Collectors.toMap(Function.identity(), Function.identity(), (e1, e2) -> e1) + ); return wellCodeMap; } @@ -197,8 +210,9 @@ @Override public Map getProjestNameMap() { List> projects = this.baseMapper.getProjectList(); + List> projectFilters=projects.stream().filter(e->e.get("projectName")!=null).collect(Collectors.toList()); //由名称查询id - Map projectMap = projects.stream().collect( + Map projectMap = projectFilters.stream().collect( Collectors.toMap(e -> e.get("projectName").toString(), e -> e.get("projectId").toString(), (e1, e2) -> e1) ); @@ -211,7 +225,7 @@ List> projects = this.baseMapper.getProjectList(); Map projectMaps = projects.stream().collect( Collectors.toMap(e -> String.valueOf(e.get("projectId")), - e -> String.valueOf(e.get("projectName")),(e1,e2)->e1) + e -> String.valueOf(e.get("projectName")), (e1, e2) -> e1) ); return projectMaps; } @@ -223,7 +237,7 @@ //获取点位编号 List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); Map dictRoleMap = suilWellDict.stream().collect( - Collectors.toMap( Dict::getCode,Dict::getName) + Collectors.toMap(Dict::getCode, Dict::getName) ); return dictRoleMap; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 4d84e2c..4cae735 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -44,7 +44,6 @@ @ExcelProperty("点位类型") @TableField(exist = false) - @NotBlank(message = "点位类型不能为空") private String wellTypeName; @ExcelProperty("位置信息") @@ -55,7 +54,6 @@ @TableField(exist = false) @ExcelProperty("所属项目") - @NotBlank(message = "所属项目不能为空") private String projectName; private Date createTime; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index a8921c5..8a5f81a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -33,6 +33,8 @@ String begTime, String endTime, String project, String installPerson); + void deleteExportFile(String fileValidDays); + void convert84(); void exportImageExcel(Map sluiceWellDictMap, diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java index 2f180c1..d008c8a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java @@ -13,4 +13,5 @@ */ public interface IAppUserOpenidService extends IService { + Boolean isBindByOpenId(String openId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0d9c990..2cafc39 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -20,6 +20,9 @@ Object update(AppUserSaveDTO appUserDTO); + Object resetPassword(AppUserSaveDTO appUserDTO); + + Object project(String openId); Object unbind(Long id); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java index 9804cae..68eb4aa 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java @@ -37,6 +37,7 @@ import java.util.*; import java.util.List; import java.util.concurrent.*; +import java.util.stream.Collectors; /** *

@@ -140,6 +141,30 @@ return this.selectList(query); } + //删除超期一天的日志 + @Override + public void deleteExportFile(String fileValidDays) { + //查询超出一天的文件,删除文件日志,删除文件 + List batchExportLogs = batchExportLogMapper.getOverdueExportLog(fileValidDays); + //待删除的目录 + List userIds = batchExportLogs.stream().map(BatchExportLog::getCreateUserId) + .distinct().collect(Collectors.toList()); + //待删除的目录 + List ids = batchExportLogs.stream().map(BatchExportLog::getId) + .distinct().collect(Collectors.toList()); + //删除目录 + for (Long userId : userIds) { + String currentStampDir = filePath + userId + File.separator; + File invalidFile = new File(currentStampDir); + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + deleteFile(invalidFile, currentStampDir); + } + } + //删除日志 + this.deleteBatchIds(ids); + } + @Override public void convert84() { EntityWrapper query = new EntityWrapper<>(); @@ -168,9 +193,8 @@ appDeviceAdds.forEach(appDeviceAdd -> { appDeviceAdd.setWelltype(sluiceWellDictMap.get(appDeviceAdd.getWelltype())); }); - Long stampeDir = System.currentTimeMillis(); //以当前时间戳为目录 - String currentStampDir = filePath + stampeDir + File.separator; + String currentStampDir = filePath + currentUserId + File.separator; setLocalFileDir(currentStampDir); List batchExportLogsList = new ArrayList<>(); try { @@ -190,15 +214,18 @@ } }; executor.submit(task); - batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(stampeDir))); + batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(currentStampDir))); } while (true) { Long activeCount = ((ThreadPoolExecutor) executor).getTaskCount() - ((ThreadPoolExecutor) executor).getCompletedTaskCount(); if (activeCount == 0) { + //只删除自己的 + EntityWrapper query = new EntityWrapper(); + query.eq("create_user_id", currentUserId); //删除所有的文件日志 - this.batchExportLogMapper.delete(null); + this.batchExportLogMapper.delete(query); //删除所有历史文件 - deleteFile(new File(filePath), String.valueOf(stampeDir)); + deleteFile(new File(currentStampDir), String.valueOf(currentStampDir)); //批量导入日志 batchExportLogsList.stream().forEach( batchExportLog -> this.batchExportLogMapper.insert(batchExportLog) @@ -207,7 +234,7 @@ List userList = new ArrayList<>(); userList.add(String.valueOf(currentUserId)); Map map = new HashMap(); - map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(stampeDir)) + "的文件导出已经生成了,请到导出列表页面查看"); + map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "的文件导出已经生成了,请到导出列表页面查看"); map.put("type", "alarm"); webSocket.sendListMessage(userList, JSON.toJSONString(map)); break; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java index 02c4fb2..3c2b715 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.app.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.app.dao.AppUserMapper; import com.casic.missiles.modular.app.dao.AppUserOpenidMapper; import com.casic.missiles.modular.app.model.AppUserOpenid; import com.casic.missiles.modular.app.service.IAppUserOpenidService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /** @@ -15,6 +18,16 @@ * @since 2020-05-24 */ @Service +@AllArgsConstructor public class AppUserOpenidServiceImpl extends ServiceImpl implements IAppUserOpenidService { + private final AppUserMapper appUserMapper; + + @Override + public Boolean isBindByOpenId(String openId) { + String phone =appUserMapper.getPhoneByOpenId(openId); + return StringUtils.isNotEmpty(phone); + } + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index d7c3308..352cdfc 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -32,8 +32,10 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Update; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; @@ -43,6 +45,10 @@ import java.util.function.Function; import java.util.stream.Collectors; +/** + * @author cz + * @date 2023-06-01 + */ @Slf4j @Service @AllArgsConstructor @@ -69,10 +75,11 @@ } @Override - public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { appUser.setStatus(ALREADY_BOUND); appUser.setAttr(appUserLoginDTO.getWeChatName()); appUser.setOpenId(appUserLoginDTO.getOpenId()); + appUser.setLabelLastTime(new Date()); int bindFlag = this.baseMapper.updateById(appUser); if (bindFlag > 0) { return ResponseData.success(); @@ -116,18 +123,33 @@ Assert.isFalse(accountNumber > 0, () -> { throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); }); + Boolean updateFlag = this.updateById(this.createUser(userDTO)); + if (updateFlag) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object resetPassword(AppUserSaveDTO appUserDTO) { + AppUser user = new AppUser(); try { - userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + user.setPassword(RSAUtils.decrypt(appUserDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); } catch (Exception var5) { log.error("密码解密异常", var5); return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); } - userDTO.setSalt(ShiroKit.getRandomSalt(5)); - userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); - this.updateById(this.createUser(userDTO)); - return ResponseData.success(); + user.setId(appUserDTO.getId()); + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + Boolean updateFlag=this.updateById(user); + if(updateFlag){ + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override public Object project(String openId) { EntityWrapper appUserWrapper = new EntityWrapper(); @@ -170,6 +192,10 @@ //准备校验参数 AppUserImportValid userValid = prepareUserValid(); List list = new ArrayList<>(); + if (userValid == null) { + list.add("用户获取校验参数出错"); + return list; + } if (!CollectionUtil.isEmpty(results)) { final Integer[] index = {0}; results.forEach(user -> { @@ -184,19 +210,24 @@ ); return; } - //手机号的格式、唯一性校验 - Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); - if (wellCodeIsExist) { - list.add("第" + index[0] + "行,手机号已经注册!"); - return; + if (userValid.getUserPhoneMap() != null) { + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } } + if (StringUtils.isEmpty(user.getPassword())) { + user.setPassword("111111"); + } //验证项目名称是否存在 String[] projectNames = user.getProjectNames().split(","); String projectIdIs = ""; for (String projectName : projectNames) { Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); - if (projectIdIsExist) { + if (!projectIdIsExist) { list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); return; } else { @@ -212,8 +243,8 @@ if (StringUtils.isNotEmpty(user.getRole())) { Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); if (roleIsExist) { - list.add("第" + index[0] + "行,角色类型错误,查询不到!"); - return; + //默认为普通角色 + user.setRole("2"); } else { user.setRole(userValid.getRoleMap().get(user.getRole())); } @@ -302,7 +333,7 @@ private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { EntityWrapper query = new EntityWrapper<>(); query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); - query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectIds", appUserListDTO.getProjectId()); query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); @@ -312,11 +343,17 @@ } private AppUserImportValid prepareUserValid() { - return AppUserImportValid.builder() - .projectNameMap(appWellPreService.getProjestNameMap()) - .roleMap(getDictRole()) - .userPhoneMap(getUserPhoneMap()) - .build(); + try { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } catch (Exception ex) { + //主要捕获项目和角色 + log.error("验证参数出错,异常信息为{}", ex); + } + return null; } /** @@ -335,10 +372,16 @@ //获取项目名称 private Map getUserPhoneMap() { List userPhoneList = this.baseMapper.getUserPhoneList(); - //由名称查询id - Map userPhoneMap = userPhoneList.stream().collect( - Collectors.toMap(Function.identity(), Function.identity())); - return userPhoneMap; + + if (!CollectionUtils.isEmpty(userPhoneList)) { + List userPhoneFilerList = userPhoneList.stream().filter(e -> StringUtils.isNotEmpty(e)).collect(Collectors.toList()); + //由名称查询id + Map userPhoneMap = userPhoneFilerList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } else { + return null; + } } /** diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 68a15cc..63a7aab 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -15,6 +15,7 @@ import com.casic.missiles.modular.system.dao.DictMapper; import com.casic.missiles.modular.system.model.Dict; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.validation.BeanPropertyBindingResult; @@ -25,6 +26,7 @@ import java.util.function.Function; import java.util.stream.Collectors; +@Slf4j @Service @AllArgsConstructor public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { @@ -37,7 +39,7 @@ EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); Map projestMaps = getProjestIdMap(); - Map dictWellTypeMap =getDictWellType(); + Map dictWellTypeMap = getDictWellType(); for (WellPreAdd wellPreAdd : wellPreAddList) { if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); @@ -69,9 +71,13 @@ @Override public List addWellPreBatch(List results) { BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + List list = new ArrayList<>(); //准备校验参数 WellPreImportValid wellPreValid = prepareWellPreValid(); - List list = new ArrayList<>(); + if(wellPreValid==null){ + list.add("获取校验参数出错"); + return list; + } if (!CollectionUtil.isEmpty(results)) { final Integer[] index = {0}; results.forEach(wellPreAdd -> { @@ -94,7 +100,7 @@ } //验证项目名称是否存在 Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); - if (projectIdIsExist) { + if (!projectIdIsExist) { list.add("第" + index[0] + "行,项目名称错误,查询不到!"); return; } else { @@ -143,7 +149,7 @@ public Object delete(Long id) { int deleteFlag = this.baseMapper.deleteById(id); if (deleteFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @@ -165,11 +171,16 @@ * 预录入初始化的内容都放在该方法进行批量初始化 */ private WellPreImportValid prepareWellPreValid() { - return WellPreImportValid.builder() - .projectMap(getProjestNameMap()) - .wellCodeMap(getAllWellCodeMap(null)) - .dictSuiltWellMap(getDictSluitWell()) - .build(); + try { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllWellCodeMap(null)) + .dictSuiltWellMap(getDictSluitWell()) + .build(); + }catch (Exception ex){ + log.error("验证准备阶段出现异常,异常信息为{}",ex); + } + return null; } /** @@ -186,9 +197,11 @@ //获取点位编号 private Map getAllWellCodeMap(Long updateId) { + List allWellPreList = this.baseMapper.getAllWellPreList(updateId); Map wellCodeMap = allWellPreList.stream().collect( Collectors.toMap(Function.identity(), Function.identity(), (e1, e2) -> e1) + ); return wellCodeMap; } @@ -197,8 +210,9 @@ @Override public Map getProjestNameMap() { List> projects = this.baseMapper.getProjectList(); + List> projectFilters=projects.stream().filter(e->e.get("projectName")!=null).collect(Collectors.toList()); //由名称查询id - Map projectMap = projects.stream().collect( + Map projectMap = projectFilters.stream().collect( Collectors.toMap(e -> e.get("projectName").toString(), e -> e.get("projectId").toString(), (e1, e2) -> e1) ); @@ -211,7 +225,7 @@ List> projects = this.baseMapper.getProjectList(); Map projectMaps = projects.stream().collect( Collectors.toMap(e -> String.valueOf(e.get("projectId")), - e -> String.valueOf(e.get("projectName")),(e1,e2)->e1) + e -> String.valueOf(e.get("projectName")), (e1, e2) -> e1) ); return projectMaps; } @@ -223,7 +237,7 @@ //获取点位编号 List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); Map dictRoleMap = suilWellDict.stream().collect( - Collectors.toMap( Dict::getCode,Dict::getName) + Collectors.toMap(Dict::getCode, Dict::getName) ); return dictRoleMap; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml index e0dd825..af74eb1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml @@ -51,7 +51,6 @@ - + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 4d84e2c..4cae735 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -44,7 +44,6 @@ @ExcelProperty("点位类型") @TableField(exist = false) - @NotBlank(message = "点位类型不能为空") private String wellTypeName; @ExcelProperty("位置信息") @@ -55,7 +54,6 @@ @TableField(exist = false) @ExcelProperty("所属项目") - @NotBlank(message = "所属项目不能为空") private String projectName; private Date createTime; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index a8921c5..8a5f81a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -33,6 +33,8 @@ String begTime, String endTime, String project, String installPerson); + void deleteExportFile(String fileValidDays); + void convert84(); void exportImageExcel(Map sluiceWellDictMap, diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java index 2f180c1..d008c8a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java @@ -13,4 +13,5 @@ */ public interface IAppUserOpenidService extends IService { + Boolean isBindByOpenId(String openId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0d9c990..2cafc39 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -20,6 +20,9 @@ Object update(AppUserSaveDTO appUserDTO); + Object resetPassword(AppUserSaveDTO appUserDTO); + + Object project(String openId); Object unbind(Long id); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java index 9804cae..68eb4aa 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java @@ -37,6 +37,7 @@ import java.util.*; import java.util.List; import java.util.concurrent.*; +import java.util.stream.Collectors; /** *

@@ -140,6 +141,30 @@ return this.selectList(query); } + //删除超期一天的日志 + @Override + public void deleteExportFile(String fileValidDays) { + //查询超出一天的文件,删除文件日志,删除文件 + List batchExportLogs = batchExportLogMapper.getOverdueExportLog(fileValidDays); + //待删除的目录 + List userIds = batchExportLogs.stream().map(BatchExportLog::getCreateUserId) + .distinct().collect(Collectors.toList()); + //待删除的目录 + List ids = batchExportLogs.stream().map(BatchExportLog::getId) + .distinct().collect(Collectors.toList()); + //删除目录 + for (Long userId : userIds) { + String currentStampDir = filePath + userId + File.separator; + File invalidFile = new File(currentStampDir); + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + deleteFile(invalidFile, currentStampDir); + } + } + //删除日志 + this.deleteBatchIds(ids); + } + @Override public void convert84() { EntityWrapper query = new EntityWrapper<>(); @@ -168,9 +193,8 @@ appDeviceAdds.forEach(appDeviceAdd -> { appDeviceAdd.setWelltype(sluiceWellDictMap.get(appDeviceAdd.getWelltype())); }); - Long stampeDir = System.currentTimeMillis(); //以当前时间戳为目录 - String currentStampDir = filePath + stampeDir + File.separator; + String currentStampDir = filePath + currentUserId + File.separator; setLocalFileDir(currentStampDir); List batchExportLogsList = new ArrayList<>(); try { @@ -190,15 +214,18 @@ } }; executor.submit(task); - batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(stampeDir))); + batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(currentStampDir))); } while (true) { Long activeCount = ((ThreadPoolExecutor) executor).getTaskCount() - ((ThreadPoolExecutor) executor).getCompletedTaskCount(); if (activeCount == 0) { + //只删除自己的 + EntityWrapper query = new EntityWrapper(); + query.eq("create_user_id", currentUserId); //删除所有的文件日志 - this.batchExportLogMapper.delete(null); + this.batchExportLogMapper.delete(query); //删除所有历史文件 - deleteFile(new File(filePath), String.valueOf(stampeDir)); + deleteFile(new File(currentStampDir), String.valueOf(currentStampDir)); //批量导入日志 batchExportLogsList.stream().forEach( batchExportLog -> this.batchExportLogMapper.insert(batchExportLog) @@ -207,7 +234,7 @@ List userList = new ArrayList<>(); userList.add(String.valueOf(currentUserId)); Map map = new HashMap(); - map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(stampeDir)) + "的文件导出已经生成了,请到导出列表页面查看"); + map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "的文件导出已经生成了,请到导出列表页面查看"); map.put("type", "alarm"); webSocket.sendListMessage(userList, JSON.toJSONString(map)); break; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java index 02c4fb2..3c2b715 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.app.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.app.dao.AppUserMapper; import com.casic.missiles.modular.app.dao.AppUserOpenidMapper; import com.casic.missiles.modular.app.model.AppUserOpenid; import com.casic.missiles.modular.app.service.IAppUserOpenidService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /** @@ -15,6 +18,16 @@ * @since 2020-05-24 */ @Service +@AllArgsConstructor public class AppUserOpenidServiceImpl extends ServiceImpl implements IAppUserOpenidService { + private final AppUserMapper appUserMapper; + + @Override + public Boolean isBindByOpenId(String openId) { + String phone =appUserMapper.getPhoneByOpenId(openId); + return StringUtils.isNotEmpty(phone); + } + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index d7c3308..352cdfc 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -32,8 +32,10 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Update; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; @@ -43,6 +45,10 @@ import java.util.function.Function; import java.util.stream.Collectors; +/** + * @author cz + * @date 2023-06-01 + */ @Slf4j @Service @AllArgsConstructor @@ -69,10 +75,11 @@ } @Override - public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { appUser.setStatus(ALREADY_BOUND); appUser.setAttr(appUserLoginDTO.getWeChatName()); appUser.setOpenId(appUserLoginDTO.getOpenId()); + appUser.setLabelLastTime(new Date()); int bindFlag = this.baseMapper.updateById(appUser); if (bindFlag > 0) { return ResponseData.success(); @@ -116,18 +123,33 @@ Assert.isFalse(accountNumber > 0, () -> { throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); }); + Boolean updateFlag = this.updateById(this.createUser(userDTO)); + if (updateFlag) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object resetPassword(AppUserSaveDTO appUserDTO) { + AppUser user = new AppUser(); try { - userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + user.setPassword(RSAUtils.decrypt(appUserDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); } catch (Exception var5) { log.error("密码解密异常", var5); return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); } - userDTO.setSalt(ShiroKit.getRandomSalt(5)); - userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); - this.updateById(this.createUser(userDTO)); - return ResponseData.success(); + user.setId(appUserDTO.getId()); + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + Boolean updateFlag=this.updateById(user); + if(updateFlag){ + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override public Object project(String openId) { EntityWrapper appUserWrapper = new EntityWrapper(); @@ -170,6 +192,10 @@ //准备校验参数 AppUserImportValid userValid = prepareUserValid(); List list = new ArrayList<>(); + if (userValid == null) { + list.add("用户获取校验参数出错"); + return list; + } if (!CollectionUtil.isEmpty(results)) { final Integer[] index = {0}; results.forEach(user -> { @@ -184,19 +210,24 @@ ); return; } - //手机号的格式、唯一性校验 - Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); - if (wellCodeIsExist) { - list.add("第" + index[0] + "行,手机号已经注册!"); - return; + if (userValid.getUserPhoneMap() != null) { + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } } + if (StringUtils.isEmpty(user.getPassword())) { + user.setPassword("111111"); + } //验证项目名称是否存在 String[] projectNames = user.getProjectNames().split(","); String projectIdIs = ""; for (String projectName : projectNames) { Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); - if (projectIdIsExist) { + if (!projectIdIsExist) { list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); return; } else { @@ -212,8 +243,8 @@ if (StringUtils.isNotEmpty(user.getRole())) { Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); if (roleIsExist) { - list.add("第" + index[0] + "行,角色类型错误,查询不到!"); - return; + //默认为普通角色 + user.setRole("2"); } else { user.setRole(userValid.getRoleMap().get(user.getRole())); } @@ -302,7 +333,7 @@ private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { EntityWrapper query = new EntityWrapper<>(); query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); - query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectIds", appUserListDTO.getProjectId()); query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); @@ -312,11 +343,17 @@ } private AppUserImportValid prepareUserValid() { - return AppUserImportValid.builder() - .projectNameMap(appWellPreService.getProjestNameMap()) - .roleMap(getDictRole()) - .userPhoneMap(getUserPhoneMap()) - .build(); + try { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } catch (Exception ex) { + //主要捕获项目和角色 + log.error("验证参数出错,异常信息为{}", ex); + } + return null; } /** @@ -335,10 +372,16 @@ //获取项目名称 private Map getUserPhoneMap() { List userPhoneList = this.baseMapper.getUserPhoneList(); - //由名称查询id - Map userPhoneMap = userPhoneList.stream().collect( - Collectors.toMap(Function.identity(), Function.identity())); - return userPhoneMap; + + if (!CollectionUtils.isEmpty(userPhoneList)) { + List userPhoneFilerList = userPhoneList.stream().filter(e -> StringUtils.isNotEmpty(e)).collect(Collectors.toList()); + //由名称查询id + Map userPhoneMap = userPhoneFilerList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } else { + return null; + } } /** diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 68a15cc..63a7aab 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -15,6 +15,7 @@ import com.casic.missiles.modular.system.dao.DictMapper; import com.casic.missiles.modular.system.model.Dict; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.validation.BeanPropertyBindingResult; @@ -25,6 +26,7 @@ import java.util.function.Function; import java.util.stream.Collectors; +@Slf4j @Service @AllArgsConstructor public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { @@ -37,7 +39,7 @@ EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); Map projestMaps = getProjestIdMap(); - Map dictWellTypeMap =getDictWellType(); + Map dictWellTypeMap = getDictWellType(); for (WellPreAdd wellPreAdd : wellPreAddList) { if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); @@ -69,9 +71,13 @@ @Override public List addWellPreBatch(List results) { BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + List list = new ArrayList<>(); //准备校验参数 WellPreImportValid wellPreValid = prepareWellPreValid(); - List list = new ArrayList<>(); + if(wellPreValid==null){ + list.add("获取校验参数出错"); + return list; + } if (!CollectionUtil.isEmpty(results)) { final Integer[] index = {0}; results.forEach(wellPreAdd -> { @@ -94,7 +100,7 @@ } //验证项目名称是否存在 Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); - if (projectIdIsExist) { + if (!projectIdIsExist) { list.add("第" + index[0] + "行,项目名称错误,查询不到!"); return; } else { @@ -143,7 +149,7 @@ public Object delete(Long id) { int deleteFlag = this.baseMapper.deleteById(id); if (deleteFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @@ -165,11 +171,16 @@ * 预录入初始化的内容都放在该方法进行批量初始化 */ private WellPreImportValid prepareWellPreValid() { - return WellPreImportValid.builder() - .projectMap(getProjestNameMap()) - .wellCodeMap(getAllWellCodeMap(null)) - .dictSuiltWellMap(getDictSluitWell()) - .build(); + try { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllWellCodeMap(null)) + .dictSuiltWellMap(getDictSluitWell()) + .build(); + }catch (Exception ex){ + log.error("验证准备阶段出现异常,异常信息为{}",ex); + } + return null; } /** @@ -186,9 +197,11 @@ //获取点位编号 private Map getAllWellCodeMap(Long updateId) { + List allWellPreList = this.baseMapper.getAllWellPreList(updateId); Map wellCodeMap = allWellPreList.stream().collect( Collectors.toMap(Function.identity(), Function.identity(), (e1, e2) -> e1) + ); return wellCodeMap; } @@ -197,8 +210,9 @@ @Override public Map getProjestNameMap() { List> projects = this.baseMapper.getProjectList(); + List> projectFilters=projects.stream().filter(e->e.get("projectName")!=null).collect(Collectors.toList()); //由名称查询id - Map projectMap = projects.stream().collect( + Map projectMap = projectFilters.stream().collect( Collectors.toMap(e -> e.get("projectName").toString(), e -> e.get("projectId").toString(), (e1, e2) -> e1) ); @@ -211,7 +225,7 @@ List> projects = this.baseMapper.getProjectList(); Map projectMaps = projects.stream().collect( Collectors.toMap(e -> String.valueOf(e.get("projectId")), - e -> String.valueOf(e.get("projectName")),(e1,e2)->e1) + e -> String.valueOf(e.get("projectName")), (e1, e2) -> e1) ); return projectMaps; } @@ -223,7 +237,7 @@ //获取点位编号 List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); Map dictRoleMap = suilWellDict.stream().collect( - Collectors.toMap( Dict::getCode,Dict::getName) + Collectors.toMap(Dict::getCode, Dict::getName) ); return dictRoleMap; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml index e0dd825..af74eb1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml @@ -51,7 +51,6 @@ - + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java index 2ed3a2d..1b7cafd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java @@ -50,7 +50,7 @@ project.setProjectStatus(NOT_EXCUTE); //小于结束时间为空判断为正在执行 }else if(ObjectUtils.isEmpty(project.getProjectEndTime()) || - project.getProjectEndTime().compareTo(new Date())<0){ + project.getProjectEndTime().compareTo(new Date())>0){ project.setProjectStatus(EXCUTEING); }else { project.setProjectStatus(HAS_EXCUTE); @@ -81,14 +81,14 @@ EntityWrapper query = new EntityWrapper<>(); query.like("project_name", projectName); if (!StringUtils.isEmpty(projectStatus) && !"0".equals(projectStatus)) { - if (NOT_EXCUTE.equals(projectStatus)) { - query.andNew().lt("project_start_time", new Date()) + if ("1".equals(projectStatus)) { + query.andNew().gt("project_start_time", new Date()) .or().isNull("project_start_time"); - } else if (EXCUTEING.equals(projectStatus)) { - query.ge("project_start_time", new Date()); - query.lt("project_end_time", new Date()); + } else if ("2".equals(projectStatus)) { + query.le("project_start_time", new Date()); + query.gt("project_end_time", new Date()); } else { - query.ge("project_end_time", new Date()); + query.le("project_end_time", new Date()); } } return query; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 4d84e2c..4cae735 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -44,7 +44,6 @@ @ExcelProperty("点位类型") @TableField(exist = false) - @NotBlank(message = "点位类型不能为空") private String wellTypeName; @ExcelProperty("位置信息") @@ -55,7 +54,6 @@ @TableField(exist = false) @ExcelProperty("所属项目") - @NotBlank(message = "所属项目不能为空") private String projectName; private Date createTime; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index a8921c5..8a5f81a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -33,6 +33,8 @@ String begTime, String endTime, String project, String installPerson); + void deleteExportFile(String fileValidDays); + void convert84(); void exportImageExcel(Map sluiceWellDictMap, diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java index 2f180c1..d008c8a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java @@ -13,4 +13,5 @@ */ public interface IAppUserOpenidService extends IService { + Boolean isBindByOpenId(String openId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0d9c990..2cafc39 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -20,6 +20,9 @@ Object update(AppUserSaveDTO appUserDTO); + Object resetPassword(AppUserSaveDTO appUserDTO); + + Object project(String openId); Object unbind(Long id); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java index 9804cae..68eb4aa 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java @@ -37,6 +37,7 @@ import java.util.*; import java.util.List; import java.util.concurrent.*; +import java.util.stream.Collectors; /** *

@@ -140,6 +141,30 @@ return this.selectList(query); } + //删除超期一天的日志 + @Override + public void deleteExportFile(String fileValidDays) { + //查询超出一天的文件,删除文件日志,删除文件 + List batchExportLogs = batchExportLogMapper.getOverdueExportLog(fileValidDays); + //待删除的目录 + List userIds = batchExportLogs.stream().map(BatchExportLog::getCreateUserId) + .distinct().collect(Collectors.toList()); + //待删除的目录 + List ids = batchExportLogs.stream().map(BatchExportLog::getId) + .distinct().collect(Collectors.toList()); + //删除目录 + for (Long userId : userIds) { + String currentStampDir = filePath + userId + File.separator; + File invalidFile = new File(currentStampDir); + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + deleteFile(invalidFile, currentStampDir); + } + } + //删除日志 + this.deleteBatchIds(ids); + } + @Override public void convert84() { EntityWrapper query = new EntityWrapper<>(); @@ -168,9 +193,8 @@ appDeviceAdds.forEach(appDeviceAdd -> { appDeviceAdd.setWelltype(sluiceWellDictMap.get(appDeviceAdd.getWelltype())); }); - Long stampeDir = System.currentTimeMillis(); //以当前时间戳为目录 - String currentStampDir = filePath + stampeDir + File.separator; + String currentStampDir = filePath + currentUserId + File.separator; setLocalFileDir(currentStampDir); List batchExportLogsList = new ArrayList<>(); try { @@ -190,15 +214,18 @@ } }; executor.submit(task); - batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(stampeDir))); + batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(currentStampDir))); } while (true) { Long activeCount = ((ThreadPoolExecutor) executor).getTaskCount() - ((ThreadPoolExecutor) executor).getCompletedTaskCount(); if (activeCount == 0) { + //只删除自己的 + EntityWrapper query = new EntityWrapper(); + query.eq("create_user_id", currentUserId); //删除所有的文件日志 - this.batchExportLogMapper.delete(null); + this.batchExportLogMapper.delete(query); //删除所有历史文件 - deleteFile(new File(filePath), String.valueOf(stampeDir)); + deleteFile(new File(currentStampDir), String.valueOf(currentStampDir)); //批量导入日志 batchExportLogsList.stream().forEach( batchExportLog -> this.batchExportLogMapper.insert(batchExportLog) @@ -207,7 +234,7 @@ List userList = new ArrayList<>(); userList.add(String.valueOf(currentUserId)); Map map = new HashMap(); - map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(stampeDir)) + "的文件导出已经生成了,请到导出列表页面查看"); + map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "的文件导出已经生成了,请到导出列表页面查看"); map.put("type", "alarm"); webSocket.sendListMessage(userList, JSON.toJSONString(map)); break; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java index 02c4fb2..3c2b715 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.app.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.app.dao.AppUserMapper; import com.casic.missiles.modular.app.dao.AppUserOpenidMapper; import com.casic.missiles.modular.app.model.AppUserOpenid; import com.casic.missiles.modular.app.service.IAppUserOpenidService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /** @@ -15,6 +18,16 @@ * @since 2020-05-24 */ @Service +@AllArgsConstructor public class AppUserOpenidServiceImpl extends ServiceImpl implements IAppUserOpenidService { + private final AppUserMapper appUserMapper; + + @Override + public Boolean isBindByOpenId(String openId) { + String phone =appUserMapper.getPhoneByOpenId(openId); + return StringUtils.isNotEmpty(phone); + } + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index d7c3308..352cdfc 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -32,8 +32,10 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Update; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; @@ -43,6 +45,10 @@ import java.util.function.Function; import java.util.stream.Collectors; +/** + * @author cz + * @date 2023-06-01 + */ @Slf4j @Service @AllArgsConstructor @@ -69,10 +75,11 @@ } @Override - public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { appUser.setStatus(ALREADY_BOUND); appUser.setAttr(appUserLoginDTO.getWeChatName()); appUser.setOpenId(appUserLoginDTO.getOpenId()); + appUser.setLabelLastTime(new Date()); int bindFlag = this.baseMapper.updateById(appUser); if (bindFlag > 0) { return ResponseData.success(); @@ -116,18 +123,33 @@ Assert.isFalse(accountNumber > 0, () -> { throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); }); + Boolean updateFlag = this.updateById(this.createUser(userDTO)); + if (updateFlag) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object resetPassword(AppUserSaveDTO appUserDTO) { + AppUser user = new AppUser(); try { - userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + user.setPassword(RSAUtils.decrypt(appUserDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); } catch (Exception var5) { log.error("密码解密异常", var5); return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); } - userDTO.setSalt(ShiroKit.getRandomSalt(5)); - userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); - this.updateById(this.createUser(userDTO)); - return ResponseData.success(); + user.setId(appUserDTO.getId()); + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + Boolean updateFlag=this.updateById(user); + if(updateFlag){ + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override public Object project(String openId) { EntityWrapper appUserWrapper = new EntityWrapper(); @@ -170,6 +192,10 @@ //准备校验参数 AppUserImportValid userValid = prepareUserValid(); List list = new ArrayList<>(); + if (userValid == null) { + list.add("用户获取校验参数出错"); + return list; + } if (!CollectionUtil.isEmpty(results)) { final Integer[] index = {0}; results.forEach(user -> { @@ -184,19 +210,24 @@ ); return; } - //手机号的格式、唯一性校验 - Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); - if (wellCodeIsExist) { - list.add("第" + index[0] + "行,手机号已经注册!"); - return; + if (userValid.getUserPhoneMap() != null) { + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } } + if (StringUtils.isEmpty(user.getPassword())) { + user.setPassword("111111"); + } //验证项目名称是否存在 String[] projectNames = user.getProjectNames().split(","); String projectIdIs = ""; for (String projectName : projectNames) { Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); - if (projectIdIsExist) { + if (!projectIdIsExist) { list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); return; } else { @@ -212,8 +243,8 @@ if (StringUtils.isNotEmpty(user.getRole())) { Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); if (roleIsExist) { - list.add("第" + index[0] + "行,角色类型错误,查询不到!"); - return; + //默认为普通角色 + user.setRole("2"); } else { user.setRole(userValid.getRoleMap().get(user.getRole())); } @@ -302,7 +333,7 @@ private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { EntityWrapper query = new EntityWrapper<>(); query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); - query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectIds", appUserListDTO.getProjectId()); query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); @@ -312,11 +343,17 @@ } private AppUserImportValid prepareUserValid() { - return AppUserImportValid.builder() - .projectNameMap(appWellPreService.getProjestNameMap()) - .roleMap(getDictRole()) - .userPhoneMap(getUserPhoneMap()) - .build(); + try { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } catch (Exception ex) { + //主要捕获项目和角色 + log.error("验证参数出错,异常信息为{}", ex); + } + return null; } /** @@ -335,10 +372,16 @@ //获取项目名称 private Map getUserPhoneMap() { List userPhoneList = this.baseMapper.getUserPhoneList(); - //由名称查询id - Map userPhoneMap = userPhoneList.stream().collect( - Collectors.toMap(Function.identity(), Function.identity())); - return userPhoneMap; + + if (!CollectionUtils.isEmpty(userPhoneList)) { + List userPhoneFilerList = userPhoneList.stream().filter(e -> StringUtils.isNotEmpty(e)).collect(Collectors.toList()); + //由名称查询id + Map userPhoneMap = userPhoneFilerList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } else { + return null; + } } /** diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 68a15cc..63a7aab 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -15,6 +15,7 @@ import com.casic.missiles.modular.system.dao.DictMapper; import com.casic.missiles.modular.system.model.Dict; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.validation.BeanPropertyBindingResult; @@ -25,6 +26,7 @@ import java.util.function.Function; import java.util.stream.Collectors; +@Slf4j @Service @AllArgsConstructor public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { @@ -37,7 +39,7 @@ EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); Map projestMaps = getProjestIdMap(); - Map dictWellTypeMap =getDictWellType(); + Map dictWellTypeMap = getDictWellType(); for (WellPreAdd wellPreAdd : wellPreAddList) { if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); @@ -69,9 +71,13 @@ @Override public List addWellPreBatch(List results) { BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + List list = new ArrayList<>(); //准备校验参数 WellPreImportValid wellPreValid = prepareWellPreValid(); - List list = new ArrayList<>(); + if(wellPreValid==null){ + list.add("获取校验参数出错"); + return list; + } if (!CollectionUtil.isEmpty(results)) { final Integer[] index = {0}; results.forEach(wellPreAdd -> { @@ -94,7 +100,7 @@ } //验证项目名称是否存在 Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); - if (projectIdIsExist) { + if (!projectIdIsExist) { list.add("第" + index[0] + "行,项目名称错误,查询不到!"); return; } else { @@ -143,7 +149,7 @@ public Object delete(Long id) { int deleteFlag = this.baseMapper.deleteById(id); if (deleteFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @@ -165,11 +171,16 @@ * 预录入初始化的内容都放在该方法进行批量初始化 */ private WellPreImportValid prepareWellPreValid() { - return WellPreImportValid.builder() - .projectMap(getProjestNameMap()) - .wellCodeMap(getAllWellCodeMap(null)) - .dictSuiltWellMap(getDictSluitWell()) - .build(); + try { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllWellCodeMap(null)) + .dictSuiltWellMap(getDictSluitWell()) + .build(); + }catch (Exception ex){ + log.error("验证准备阶段出现异常,异常信息为{}",ex); + } + return null; } /** @@ -186,9 +197,11 @@ //获取点位编号 private Map getAllWellCodeMap(Long updateId) { + List allWellPreList = this.baseMapper.getAllWellPreList(updateId); Map wellCodeMap = allWellPreList.stream().collect( Collectors.toMap(Function.identity(), Function.identity(), (e1, e2) -> e1) + ); return wellCodeMap; } @@ -197,8 +210,9 @@ @Override public Map getProjestNameMap() { List> projects = this.baseMapper.getProjectList(); + List> projectFilters=projects.stream().filter(e->e.get("projectName")!=null).collect(Collectors.toList()); //由名称查询id - Map projectMap = projects.stream().collect( + Map projectMap = projectFilters.stream().collect( Collectors.toMap(e -> e.get("projectName").toString(), e -> e.get("projectId").toString(), (e1, e2) -> e1) ); @@ -211,7 +225,7 @@ List> projects = this.baseMapper.getProjectList(); Map projectMaps = projects.stream().collect( Collectors.toMap(e -> String.valueOf(e.get("projectId")), - e -> String.valueOf(e.get("projectName")),(e1,e2)->e1) + e -> String.valueOf(e.get("projectName")), (e1, e2) -> e1) ); return projectMaps; } @@ -223,7 +237,7 @@ //获取点位编号 List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); Map dictRoleMap = suilWellDict.stream().collect( - Collectors.toMap( Dict::getCode,Dict::getName) + Collectors.toMap(Dict::getCode, Dict::getName) ); return dictRoleMap; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml index e0dd825..af74eb1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml @@ -51,7 +51,6 @@ - + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java index 2ed3a2d..1b7cafd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java @@ -50,7 +50,7 @@ project.setProjectStatus(NOT_EXCUTE); //小于结束时间为空判断为正在执行 }else if(ObjectUtils.isEmpty(project.getProjectEndTime()) || - project.getProjectEndTime().compareTo(new Date())<0){ + project.getProjectEndTime().compareTo(new Date())>0){ project.setProjectStatus(EXCUTEING); }else { project.setProjectStatus(HAS_EXCUTE); @@ -81,14 +81,14 @@ EntityWrapper query = new EntityWrapper<>(); query.like("project_name", projectName); if (!StringUtils.isEmpty(projectStatus) && !"0".equals(projectStatus)) { - if (NOT_EXCUTE.equals(projectStatus)) { - query.andNew().lt("project_start_time", new Date()) + if ("1".equals(projectStatus)) { + query.andNew().gt("project_start_time", new Date()) .or().isNull("project_start_time"); - } else if (EXCUTEING.equals(projectStatus)) { - query.ge("project_start_time", new Date()); - query.lt("project_end_time", new Date()); + } else if ("2".equals(projectStatus)) { + query.le("project_start_time", new Date()); + query.gt("project_end_time", new Date()); } else { - query.ge("project_end_time", new Date()); + query.le("project_end_time", new Date()); } } return query; diff --git a/casic-web/src/main/resources/application-dev.yml b/casic-web/src/main/resources/application-dev.yml index 59163c7..1f21cd8 100644 --- a/casic-web/src/main/resources/application-dev.yml +++ b/casic-web/src/main/resources/application-dev.yml @@ -15,8 +15,8 @@ casic: kaptcha-open: false #是否开启登录时验证码 (true/false) nologin-urls: /user/login,/user/appLogin,/kaptcha,/config/baseConfig,/route/mockToken,/process/processDiagram,/appDeviceLog/listPage,/appDeviceAdd/add,/appDeviceLog/deviceDetail,/appDeviceLog/add,/appDeviceAdd/fileUpload,/appDeviceAdd/findListByCodes,/appDeviceAdd/findModeCodeByCode,/deviceType/getUser,/project/getProject,/appDeviceLog/deletePhoto,/deviceType/deviceType,/productRepairRecords/add,/appDeviceAdd/fileUploadMarker,/appDeviceAdd/getDevTypeLength,/appDeviceAdd/delete,/appUserOpenid/login,/appUserOpenid/add,/appUserOpenid/validate,/appDeviceAdd/getWellTypeList,/appDeviceAdd/*,/websocket/*,/template/download - file-upload-path: D:\casic\tmp\ - file-download-path: D:\casic\tmp\ + file-upload-path: \excel\ + file-download-path: \excel\ producerName: producer repairName: repair wxUrl: https://api.weixin.qq.com/sns/jscode2session #获取微信openid diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java new file mode 100644 index 0000000..666aa19 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TaskConfigurer.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.app.config; + +import com.casic.missiles.modular.app.service.IAppDeviceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +@Configuration +@EnableScheduling +public class TaskConfigurer implements SchedulingConfigurer { + + @Autowired + private TimeConfig timeConfig; + @Autowired + private IAppDeviceAddService appDeviceAddService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask triggrtTask = new TriggerTask(deleteExportFile(), + triggerContext -> new CronTrigger(timeConfig.getExportFileDelete()).nextExecutionTime(triggerContext)); + taskRegistrar.addTriggerTask(triggrtTask); + }; + + private Runnable deleteExportFile() { + return new Runnable() { + @Override + public void run() { + appDeviceAddService.deleteExportFile(timeConfig.getFileValidDays()); + } + }; + } + +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java new file mode 100644 index 0000000..e91d4bd --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/config/TimeConfig.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TimeConfig { + + @Value("${casic.export-file-delete}") + private String exportFileDelete; + + + @Value("${casic.file-valid-days}") + private String fileValidDays; + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java index 297ff63..55e4981 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppDeviceAddController.java @@ -51,8 +51,6 @@ @Resource private IAppDeviceLogService appDeviceLogService; @Resource - private ICommonFileService commonFileService; - @Resource private ICommonPermissionService permissionService; @Value("${casic.photoPath}") @@ -241,7 +239,7 @@ // appDeviceAddService.convert84(); // } - + //定时删除 //照片一起导出 @RequestMapping(value = "/image/listExp") @ResponseBody @@ -267,8 +265,8 @@ @RequestMapping(value = "/listExp") @ResponseBody public void listExps(String devcode, String devtype, - String begTime, String endTime, - String project, String installPerson, HttpServletResponse response) { + String begTime, String endTime, + String project, String installPerson, HttpServletResponse response) { List dictList = permissionService.findInDictByCode("sluicewellType"); Map sluiceWellDictMap = dictList.stream() .collect(Collectors.toMap(e -> e.getCode(), e -> e.getName())); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java index d0c8d6e..4cad5da 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProductSafeController.java @@ -23,6 +23,7 @@ /** * @author cz + * @date 2023-06-01 */ @AllArgsConstructor @RestController diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index cff72a3..04feeff 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -94,6 +94,17 @@ return appUserService.update(appUserDTO); } + /** + * 编辑 + */ + @RequestMapping(value = "/reset/password") + public Object resetPassword(@RequestBody @Valid AppUserSaveDTO appUserDTO) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.resetPassword(appUserDTO); + } + /** * 由openId获取项目列表信息 @@ -125,13 +136,12 @@ List results = new ArrayList<>(); //设置表头与字段映射,可通过反射获取 Map mapper = new HashMap<>(); - mapper.put("手机号", "phone"); + mapper.put("用户名(手机号)", "phone"); mapper.put("密码", "password"); mapper.put("姓名", "name"); mapper.put("角色", "role"); - mapper.put("所属项目", "projectName"); + mapper.put("所属项目", "projectNames"); try { - try (InputStream in = file.getInputStream()) { ExcelIO.read(in, mapper, AppUser.class, (row) -> { //仅读取第一个sheet diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java index f686fcd..f68b014 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserOpenidController.java @@ -56,7 +56,6 @@ } /** - * * @param appid * @param secret * @param code @@ -65,8 +64,8 @@ @RequestMapping(value = "/login") @ResponseBody public Object login(String appid, String secret, String code) { - secret=secretWx; - appid=appidWx; + secret = secretWx; + appid = appidWx; String openid = ""; StringBuilder url = new StringBuilder(wxUrl); url.append("?appid=");//appid设置 @@ -85,6 +84,14 @@ String content = EntityUtils.toString(result); JSONObject res = JSONObject.parseObject(content);//把信息封装为json openid = res.get("openid").toString(); + //校验是否已经绑定 + Boolean isBind = appUserOpenidService.isBindByOpenId(openid); + if (isBind) { + ResponseData.success(openid); + } else { + ResponseData.success(201, "微信用户未绑定小程序账号,请绑定", openid); + } + //返回绑定信息 } catch (Exception e) { e.printStackTrace(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 7932aaf..772b23b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -24,6 +24,11 @@ import java.io.InputStream; import java.util.*; +/** + * @author cz + * @date 2023-06-01 + */ + @RestController @AllArgsConstructor @RequestMapping("/well/pre") diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index 9a73ef8..3a73e15 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; -public interface AppUserMapper extends BaseMapper { +public interface AppUserMapper extends BaseMapper { - @Select(" select phone " + - " from app_user " + - " where status!=3 ") List getUserPhoneList(); + + String getPhoneByOpenId(@Param("openId") String openId); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java index b741f4e..2f4a392 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/BatchExportLogMapper.java @@ -2,7 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.BatchExportLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface BatchExportLogMapper extends BaseMapper { + List getOverdueExportLog(@Param("fileValidDays")String fileValidDays); + + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml new file mode 100644 index 0000000..64371d6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ID AS id, openid, USER_ID AS userId, telephone, attr + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml new file mode 100644 index 0000000..2d072e0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/BatchExportLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java index 25326e5..4f01b9f 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppDeviceLog.java @@ -25,7 +25,6 @@ public class AppDeviceLog extends Model { private static final long serialVersionUID = 1L; - /** * 主键id */ diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index e8327c5..bab99e7 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -13,7 +13,6 @@ private Long id; @NotBlank(message = "手机号不能为空") private String phone; - @NotBlank(message = "密码不能为空") private String password; @NotBlank(message = "名字不能为空") private String name; @@ -27,7 +26,7 @@ private String role; private String openId; private Date labelLastTime; - private Date creatime; + private Date createtime; private Date updateTime; private String salt; private String status; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 4d84e2c..4cae735 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -44,7 +44,6 @@ @ExcelProperty("点位类型") @TableField(exist = false) - @NotBlank(message = "点位类型不能为空") private String wellTypeName; @ExcelProperty("位置信息") @@ -55,7 +54,6 @@ @TableField(exist = false) @ExcelProperty("所属项目") - @NotBlank(message = "所属项目不能为空") private String projectName; private Date createTime; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java index a8921c5..8a5f81a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppDeviceAddService.java @@ -33,6 +33,8 @@ String begTime, String endTime, String project, String installPerson); + void deleteExportFile(String fileValidDays); + void convert84(); void exportImageExcel(Map sluiceWellDictMap, diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java index 2f180c1..d008c8a 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserOpenidService.java @@ -13,4 +13,5 @@ */ public interface IAppUserOpenidService extends IService { + Boolean isBindByOpenId(String openId); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0d9c990..2cafc39 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -20,6 +20,9 @@ Object update(AppUserSaveDTO appUserDTO); + Object resetPassword(AppUserSaveDTO appUserDTO); + + Object project(String openId); Object unbind(Long id); diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java index 9804cae..68eb4aa 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppDeviceAddServiceImpl.java @@ -37,6 +37,7 @@ import java.util.*; import java.util.List; import java.util.concurrent.*; +import java.util.stream.Collectors; /** *

@@ -140,6 +141,30 @@ return this.selectList(query); } + //删除超期一天的日志 + @Override + public void deleteExportFile(String fileValidDays) { + //查询超出一天的文件,删除文件日志,删除文件 + List batchExportLogs = batchExportLogMapper.getOverdueExportLog(fileValidDays); + //待删除的目录 + List userIds = batchExportLogs.stream().map(BatchExportLog::getCreateUserId) + .distinct().collect(Collectors.toList()); + //待删除的目录 + List ids = batchExportLogs.stream().map(BatchExportLog::getId) + .distinct().collect(Collectors.toList()); + //删除目录 + for (Long userId : userIds) { + String currentStampDir = filePath + userId + File.separator; + File invalidFile = new File(currentStampDir); + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + deleteFile(invalidFile, currentStampDir); + } + } + //删除日志 + this.deleteBatchIds(ids); + } + @Override public void convert84() { EntityWrapper query = new EntityWrapper<>(); @@ -168,9 +193,8 @@ appDeviceAdds.forEach(appDeviceAdd -> { appDeviceAdd.setWelltype(sluiceWellDictMap.get(appDeviceAdd.getWelltype())); }); - Long stampeDir = System.currentTimeMillis(); //以当前时间戳为目录 - String currentStampDir = filePath + stampeDir + File.separator; + String currentStampDir = filePath + currentUserId + File.separator; setLocalFileDir(currentStampDir); List batchExportLogsList = new ArrayList<>(); try { @@ -190,15 +214,18 @@ } }; executor.submit(task); - batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(stampeDir))); + batchExportLogsList.add(createBatchFileLogs(currentUserId, partitionNumber, fileName, String.valueOf(currentStampDir))); } while (true) { Long activeCount = ((ThreadPoolExecutor) executor).getTaskCount() - ((ThreadPoolExecutor) executor).getCompletedTaskCount(); if (activeCount == 0) { + //只删除自己的 + EntityWrapper query = new EntityWrapper(); + query.eq("create_user_id", currentUserId); //删除所有的文件日志 - this.batchExportLogMapper.delete(null); + this.batchExportLogMapper.delete(query); //删除所有历史文件 - deleteFile(new File(filePath), String.valueOf(stampeDir)); + deleteFile(new File(currentStampDir), String.valueOf(currentStampDir)); //批量导入日志 batchExportLogsList.stream().forEach( batchExportLog -> this.batchExportLogMapper.insert(batchExportLog) @@ -207,7 +234,7 @@ List userList = new ArrayList<>(); userList.add(String.valueOf(currentUserId)); Map map = new HashMap(); - map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(stampeDir)) + "的文件导出已经生成了,请到导出列表页面查看"); + map.put("message", "你在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "的文件导出已经生成了,请到导出列表页面查看"); map.put("type", "alarm"); webSocket.sendListMessage(userList, JSON.toJSONString(map)); break; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java index 02c4fb2..3c2b715 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserOpenidServiceImpl.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.app.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.app.dao.AppUserMapper; import com.casic.missiles.modular.app.dao.AppUserOpenidMapper; import com.casic.missiles.modular.app.model.AppUserOpenid; import com.casic.missiles.modular.app.service.IAppUserOpenidService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /** @@ -15,6 +18,16 @@ * @since 2020-05-24 */ @Service +@AllArgsConstructor public class AppUserOpenidServiceImpl extends ServiceImpl implements IAppUserOpenidService { + private final AppUserMapper appUserMapper; + + @Override + public Boolean isBindByOpenId(String openId) { + String phone =appUserMapper.getPhoneByOpenId(openId); + return StringUtils.isNotEmpty(phone); + } + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index d7c3308..352cdfc 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -32,8 +32,10 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Update; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.FieldError; @@ -43,6 +45,10 @@ import java.util.function.Function; import java.util.stream.Collectors; +/** + * @author cz + * @date 2023-06-01 + */ @Slf4j @Service @AllArgsConstructor @@ -69,10 +75,11 @@ } @Override - public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { appUser.setStatus(ALREADY_BOUND); appUser.setAttr(appUserLoginDTO.getWeChatName()); appUser.setOpenId(appUserLoginDTO.getOpenId()); + appUser.setLabelLastTime(new Date()); int bindFlag = this.baseMapper.updateById(appUser); if (bindFlag > 0) { return ResponseData.success(); @@ -116,18 +123,33 @@ Assert.isFalse(accountNumber > 0, () -> { throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); }); + Boolean updateFlag = this.updateById(this.createUser(userDTO)); + if (updateFlag) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object resetPassword(AppUserSaveDTO appUserDTO) { + AppUser user = new AppUser(); try { - userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + user.setPassword(RSAUtils.decrypt(appUserDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); } catch (Exception var5) { log.error("密码解密异常", var5); return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); } - userDTO.setSalt(ShiroKit.getRandomSalt(5)); - userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); - this.updateById(this.createUser(userDTO)); - return ResponseData.success(); + user.setId(appUserDTO.getId()); + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + Boolean updateFlag=this.updateById(user); + if(updateFlag){ + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override public Object project(String openId) { EntityWrapper appUserWrapper = new EntityWrapper(); @@ -170,6 +192,10 @@ //准备校验参数 AppUserImportValid userValid = prepareUserValid(); List list = new ArrayList<>(); + if (userValid == null) { + list.add("用户获取校验参数出错"); + return list; + } if (!CollectionUtil.isEmpty(results)) { final Integer[] index = {0}; results.forEach(user -> { @@ -184,19 +210,24 @@ ); return; } - //手机号的格式、唯一性校验 - Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); - if (wellCodeIsExist) { - list.add("第" + index[0] + "行,手机号已经注册!"); - return; + if (userValid.getUserPhoneMap() != null) { + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } } + if (StringUtils.isEmpty(user.getPassword())) { + user.setPassword("111111"); + } //验证项目名称是否存在 String[] projectNames = user.getProjectNames().split(","); String projectIdIs = ""; for (String projectName : projectNames) { Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); - if (projectIdIsExist) { + if (!projectIdIsExist) { list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); return; } else { @@ -212,8 +243,8 @@ if (StringUtils.isNotEmpty(user.getRole())) { Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); if (roleIsExist) { - list.add("第" + index[0] + "行,角色类型错误,查询不到!"); - return; + //默认为普通角色 + user.setRole("2"); } else { user.setRole(userValid.getRoleMap().get(user.getRole())); } @@ -302,7 +333,7 @@ private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { EntityWrapper query = new EntityWrapper<>(); query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); - query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectIds", appUserListDTO.getProjectId()); query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); @@ -312,11 +343,17 @@ } private AppUserImportValid prepareUserValid() { - return AppUserImportValid.builder() - .projectNameMap(appWellPreService.getProjestNameMap()) - .roleMap(getDictRole()) - .userPhoneMap(getUserPhoneMap()) - .build(); + try { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } catch (Exception ex) { + //主要捕获项目和角色 + log.error("验证参数出错,异常信息为{}", ex); + } + return null; } /** @@ -335,10 +372,16 @@ //获取项目名称 private Map getUserPhoneMap() { List userPhoneList = this.baseMapper.getUserPhoneList(); - //由名称查询id - Map userPhoneMap = userPhoneList.stream().collect( - Collectors.toMap(Function.identity(), Function.identity())); - return userPhoneMap; + + if (!CollectionUtils.isEmpty(userPhoneList)) { + List userPhoneFilerList = userPhoneList.stream().filter(e -> StringUtils.isNotEmpty(e)).collect(Collectors.toList()); + //由名称查询id + Map userPhoneMap = userPhoneFilerList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } else { + return null; + } } /** diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 68a15cc..63a7aab 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -15,6 +15,7 @@ import com.casic.missiles.modular.system.dao.DictMapper; import com.casic.missiles.modular.system.model.Dict; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.validation.BeanPropertyBindingResult; @@ -25,6 +26,7 @@ import java.util.function.Function; import java.util.stream.Collectors; +@Slf4j @Service @AllArgsConstructor public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { @@ -37,7 +39,7 @@ EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); Map projestMaps = getProjestIdMap(); - Map dictWellTypeMap =getDictWellType(); + Map dictWellTypeMap = getDictWellType(); for (WellPreAdd wellPreAdd : wellPreAddList) { if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); @@ -69,9 +71,13 @@ @Override public List addWellPreBatch(List results) { BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + List list = new ArrayList<>(); //准备校验参数 WellPreImportValid wellPreValid = prepareWellPreValid(); - List list = new ArrayList<>(); + if(wellPreValid==null){ + list.add("获取校验参数出错"); + return list; + } if (!CollectionUtil.isEmpty(results)) { final Integer[] index = {0}; results.forEach(wellPreAdd -> { @@ -94,7 +100,7 @@ } //验证项目名称是否存在 Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); - if (projectIdIsExist) { + if (!projectIdIsExist) { list.add("第" + index[0] + "行,项目名称错误,查询不到!"); return; } else { @@ -143,7 +149,7 @@ public Object delete(Long id) { int deleteFlag = this.baseMapper.deleteById(id); if (deleteFlag > 0) { - ResponseData.success(); + return ResponseData.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @@ -165,11 +171,16 @@ * 预录入初始化的内容都放在该方法进行批量初始化 */ private WellPreImportValid prepareWellPreValid() { - return WellPreImportValid.builder() - .projectMap(getProjestNameMap()) - .wellCodeMap(getAllWellCodeMap(null)) - .dictSuiltWellMap(getDictSluitWell()) - .build(); + try { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllWellCodeMap(null)) + .dictSuiltWellMap(getDictSluitWell()) + .build(); + }catch (Exception ex){ + log.error("验证准备阶段出现异常,异常信息为{}",ex); + } + return null; } /** @@ -186,9 +197,11 @@ //获取点位编号 private Map getAllWellCodeMap(Long updateId) { + List allWellPreList = this.baseMapper.getAllWellPreList(updateId); Map wellCodeMap = allWellPreList.stream().collect( Collectors.toMap(Function.identity(), Function.identity(), (e1, e2) -> e1) + ); return wellCodeMap; } @@ -197,8 +210,9 @@ @Override public Map getProjestNameMap() { List> projects = this.baseMapper.getProjectList(); + List> projectFilters=projects.stream().filter(e->e.get("projectName")!=null).collect(Collectors.toList()); //由名称查询id - Map projectMap = projects.stream().collect( + Map projectMap = projectFilters.stream().collect( Collectors.toMap(e -> e.get("projectName").toString(), e -> e.get("projectId").toString(), (e1, e2) -> e1) ); @@ -211,7 +225,7 @@ List> projects = this.baseMapper.getProjectList(); Map projectMaps = projects.stream().collect( Collectors.toMap(e -> String.valueOf(e.get("projectId")), - e -> String.valueOf(e.get("projectName")),(e1,e2)->e1) + e -> String.valueOf(e.get("projectName")), (e1, e2) -> e1) ); return projectMaps; } @@ -223,7 +237,7 @@ //获取点位编号 List suilWellDict = this.dictMapper.selectByParentCode("sluicewellType"); Map dictRoleMap = suilWellDict.stream().collect( - Collectors.toMap( Dict::getCode,Dict::getName) + Collectors.toMap(Dict::getCode, Dict::getName) ); return dictRoleMap; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml index e0dd825..af74eb1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/ProductDeviceTypeMapper.xml @@ -51,7 +51,6 @@ - + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java index 2ed3a2d..1b7cafd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java @@ -50,7 +50,7 @@ project.setProjectStatus(NOT_EXCUTE); //小于结束时间为空判断为正在执行 }else if(ObjectUtils.isEmpty(project.getProjectEndTime()) || - project.getProjectEndTime().compareTo(new Date())<0){ + project.getProjectEndTime().compareTo(new Date())>0){ project.setProjectStatus(EXCUTEING); }else { project.setProjectStatus(HAS_EXCUTE); @@ -81,14 +81,14 @@ EntityWrapper query = new EntityWrapper<>(); query.like("project_name", projectName); if (!StringUtils.isEmpty(projectStatus) && !"0".equals(projectStatus)) { - if (NOT_EXCUTE.equals(projectStatus)) { - query.andNew().lt("project_start_time", new Date()) + if ("1".equals(projectStatus)) { + query.andNew().gt("project_start_time", new Date()) .or().isNull("project_start_time"); - } else if (EXCUTEING.equals(projectStatus)) { - query.ge("project_start_time", new Date()); - query.lt("project_end_time", new Date()); + } else if ("2".equals(projectStatus)) { + query.le("project_start_time", new Date()); + query.gt("project_end_time", new Date()); } else { - query.ge("project_end_time", new Date()); + query.le("project_end_time", new Date()); } } return query; diff --git a/casic-web/src/main/resources/application-dev.yml b/casic-web/src/main/resources/application-dev.yml index 59163c7..1f21cd8 100644 --- a/casic-web/src/main/resources/application-dev.yml +++ b/casic-web/src/main/resources/application-dev.yml @@ -15,8 +15,8 @@ casic: kaptcha-open: false #是否开启登录时验证码 (true/false) nologin-urls: /user/login,/user/appLogin,/kaptcha,/config/baseConfig,/route/mockToken,/process/processDiagram,/appDeviceLog/listPage,/appDeviceAdd/add,/appDeviceLog/deviceDetail,/appDeviceLog/add,/appDeviceAdd/fileUpload,/appDeviceAdd/findListByCodes,/appDeviceAdd/findModeCodeByCode,/deviceType/getUser,/project/getProject,/appDeviceLog/deletePhoto,/deviceType/deviceType,/productRepairRecords/add,/appDeviceAdd/fileUploadMarker,/appDeviceAdd/getDevTypeLength,/appDeviceAdd/delete,/appUserOpenid/login,/appUserOpenid/add,/appUserOpenid/validate,/appDeviceAdd/getWellTypeList,/appDeviceAdd/*,/websocket/*,/template/download - file-upload-path: D:\casic\tmp\ - file-download-path: D:\casic\tmp\ + file-upload-path: \excel\ + file-download-path: \excel\ producerName: producer repairName: repair wxUrl: https://api.weixin.qq.com/sns/jscode2session #获取微信openid diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 6ba97ff..15dc5bf 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -14,14 +14,16 @@ casic: kaptcha-open: false #是否开启登录时验证码 (true/false) nologin-urls: /user/login,/user/appLogin,/kaptcha,/config/baseConfig,/route/mockToken,/process/processDiagram,/appDeviceLog/listPage,/appDeviceAdd/add,/appDeviceLog/deviceDetail,/appDeviceLog/add,/appDeviceAdd/fileUpload,/appDeviceAdd/findListByCodes,/appDeviceAdd/findModeCodeByCode,/deviceType/getUser,/project/getProject,/appDeviceLog/deletePhoto,/deviceType/deviceType,/productRepairRecords/add,/appDeviceAdd/fileUploadMarker,/appDeviceAdd/getDevTypeLength,/appDeviceAdd/delete,/appUserOpenid/login,/appUserOpenid/add,/appUserOpenid/validate,/appDeviceAdd/getWellTypeList,/appDeviceAdd/*,/websocket/*,/template/download - file-upload-path: D:\casic\tmp\ - file-download-path: D:\casic\tmp\ + file-upload-path: D:\cz\203\临时项目\批产小程序\product-device\casic-web\src\main\resources\excel\ + file-download-path: D:\cz\203\临时项目\批产小程序\product-device\casic-web\src\main\resources\excel\ producerName: producer repairName: repair wxUrl: https://api.weixin.qq.com/sns/jscode2session #获取微信openid appid: wx8f4b331065a9ac2e #微信小程序开发appid secret: 335847f265b3875804c8f8de4231730b #微信小程序开发密钥 photoPath: https://logapi.smartlog.work/static/ #导出照片位置存放目录 + export-file-delete: 0 0 */1 * * ? #日志文件有效扫描时间(现为一天扫描一次) + file-valid-days: -1 #日志文件有效天数 logging: level.root: info level.com.casic: debug