liujc 1 rok pred
rodič
commit
3d9aa952c0
17 zmenil súbory, kde vykonal 159 pridanie a 76 odobranie
  1. 23 21
      cooleshow-app/src/main/java/com/yonge/cooleshow/admin/task/TaskController.java
  2. 2 1
      cooleshow-app/src/main/java/com/yonge/cooleshow/config/ResourceServerConfig.java
  3. 1 1
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/task/TaskController.java
  4. 1 2
      cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/StudentController.java
  5. 1 2
      cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TeacherController.java
  6. 80 28
      cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java
  7. 1 2
      cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TenantAlbumPurchaseController.java
  8. 2 1
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/handler/BaseAuthenticationFailureEvenHandler.java
  9. 10 4
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/service/DefaultUserDetailsService.java
  10. 10 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java
  11. 1 0
      cooleshow-gateway/gateway-web/src/main/java/com/yonge/gateway/web/config/SwaggerDocumentConfig.java
  12. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  13. 6 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java
  14. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentOrderServiceImpl.java
  15. 2 2
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/StudentController.java
  16. 2 2
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java
  17. 5 6
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenStudentController.java

+ 23 - 21
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/task/TaskController.java

@@ -1,20 +1,7 @@
 package com.yonge.cooleshow.admin.task;
 
 import com.alibaba.fastjson.JSONObject;
