|
|
@@ -25,8 +25,12 @@ import com.zhongzheng.common.exception.BaseException;
|
|
|
import com.zhongzheng.common.exception.CustomException;
|
|
|
import com.zhongzheng.common.type.EncryptHandler;
|
|
|
import com.zhongzheng.common.utils.*;
|
|
|
+import com.zhongzheng.common.utils.file.FileUtils;
|
|
|
import com.zhongzheng.common.utils.http.HttpUtils;
|
|
|
import com.zhongzheng.common.utils.ip.IpUtils;
|
|
|
+import com.zhongzheng.common.utils.poi.ExcelUtil;
|
|
|
+import com.zhongzheng.modules.alioss.bo.OssRequest;
|
|
|
+import com.zhongzheng.modules.alioss.service.OssService;
|
|
|
import com.zhongzheng.modules.alisms.service.IAliSmsService;
|
|
|
import com.zhongzheng.modules.collect.domain.CollectBank;
|
|
|
import com.zhongzheng.modules.collect.domain.CollectCourse;
|
|
|
@@ -45,10 +49,14 @@ import com.zhongzheng.modules.goods.service.IGoodsService;
|
|
|
import com.zhongzheng.modules.goods.vo.UserNewGoodsVo;
|
|
|
import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
|
|
|
import com.zhongzheng.modules.grade.service.IClassGradeUserService;
|
|
|
-import com.zhongzheng.modules.grade.service.impl.ClassGradeServiceImpl;
|
|
|
import com.zhongzheng.modules.grade.vo.ClassGradeUserGoodsVo;
|
|
|
+import com.zhongzheng.modules.order.bo.OrderQueryBo;
|
|
|
+import com.zhongzheng.modules.order.service.IOrderService;
|
|
|
+import com.zhongzheng.modules.order.vo.OrderListVo;
|
|
|
+import com.zhongzheng.modules.system.domain.SysTask;
|
|
|
import com.zhongzheng.modules.system.domain.SysTenant;
|
|
|
import com.zhongzheng.modules.system.service.ISysConfigService;
|
|
|
+import com.zhongzheng.modules.system.service.ISysTaskService;
|
|
|
import com.zhongzheng.modules.system.service.ISysTenantService;
|
|
|
import com.zhongzheng.modules.user.bo.*;
|
|
|
import com.zhongzheng.modules.user.domain.User;
|
|
|
@@ -66,13 +74,18 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileOutputStream;
|
|
|
import java.io.InputStream;
|
|
|
import java.lang.reflect.Field;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.nio.file.Files;
|
|
|
+import java.nio.file.Path;
|
|
|
+import java.nio.file.Paths;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
-
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -124,13 +137,16 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
|
|
|
|
|
|
@Autowired
|
|
|
private TokenService tokenService;
|
|
|
-
|
|
|
@Autowired
|
|
|
private IUserVisitLogService iUserVisitLogService;
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private IUserSubscribeService iUserSubscribeService;
|
|
|
+ @Autowired
|
|
|
+ private IOrderService iOrderService;
|
|
|
@Autowired
|
|
|
private IUserStudyLogService iUserStudyLogService;
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private OssService ossService;
|
|
|
@Autowired
|
|
|
private IUserLoginErrorService iUserLoginErrorService;
|
|
|
@Autowired
|
|
|
@@ -139,7 +155,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
|
|
|
private IGoodsService iGoodsService;
|
|
|
@Autowired
|
|
|
private ISysTenantService iSysTenantService;
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private ISysTaskService iSysTaskService;
|
|
|
@Autowired
|
|
|
private ICourseService iCourseService;
|
|
|
@Autowired
|
|
|
@@ -1723,6 +1740,337 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void userDateDownload(UserDownloadBo bo) {
|
|
|
+ SysTask task = iSysTaskService.getOne(new LambdaQueryWrapper<SysTask>()
|
|
|
+ .eq(SysTask::getSysUserId, bo.getCreateSysUserId())
|
|
|
+ .eq(SysTask::getTaskCode, bo.getTaskCode()));
|
|
|
+ if (ObjectUtil.isNull(task)){
|
|
|
+ log.error("档案下载错误:下载任务获取不到"+bo.getTaskCode());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isEmpty(bo.getUserIds())){
|
|
|
+ log.error("档案下载错误:学员信息获取有误"+bo.getTaskCode());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ task.setTaskStatus(2);//下载中
|
|
|
+ iSysTaskService.updateById(task);
|
|
|
+ String zhiyuan = System.getProperty("user.dir");
|
|
|
+ String toPath = zhiyuan + "/zhongzheng-admin/src/main/resources/dangan"+DateUtils.getNowTime();
|
|
|
+ for (Long userId : bo.getUserIds()) {
|
|
|
+ User user = getById(userId);
|
|
|
+ if (ObjectUtil.isNull(user)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String userPath = toPath + "/" +user.getRealname()+EncryptHandler.decrypt(user.getIdCard());
|
|
|
+ File file = new File(userPath);
|
|
|
+ if (!file.exists()) {
|
|
|
+ file.mkdirs();
|
|
|
+ }
|
|
|
+ for (Integer type : bo.getTypes()) {
|
|
|
+ switch (type){
|
|
|
+ case 1://个人资料
|
|
|
+ UserDataExcelBo excelBo = BeanUtil.toBean(user, UserDataExcelBo.class);
|
|
|
+ excelBo.setRegisterTime(DateUtils.timestampToDateFormat(user.getCreateTime(),"yyyy/MM/dd HH:mm:ss"));
|
|
|
+ excelBo.setSex(ObjectUtil.isNotNull(user.getSex()) && user.getSex() == 1?"男":"女");
|
|
|
+ excelBo.setUserPhone(EncryptHandler.decrypt(user.getTelphone()));
|
|
|
+ excelBo.setUserCard(EncryptHandler.decrypt(user.getIdCard()));
|
|
|
+ ExcelUtil<UserDataExcelBo> util = new ExcelUtil<>(UserDataExcelBo.class);
|
|
|
+ String path1 = userPath + "/"+"个人资料.xlsx";
|
|
|
+ List<UserDataExcelBo> excelBoList = new ArrayList<>();
|
|
|
+ excelBoList.add(excelBo);
|
|
|
+ util.exportEasyExcelUtil(excelBoList, UserDataExcelBo.class,path1);
|
|
|
+ break;
|
|
|
+ case 2://证件照
|
|
|
+ //获取个人近照
|
|
|
+ try {
|
|
|
+ InputStream inputStream = ossService.getStreamByObject(user.getOneInchPhotos());
|
|
|
+ //写入本地文件
|
|
|
+ String inchPath = userPath + "/证件照.jpg";
|
|
|
+ FileOutputStream fileOutputStream = new FileOutputStream(inchPath);
|
|
|
+ byte[] buffer = new byte[1024];
|
|
|
+ int len = 0;
|
|
|
+ while ((len = inputStream.read(buffer)) != -1) {
|
|
|
+ fileOutputStream.write(buffer, 0, len);
|
|
|
+ }
|
|
|
+ inputStream.close();
|
|
|
+ fileOutputStream.close();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 3://身份证照片
|
|
|
+ //获取身份证照片
|
|
|
+ try {
|
|
|
+ InputStream inputStream = ossService.getStreamByObject(user.getIdCardImg1());
|
|
|
+ //写入本地文件
|
|
|
+ String inchPath = userPath + "/身份证正面.jpg";
|
|
|
+ FileOutputStream fileOutputStream = new FileOutputStream(inchPath);
|
|
|
+ byte[] buffer = new byte[1024];
|
|
|
+ int len = 0;
|
|
|
+ while ((len = inputStream.read(buffer)) != -1) {
|
|
|
+ fileOutputStream.write(buffer, 0, len);
|
|
|
+ }
|
|
|
+ inputStream.close();
|
|
|
+ fileOutputStream.close();
|
|
|
+
|
|
|
+ InputStream inputStream2 = ossService.getStreamByObject(user.getIdCardImg2());
|
|
|
+ String inchPath2 = userPath + "/身份证反面.jpg";
|
|
|
+ FileOutputStream fileOutputStream2 = new FileOutputStream(inchPath2);
|
|
|
+ byte[] buffer2 = new byte[1024];
|
|
|
+ int len2 = 0;
|
|
|
+ while ((len2 = inputStream2.read(buffer2)) != -1) {
|
|
|
+ fileOutputStream2.write(buffer2, 0, len2);
|
|
|
+ }
|
|
|
+ inputStream2.close();
|
|
|
+ fileOutputStream2.close();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 4://订单记录
|
|
|
+ OrderQueryBo queryBo = new OrderQueryBo();
|
|
|
+ queryBo.setStatus(new Integer[]{0,1});
|
|
|
+ queryBo.setUserId(user.getUserId());
|
|
|
+ List<OrderListVo> orderListVos = iOrderService.selectDangAnOrderList(queryBo);
|
|
|
+ if (!CollectionUtils.isEmpty(orderListVos)){
|
|
|
+ for (OrderListVo vo : orderListVos) {
|
|
|
+ vo.setIdCard(EncryptHandler.decrypt(vo.getIdCard()));
|
|
|
+ vo.setCreateTimeStr(DateUtils.timestampToDateFormat(vo.getCreateTime(),"yyyy/MM/dd HH:mm:ss"));
|
|
|
+ if (ObjectUtils.isNotNull(vo.getGoodsType())){
|
|
|
+ switch (vo.getGoodsType()){
|
|
|
+ case 1:
|
|
|
+ vo.setOrderTypeStr("视频");
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ vo.setOrderTypeStr("题库");
|
|
|
+ break;
|
|
|
+ case 6:
|
|
|
+ vo.setOrderTypeStr("直播");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ vo.setOrderTypeStr("其他");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ vo.setPayTypeStr("微信");
|
|
|
+ vo.setOrderPriceStr(vo.getGoodsRealPrice().toString());
|
|
|
+ vo.setOrderReceivedStr(vo.getGoodsReceived().toString());
|
|
|
+ BigDecimal money = vo.getGoodsRealPrice().subtract(vo.getGoodsReceived());
|
|
|
+ vo.setOrderUncollectedStr(money.toString());
|
|
|
+ vo.setBusinessNameStr(String.format("%s-%s%s",vo.getEducationName(),vo.getBusinessName(),vo.getProjectName()));
|
|
|
+ vo.setValidityTime(String.format("%s至%s",DateUtils.timestampToDateFormat(vo.getServiceStartTime(),"yyyy/MM/dd HH:mm:ss"),
|
|
|
+ DateUtils.timestampToDateFormat(vo.getServiceEndTime(),"yyyy/MM/dd HH:mm:ss")));
|
|
|
+ //商品订单状态 -1关闭 0待支付 1已支付 2已退款
|
|
|
+ if (Validator.isEmpty(vo.getRefundStatus())) {
|
|
|
+ vo.setOrderGoodsStatus(-1);
|
|
|
+ vo.setOrderStatusStr("关闭");
|
|
|
+ } else if (vo.getRefundStatus() == 2) {
|
|
|
+ vo.setOrderGoodsStatus(2);
|
|
|
+ vo.setOrderStatusStr("已退款");
|
|
|
+ } else if (vo.getOrderStatus() < 0) {
|
|
|
+ vo.setOrderGoodsStatus(-1);
|
|
|
+ vo.setOrderStatusStr("关闭");
|
|
|
+ } else if (vo.getGoodsPayStatus() == 1) {
|
|
|
+ vo.setOrderGoodsStatus(0);
|
|
|
+ vo.setOrderStatusStr("待支付");
|
|
|
+ } else if (vo.getGoodsPayStatus() > 1) {
|
|
|
+ vo.setOrderGoodsStatus(1);
|
|
|
+ vo.setOrderStatusStr("已支付");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ExcelUtil<OrderListVo> util2 = new ExcelUtil<>(OrderListVo.class);
|
|
|
+ String path2 = userPath + "/"+"订单记录.xlsx";
|
|
|
+ util2.exportEasyExcelUtil(orderListVos, OrderListVo.class,path2);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 5://报名记录
|
|
|
+ iClassGradeUserService.exportListBKUserPeriod(userId,userPath);
|
|
|
+ break;
|
|
|
+ case 6://网课记录
|
|
|
+ iClassGradeUserService.exportListVideoUserPeriod(userId,userPath);
|
|
|
+ break;
|
|
|
+ case 7://题库记录
|
|
|
+ iClassGradeUserService.exportExamStudyList(userId,userPath);
|
|
|
+ break;
|
|
|
+ case 8://直播记录
|
|
|
+ iClassGradeUserService.exportLiveStudyList(userId,userPath);
|
|
|
+ break;
|
|
|
+ case 9://资料记录
|
|
|
+ iClassGradeUserService.exportHandoutsStudyList(userId,userPath);
|
|
|
+ break;
|
|
|
+ case 10://约考记录
|
|
|
+ UserUsbRecordBo recordBo = new UserUsbRecordBo();
|
|
|
+ recordBo.setUserId(user.getUserId());
|
|
|
+ List<UserUsbRecordVo> usbRecordVos = iClassGradeUserService.getListUserSubscribe(recordBo);
|
|
|
+ if (!CollectionUtils.isEmpty(usbRecordVos)){
|
|
|
+ usbRecordVos.forEach(item -> {
|
|
|
+ if (ObjectUtils.isNotNull(item.getApplyTime())){
|
|
|
+ item.setApplyTimeStr(String.format("%s (%s-%s)",DateUtils.timestampToDateFormat(item.getApplyTime(),"yyyy-MM-dd")
|
|
|
+ ,item.getApplyStarTime(),item.getApplyEndTime()));
|
|
|
+ }
|
|
|
+ item.setRealname(user.getRealname());
|
|
|
+ item.setIdCard(EncryptHandler.decrypt(user.getIdCard()));
|
|
|
+ item.setSubscribeStatusStr(item.getSubscribeStatus() == 1 ? "已预约":"已取消");
|
|
|
+ if (item.getSubscribeStatus() == 1){
|
|
|
+ if (ObjectUtils.isNull(item.getApplyTime())){
|
|
|
+ item.setSubscribeStatus(3);
|
|
|
+ item.setSubscribeStatusStr("已过期");
|
|
|
+ }else {
|
|
|
+ Long aLong = DateUtils.dateTimeSec("HH:mm", item.getApplyEndTime());
|
|
|
+ Long time = item.getApplyTime()+aLong;
|
|
|
+ if (DateUtils.getNowTime() > time){
|
|
|
+ item.setSubscribeStatus(3);
|
|
|
+ item.setSubscribeStatusStr("已过期");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ ExcelUtil<UserUsbRecordVo> util3 = new ExcelUtil<>(UserUsbRecordVo.class);
|
|
|
+ String path3 = userPath + "/"+"约考记录.xlsx";
|
|
|
+ util3.exportEasyExcelUtil(usbRecordVos, UserUsbRecordVo.class,path3);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 11://考试记录
|
|
|
+ UserApplyRecordBo applyRecordBo = new UserApplyRecordBo();
|
|
|
+ applyRecordBo.setUserId(user.getUserId());
|
|
|
+ List<UserApplyRecordVo> applyRecordVos = iUserSubscribeService.listUserApply(applyRecordBo);
|
|
|
+ if (!CollectionUtils.isEmpty(applyRecordVos)){
|
|
|
+ applyRecordVos.forEach(item -> {
|
|
|
+ item.setRealname(user.getRealname());
|
|
|
+ item.setIdCard(EncryptHandler.decrypt(user.getIdCard()));
|
|
|
+ if (ObjectUtils.isNotNull(item.getApplyTime())){
|
|
|
+ item.setApplyTimeStr(String.format("%s (%s-%s)",DateUtils.timestampToDateFormat(item.getApplyTime(),"yyyy-MM-dd")
|
|
|
+ ,item.getApplyStarTime(),item.getApplyEndTime()));
|
|
|
+ }
|
|
|
+ item.setApplyNewStr(item.getApplyNew() == 1 ? "是":"否");
|
|
|
+ if (ObjectUtils.isNotNull(item.getExamStatus())){
|
|
|
+ switch (item.getExamStatus()){
|
|
|
+ case 1:
|
|
|
+ item.setExamStatusStr("正常");
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ item.setExamStatusStr("缺考");
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ item.setExamStatusStr("作弊");
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ item.setExamStatusStr("替考");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ item.setExamStatusStr("其他");
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ item.setApplyStatusStr(item.getApplyStatus() == 1 ? "通过":"不通过");
|
|
|
+ if (ObjectUtils.isNotNull(item.getPerformance())){
|
|
|
+ item.setPerformanceStr(String.format("%s分",item.getPerformance()));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ ExcelUtil<UserApplyRecordVo> util4 = new ExcelUtil<>(UserApplyRecordVo.class);
|
|
|
+ String path4 = userPath + "/"+"考试记录.xlsx";
|
|
|
+ util4.exportEasyExcelUtil(applyRecordVos, UserApplyRecordVo.class,path4);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 12://证书/证明
|
|
|
+ iClassGradeUserService.exportCertificateList(userId,userPath);
|
|
|
+ break;
|
|
|
+ case 13://承诺书
|
|
|
+ UserPromiseRecordBo userPromiseRecordBo = new UserPromiseRecordBo();
|
|
|
+ userPromiseRecordBo.setUserId(user.getUserId());
|
|
|
+ List<UserPromiseRecordVo> recordVos = iUserSubscribeService.listPromise(userPromiseRecordBo);
|
|
|
+ if (!CollectionUtils.isEmpty(recordVos)){
|
|
|
+ List<String> paths = new ArrayList<>();
|
|
|
+ recordVos.forEach(item -> {
|
|
|
+ item.setStampStatus(0);
|
|
|
+ if (ObjectUtils.isNotNull(item.getKeyValue())){
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(item.getKeyValue());
|
|
|
+ if (ObjectUtils.isNotNull(jsonObject.get("commitment_electr_signature"))){
|
|
|
+ String json = JSONObject.toJSONString(jsonObject.get("commitment_electr_signature"));
|
|
|
+ JSONObject jsonObject1 = JSONObject.parseObject(json);
|
|
|
+ if (ObjectUtils.isNotNull(jsonObject1) && ObjectUtils.isNotNull(jsonObject1.get("value"))){
|
|
|
+ paths.add(jsonObject1.get("value").toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotNull(jsonObject.get("commitment_seal"))){
|
|
|
+ String json = JSONObject.toJSONString(jsonObject.get("commitment_seal"));
|
|
|
+ JSONObject jsonObject1 = JSONObject.parseObject(json);
|
|
|
+ if (ObjectUtils.isNotNull(jsonObject1) && ObjectUtils.isNotNull(jsonObject1.get("value"))){
|
|
|
+ paths.add(jsonObject1.get("value").toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (!CollectionUtils.isEmpty(paths)){
|
|
|
+ String commitmentPath = userPath + "/承诺书" ;
|
|
|
+ File file2 = new File(commitmentPath);
|
|
|
+ if (!file2.exists()) {
|
|
|
+ file2.mkdirs();
|
|
|
+ }
|
|
|
+ for (String path : paths) {
|
|
|
+ try {
|
|
|
+ InputStream inputStream = ossService.getStreamByObject(path);
|
|
|
+ //写入本地文件
|
|
|
+ String inchPath = commitmentPath + "/"+String.format("承诺书%s.jpg",DateUtils.getNowTime());
|
|
|
+ FileOutputStream fileOutputStream = new FileOutputStream(inchPath);
|
|
|
+ byte[] buffer = new byte[1024];
|
|
|
+ int len = 0;
|
|
|
+ while ((len = inputStream.read(buffer)) != -1) {
|
|
|
+ fileOutputStream.write(buffer, 0, len);
|
|
|
+ }
|
|
|
+ inputStream.close();
|
|
|
+ fileOutputStream.close();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //压缩上传oss
|
|
|
+ String zipPath = zhiyuan + "/zhongzheng-admin/src/main/resources/danganzip" + "/" + DateUtils.getNowTime() + ".zip";
|
|
|
+ File desc = new File(zipPath);
|
|
|
+ if (!desc.getParentFile().exists()) {
|
|
|
+ desc.getParentFile().mkdirs();
|
|
|
+ }
|
|
|
+ if (FileUtils.toZip(zipPath, toPath, true)) {
|
|
|
+ //压缩成功删除文件
|
|
|
+ Path pathStr = Paths.get(toPath);
|
|
|
+ try (Stream<Path> walk = Files.walk(pathStr)) {
|
|
|
+ walk.sorted(Comparator.reverseOrder())
|
|
|
+ .forEach(FileUtils::deleteDirectoryStream);
|
|
|
+
|
|
|
+ //上传oss
|
|
|
+ OssRequest ossRequest = new OssRequest();
|
|
|
+ ossRequest.setGradeId(0L);
|
|
|
+ ossRequest.setUserId(0L);
|
|
|
+ ossRequest.setImageStatus(7);
|
|
|
+ File file1 = new File(zipPath);
|
|
|
+ ossRequest.setFile(FileUtils.getMultipartFile(file1));
|
|
|
+ String upload = ossService.upload(ossRequest);
|
|
|
+ task.setFinishNum(1);
|
|
|
+ task.setTaskStatus(3);//下载完成
|
|
|
+ task.setTaskPath(upload);
|
|
|
+ iSysTaskService.updateById(task);
|
|
|
+ //删除压缩包
|
|
|
+ Path zipPathStr = Paths.get(zipPath);
|
|
|
+ Stream<Path> zipWalk = Files.walk(zipPathStr);
|
|
|
+ zipWalk.sorted(Comparator.reverseOrder())
|
|
|
+ .forEach(FileUtils::deleteDirectoryStream);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("学员档案资料上传oss失败:" + e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public Map<String, Object> accountLogin(UserAppAccountLoginBo bo) {
|
|
|
if(Validator.isEmpty(bo.getAccount())){
|