-import com.yonge.cooleshow.biz.dal.service.ActivityPlanEvaluationService;
-import com.yonge.cooleshow.biz.dal.service.ActivityPlanService;
-import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
-import com.yonge.cooleshow.biz.dal.service.CustomerServiceBatchSendingService;
-import com.yonge.cooleshow.biz.dal.service.ImGroupService;
-import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
-import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
-import com.yonge.cooleshow.biz.dal.service.PlatformCashAccountRecordService;
-import com.yonge.cooleshow.biz.dal.service.TeacherStyleVideoService;
-import com.yonge.cooleshow.biz.dal.service.TenantUnbindRecordService;
-import com.yonge.cooleshow.biz.dal.service.UserAccountRecordService;
-import com.yonge.cooleshow.biz.dal.service.UserBindingTeacherService;
-import com.yonge.cooleshow.biz.dal.service.UserOrderService;
-import com.yonge.cooleshow.biz.dal.service.UserPaymentCoreService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -80,6 +67,9 @@ public class TaskController extends BaseController {
     private UserPaymentCoreService userPaymentCoreService;
 
     @Autowired
+    private LiveRoomService liveRoomService;
+
+    @Autowired
     private TenantUnbindRecordService tenantUnbindRecordService;
 
     @Autowired
@@ -198,24 +188,23 @@ public class TaskController extends BaseController {
         return HttpResponseResult.succeed();
     }
 
+
     /**
-     * 定时发送平台审核短信 下午5点
+     * 直播间销毁
      */
-    @GetMapping("/sendPlatformAuditMessage")
-    public HttpResponseResult<Object> sendPlatformAuditMessage() {
+    @GetMapping("/destroyLiveRoom")
+    public HttpResponseResult<Object> destroyLiveRoom() {
 
         // 群发消息定时
-        tenantUnbindRecordService.sendPlatformAuditMessage();
+        liveRoomService.destroyLiveRoom();
 
         return HttpResponseResult.succeed();
     }
 
 
-
-
     @GetMapping("/rongyunImport")
     public void rongyunImport() throws Exception {
-         String currentDate = DateUtil.format(DateUtil.addHours(new Date(),-2), DateUtil.YEAR_MONTH_DAY_HOUR);
+        String currentDate = DateUtil.format(DateUtil.addHours(new Date(),-2), DateUtil.YEAR_MONTH_DAY_HOUR);
         Object o = imGroupService.historyGet(currentDate);
         JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(o));
         if (jsonObject.get("code").equals(200)) {
@@ -229,4 +218,17 @@ public class TaskController extends BaseController {
 
         }
     }
+    /**
+     * 定时发送平台审核短信 下午5点
+     */
+    @GetMapping("/sendPlatformAuditMessage")
+    public HttpResponseResult<Object> sendPlatformAuditMessage() {
+
+        // 群发消息定时
+        tenantUnbindRecordService.sendPlatformAuditMessage();
+
+        return HttpResponseResult.succeed();
+    }
+
+
 }

+ 2 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/config/ResourceServerConfig.java

@@ -29,8 +29,9 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 				.authenticationEntryPoint(baseAuthenticationEntryPoint).and()
 				// .authorizeRequests().antMatchers("/task/**").hasIpAddress("0.0.0.0/0")
 				.authorizeRequests()
-				.antMatchers("/task/**").permitAll()
+				.antMatchers("/*/task/**").permitAll()
 				.antMatchers(
+						"/v2/api-docs",
 						"/*/v2/api-docs",
 						"/*/code/*",
 						"/*/api/*",

+ 1 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/task/TaskController.java

@@ -21,7 +21,7 @@ import java.util.List;
  * @Data: 2022/3/28 15:50
  */
 @RestController
-@RequestMapping("/task")
+@RequestMapping("${app-config.url.teacher:}/task")
 @ApiIgnore
 public class TaskController extends BaseController {
     @Autowired

+ 1 - 2
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/StudentController.java

@@ -166,8 +166,7 @@ public class StudentController extends BaseController {
 
     private TenantInfo getTenantInfo() {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        TenantInfo tenantInfo = tenantInfoService.lambdaQuery().eq(TenantInfo::getUserId, sysUser.getId())
-                .last("limit 1").one();
+        TenantInfo tenantInfo = tenantInfoService.getById(sysUser.getTenantId());
         if (tenantInfo == null) {
             throw new BizException("非法请求");
         }

+ 1 - 2
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TeacherController.java

@@ -145,8 +145,7 @@ public class TeacherController extends BaseController {
 
     private TenantInfo getTenantInfo() {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        TenantInfo tenantInfo = tenantInfoService.lambdaQuery().eq(TenantInfo::getUserId, sysUser.getId())
-                .last("limit 1").one();
+        TenantInfo tenantInfo = tenantInfoService.getById(sysUser.getTenantId());
         if (tenantInfo == null) {
             throw new BizException("非法请求");
         }

+ 80 - 28
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java

@@ -1,12 +1,18 @@
 package com.yonge.cooleshow.tenant.controller;
 
+import cn.hutool.core.date.DateTime;
+import com.alibaba.excel.EasyExcel;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.microsvc.toolkit.common.response.paging.PageInfo;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.microsvc.toolkit.common.response.template.R;
+import com.microsvc.toolkit.common.tools.DownloadManager;
 import com.microsvc.toolkit.common.webportal.exception.BizException;
+import com.microsvc.toolkit.middleware.oss.OssPluginContext;
+import com.microsvc.toolkit.middleware.oss.impl.TencentOssPlugin;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.TenantActivationCode;
@@ -32,6 +38,7 @@ import com.yonge.toolset.utils.excel.POIUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -46,7 +53,12 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.File;
 import java.io.OutputStream;
+import java.text.MessageFormat;
+import java.text.ParsePosition;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
@@ -71,6 +83,8 @@ public class TenantActivationCodeController extends BaseController {
 
     @Autowired
     private TenantStaffService tenantStaffService;
+    @Autowired
+    private OssPluginContext ossPluginContext;
 
     @ApiOperation(value = "详情", notes = "机构激活码-根据详情ID查询单条, 传入id")
 //    @GetMapping("/detail/{id}")
@@ -88,6 +102,19 @@ public class TenantActivationCodeController extends BaseController {
         TenantInfo tenantInfo = getTenantInfo();
         query.setTenantId(tenantInfo.getId());
         // 查询数据
+        String activationTime = query.getActivationTime();
+        if (StringUtils.isNotEmpty(activationTime)) {
+            Date parse = new SimpleDateFormat("yyyy-MM").parse(activationTime, new ParsePosition(0));
+            query.setActivationStartTime(parse);
+            Calendar instance = Calendar.getInstance();
+            instance.setTime(parse);
+            instance.add(Calendar.MONTH, 1);
+            instance.add(Calendar.DATE, -1);
+            instance.set(Calendar.HOUR_OF_DAY, 23);
+            instance.set(Calendar.MINUTE, 59);
+            instance.set(Calendar.MILLISECOND, 59);
+            query.setActivationEndTime(instance.getTime());
+        }
         IPage<TenantActivationCodeWrapper.TenantActivationCode> pages =
                 tenantActivationCodeService.selectPage(QueryInfo.getPage(query), query);
         PageInfo<TenantActivationCodeWrapper.TenantActivationCode> pageInfo = QueryInfo.pageInfo(pages,
@@ -124,7 +151,7 @@ public class TenantActivationCodeController extends BaseController {
         }
         boolean update = tenantActivationCodeService.lambdaUpdate()
                 .set(TenantActivationCode::getSendStatus, EActivationCode.WAIT)
-                .eq(TenantActivationCode::getTenantId, id)
+                .eq(TenantActivationCode::getId, id)
                 .eq(TenantActivationCode::getActivationStatus, false)
                 .eq(TenantActivationCode::getSendStatus, EActivationCode.SEND)
                 .update();
@@ -136,7 +163,7 @@ public class TenantActivationCodeController extends BaseController {
 
     @GetMapping("/exportActiveCode")
     @ApiOperation(value = "导出模板")
-    public void exportActiveCode(HttpServletResponse response,String orderNo) {
+    public HttpResponseResult<TenantActivationCodeWrapper.ExportFile> exportActiveCode(HttpServletResponse response, String orderNo) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("请登录");
@@ -158,23 +185,56 @@ public class TenantActivationCodeController extends BaseController {
             throw new BizException("没有可导出数据");
         }
 
-        try (OutputStream outputStream = response.getOutputStream()) {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"激活码", "手机号"}, new String[]{
-                    "activationCode", "activationPhone"}, rows);
-            response.setContentType("application/octet-stream");
-            response.setHeader("Content-Disposition", "attac:wq" +
-                    "hment;filename=active_code-" + DateUtil.getDate(new Date()) + ".xls");
-            workbook.write(outputStream);
-            outputStream.flush();
-        } catch (Exception e) {
-            log.error("导出激活码异常", e);
-        }
+        List<TenantActivationCodeWrapper.ExportTemplate> templates = JSONArray.parseArray(JSON.toJSONString(rows), TenantActivationCodeWrapper.ExportTemplate.class);
+
+
+        TenantActivationCodeWrapper.ExportFile exportFile = generateExportExcelFile(templates, TenantActivationCodeWrapper.ExportTemplate.class, "激活码导出", "激活码");
+        return succeed(exportFile);
     }
 
 
+    private TenantActivationCodeWrapper.ExportFile generateExportExcelFile(List<?> orderExports, Class<?> clazz, String fileName, String sheetName) {
+
+        // OSS上传文件目录
+        String uploadOssPath = MessageFormat.format("excel-download/{0}", DateTime.now().toString("yyyy-MM"));
+
+        // 文件上传下载地址
+        String uploadPath = MessageFormat.format("{0}/{1}-{2}.xlsx", uploadOssPath, fileName, DateTime.now().toString("MMddHHmmss"));
+
+        // 本地文件地址
+        String localPath = DownloadManager.getInstance().path(uploadPath);
+        log.debug("pageExport localPath={}", localPath);
+
+        // 模板文件保存在springboot项目的resources/static下
+        // Resource resource = new ClassPathResource("static/预报名模板导出.xlsx");
+
+        EasyExcel
+                .write(localPath, clazz)
+                //.withTemplate(resource.getStream()) // 利用模板的输出流
+                .sheet(0, sheetName)
+                .doWrite(orderExports);
+
+        // 上传本地文件到OSS服务器
+        String downloadPath = ossPluginContext.getPluginService(TencentOssPlugin.PLUGIN_NAME)
+                .uploadFile(uploadOssPath, new File(localPath));
+        log.debug("pageExport downloadPath={}", downloadPath);
+
+        // 删除本地缓存文件
+        DownloadManager.getInstance().deleteOnExit(localPath);
+
+        // 学生统计下载
+        return TenantActivationCodeWrapper.ExportFile
+                .builder()
+                .fileName(MessageFormat.format("{0}.xlsx", fileName))
+                .downloadPath(downloadPath)
+                .build();
+    }
+
+
+
     @GetMapping("/exportOrderCode")
     @ApiOperation(value = "导出订单激活码模板")
-    public void exportOrderCode(HttpServletResponse response,String orderNo) {
+    public HttpResponseResult<TenantActivationCodeWrapper.ExportFile> exportOrderCode(HttpServletResponse response, String orderNo) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("请登录");
@@ -195,19 +255,12 @@ public class TenantActivationCodeController extends BaseController {
             throw new BizException("没有可导出数据");
         }
 
-        try (OutputStream outputStream = response.getOutputStream()) {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"激活码"}, new String[]{
-                    "activationCode"}, rows);
-            response.setContentType("application/octet-stream");
-            response.setHeader("Content-Disposition", "attac:wq" +
-                    "hment;filename=active_code-" + DateUtil.getDate(new Date()) + ".xls");
-            workbook.write(outputStream);
-            outputStream.flush();
-        } catch (Exception e) {
-            log.error("导出激活码异常", e);
-        }
-    }
+        List<TenantActivationCodeWrapper.ExportTemplate> templates = JSONArray.parseArray(JSON.toJSONString(rows), TenantActivationCodeWrapper.ExportTemplate.class);
 
+
+        TenantActivationCodeWrapper.ExportFile exportFile = generateExportExcelFile(templates, TenantActivationCodeWrapper.ExportTemplate.class, "激活码导出", "激活码");
+        return succeed(exportFile);
+    }
     @PostMapping("/importActiveCode")
     @ApiOperation(value = "导入", notes = "传入file")
     public HttpResponseResult<List<ErrMsg>> importActiveCode(
@@ -268,8 +321,7 @@ public class TenantActivationCodeController extends BaseController {
 
     private TenantInfo getTenantInfo() {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        TenantInfo tenantInfo = tenantInfoService.lambdaQuery().eq(TenantInfo::getUserId, sysUser.getId())
-                .last("limit 1").one();
+        TenantInfo tenantInfo = tenantInfoService.getById(sysUser.getTenantId());
         if (tenantInfo == null) {
             throw new BizException("非法请求");
         }

+ 1 - 2
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TenantAlbumPurchaseController.java

@@ -114,8 +114,7 @@ public class TenantAlbumPurchaseController extends BaseController {
         if (tenantStaff == null) {
             throw new BizException("非法请求");
         }
-        TenantInfo tenantInfo = tenantInfoService.lambdaQuery().eq(TenantInfo::getId, tenantStaff.getTenantId())
-                .last("limit 1").one();
+        TenantInfo tenantInfo = tenantInfoService.getById(sysUser.getTenantId());
         if (tenantInfo == null) {
             throw new BizException("非法请求");
         }

+ 2 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/handler/BaseAuthenticationFailureEvenHandler.java

@@ -13,6 +13,7 @@ import org.springframework.stereotype.Component;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.util.Optional;
 
 @Component
 public class BaseAuthenticationFailureEvenHandler extends ExceptionMappingAuthenticationFailureHandler {
@@ -27,7 +28,7 @@ public class BaseAuthenticationFailureEvenHandler extends ExceptionMappingAuthen
     	
     	int resultCode = HttpStatus.SC_CONFLICT;
     	
-        String message = exception.getLocalizedMessage();
+        String message = Optional.ofNullable(exception.getLocalizedMessage()).orElse("系统异常");
 
         String data = null;
         if (message.equals("Bad credentials")) {

+ 10 - 4
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/service/DefaultUserDetailsService.java

@@ -13,6 +13,7 @@ import com.yonge.cooleshow.common.enums.UserLockFlag;
 import com.yonge.cooleshow.common.security.AuthUser;
 import com.yonge.cooleshow.common.security.SecurityConstants;
 import com.yonge.cooleshow.common.util.WebUtil;
+import com.yonge.toolset.base.result.BaseResult;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.LockedException;
@@ -26,6 +27,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 @Service
 public class DefaultUserDetailsService implements UserDetailsService {
@@ -71,7 +73,8 @@ public class DefaultUserDetailsService implements UserDetailsService {
         }
         //判断用户是否被锁定
         if (SysUserType.STUDENT.getCode().equals(clientId)) {
-            StudentApi data = adminFeignService.getStudent(sysUser.getId()).getData();
+            StudentApi data = Optional.ofNullable(adminFeignService.getStudent(sysUser.getId()))
+                    .map(BaseResult::getData).orElse(null);
             if (data == null) {
                 throw new UsernameNotFoundException("账户不存在");
             }
@@ -79,7 +82,8 @@ public class DefaultUserDetailsService implements UserDetailsService {
                 throw new LockedException("账户被锁定");
             }
         }else if(SysUserType.TEACHER.getCode().equals(clientId)) {
-            TeacherApi data = adminFeignService.getTeacher(sysUser.getId()).getData();
+            TeacherApi data = Optional.ofNullable(adminFeignService.getTeacher(sysUser.getId()))
+                    .map(BaseResult::getData).orElse(null);
             if (data == null) {
                 throw new UsernameNotFoundException("账户不存在");
             }
@@ -87,7 +91,8 @@ public class DefaultUserDetailsService implements UserDetailsService {
                 throw new LockedException("账户被锁定");
             }
         }else if(SysUserType.SYSTEM.getCode().equals(clientId)) {
-            EmployeeApi data = adminFeignService.getEmployee(sysUser.getId()).getData();
+            EmployeeApi data = Optional.ofNullable(adminFeignService.getEmployee(sysUser.getId()))
+                    .map(BaseResult::getData).orElse(null);
             if (data == null) {
                 throw new UsernameNotFoundException("账户不存在");
             }
@@ -95,7 +100,8 @@ public class DefaultUserDetailsService implements UserDetailsService {
                 throw new LockedException("账户被锁定");
             }
         } else if (SysUserType.ORGANIZATION.getCode().equals(clientId)) {
-            TenantWrapper.Staff tenantStaff = adminFeignService.getTenantStaff(sysUser.getId()).getData();
+            TenantWrapper.Staff tenantStaff = Optional.ofNullable(adminFeignService.getTenantStaff(sysUser.getId()))
+                    .map(BaseResult::getData).orElse(null);
             if (tenantStaff == null) {
                 throw new UsernameNotFoundException("账户不存在");
             }

+ 10 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java

@@ -407,5 +407,15 @@ public interface SysConfigConstant {
     /**
      * 机构学生默认头像
      */
+    String TENANT_STUDENT_AVATAR = "tenant_student_avatar";
+
+    /**
+     * 机构老师默认头像
+     */
+    String TENANT_TEACHER_AVATAR = "tenant_teacher_avatar";
+
+    /**
+     * 机构学生默认头像
+     */
     String TENANT_STUDENT_GIRL_AVATAR = "tenant_student_girl_avatar";
 }

+ 1 - 0
cooleshow-gateway/gateway-web/src/main/java/com/yonge/gateway/web/config/SwaggerDocumentConfig.java

@@ -29,6 +29,7 @@ public class SwaggerDocumentConfig implements SwaggerResourcesProvider {
 		resources.add(swaggerResource("MALL_PORTAL服务", "/mall-portal-server/v2/api-docs", "2.0"));
 		resources.add(swaggerResource("网络教室", "/classroom-server/v2/api-docs", "2.0"));
 		resources.add(swaggerResource("TENANT服务", "/tenant-server/v2/api-docs", "2.0"));
+		resources.add(swaggerResource("应用接口", "/app-server/v2/api-docs", "2.0"));
 		return resources;
 	}
 

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java

@@ -600,6 +600,11 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         if (student == null) {
             throw new BizException("学生信息不存在");
         }
+        String avatar = student.getAvatar();
+        if (StringUtils.isEmpty(avatar)) {
+            avatar = sysConfigService.findConfigValue(SysConfigConstant.TENANT_STUDENT_AVATAR);
+            student.setAvatar(avatar);
+        }
         // 解绑
 //        if (Boolean.FALSE.equals(studentInfo.getBindTenant())) {
 //            studentInfo.setTenantId(-1L);
@@ -634,6 +639,12 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         student.setSubjectId(studentInfo.getSubjectId());
         student.setCreateTime(new Date());
         student.setLockFlag(UserLockFlag.NORMAL);
+        String avatar = studentInfo.getAvatar();
+        if (StringUtils.isEmpty(avatar)) {
+            avatar = sysConfigService.findConfigValue(SysConfigConstant.TENANT_STUDENT_AVATAR);
+            student.setAvatar(avatar);
+        }
+
         save(student);
         return true;
     }

+ 6 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java

@@ -8,7 +8,6 @@ import com.google.common.collect.Maps;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.microsvc.toolkit.common.spring.SpringContextHolder;
 import com.microsvc.toolkit.common.tools.ThreadPool;
-import com.microsvc.toolkit.common.webportal.exception.BizException;
 import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
 import com.microsvc.toolkit.middleware.payment.common.api.BasePaymentService;
 import com.microsvc.toolkit.middleware.payment.common.api.PaymentServiceContext;
@@ -26,6 +25,7 @@ import com.yonge.cooleshow.common.enums.*;
 import com.yonge.cooleshow.common.enums.payment.EPaymentChannel;
 import com.yonge.cooleshow.common.enums.payment.EPaymentStatus;
 import com.yonge.cooleshow.common.enums.payment.EPaymentType;
+import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
 import com.yonge.toolset.payment.util.DistributedLock;
 import lombok.extern.slf4j.Slf4j;
@@ -434,6 +434,9 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
 
                                 // 更新订单退款异常信息
                                 userPaymentOrderService.updateById(order);
+
+                                // 订单关闭后的数据处理流程
+                                userOrderService.payCancel(userOrderService.detail(order.getId()));
                             });
                             throw new BizException("查询交易中,请耐心等待!");
                         }
@@ -783,7 +786,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
 
                     // 订单关闭后的数据处理流程
                     userOrderService.payCancel(userOrderService.detail(reqConfig.getMerOrderNo(),null));
-                    throw BizException.from("支付超时");
+                    throw  new BizException("支付超时");
                 }
 
                 // 返回支付配置信息
@@ -809,7 +812,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
             PaymentOrder paymentOrder = JSON.parseObject(config.jsonString(), PaymentOrder.class);
             PaymentReq paymentReq = paymentServiceContext.getPaymentService(userPaymentOrder.getPaymentVendor()).pay(paymentOrder);
             if (Objects.isNull(paymentReq)) {
-                throw BizException.from("生成支付参数异常");
+                throw new BizException("生成支付参数异常");
             }
 
             // 更新订单流水号

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentOrderServiceImpl.java

@@ -118,7 +118,7 @@ public class UserPaymentOrderServiceImpl  implements UserPaymentOrderService {
     public UserPaymentOrderWrapper.UserPaymentOrder getUserPaymentOrderByUserId(Long userId, String merOrderNo) {
 
         UserOrder userOrder = userOrderService.lambdaQuery()
-                .eq(UserOrder::getUserId, userId)
+//                .eq(UserOrder::getUserId, userId)
                 .eq(UserOrder::getOrderNo, merOrderNo)
                 .last("LIMIT 1")
                 .one();

+ 2 - 2
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/StudentController.java

@@ -83,10 +83,10 @@ public class StudentController extends BaseController {
 
         Map<Long, List<TenantActivationCode>> groupByUserId = new HashMap<>();
         if (!rows.isEmpty() && query.getTenantAlbumPurchaseId() != null) {
-            List<Long> studentIdList = rows.stream().map(Student::getUserId).collect(Collectors.toList());
+            List<String> studentPhones = rows.stream().map(StudentVo::getPhone).collect(Collectors.toList());
              groupByUserId = tenantActivationCodeService.lambdaQuery()
                     .eq(TenantActivationCode::getId, query.getTenantAlbumPurchaseId())
-                    .in(TenantActivationCode::getActivationUserId, studentIdList)
+                    .in(TenantActivationCode::getActivationPhone, studentPhones)
                     .list().stream().collect(Collectors.groupingBy(TenantActivationCode::getActivationUserId));
         }
 

+ 2 - 2
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java

@@ -110,7 +110,7 @@ public class TenantActivationCodeController extends BaseController {
             instance.set(Calendar.HOUR_OF_DAY, 23);
             instance.set(Calendar.MINUTE, 59);
             instance.set(Calendar.MILLISECOND, 59);
-            query.setActivationEndTime(parse);
+            query.setActivationEndTime(instance.getTime());
         }
         IPage<TenantActivationCodeWrapper.TenantActivationCode> pages =
                 tenantActivationCodeService.selectPage(QueryInfo.getPage(query), query);
@@ -148,7 +148,7 @@ public class TenantActivationCodeController extends BaseController {
         }
         boolean update = tenantActivationCodeService.lambdaUpdate()
                 .set(TenantActivationCode::getSendStatus, EActivationCode.WAIT)
-                .eq(TenantActivationCode::getTenantId, id)
+                .eq(TenantActivationCode::getId, id)
                 .eq(TenantActivationCode::getActivationStatus, false)
                 .eq(TenantActivationCode::getSendStatus, EActivationCode.SEND)
                 .update();

+ 5 - 6
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/open/OpenStudentController.java

@@ -142,12 +142,11 @@ public class OpenStudentController extends BaseController {
         }
 
         // 配置头像
-        if (StringUtils.isEmpty(student.getAvatar())) {
-            String avatar;
-            if (student.getGender().equals(1)) {
-                avatar = sysConfigService.findConfigValue(SysConfigConstant.TENANT_STUDENT_BOY_AVATAR);
-            } else {
-                avatar = sysConfigService.findConfigValue(SysConfigConstant.TENANT_STUDENT_GIRL_AVATAR);
+        String avatar = student.getAvatar();
+        if (StringUtils.isEmpty(avatar)) {
+            if (StringUtils.isEmpty(avatar)) {
+                avatar = sysConfigService.findConfigValue(SysConfigConstant.TENANT_STUDENT_AVATAR);
+                student.setAvatar(avatar);
             }
             student.setAvatar(avatar);
         }