Browse Source

merge: 解决分页工具导致的冲突

liujunchi 3 years ago
parent
commit
4167e45a15
100 changed files with 2218 additions and 1241 deletions
  1. 0 15
      cooleshow-payment/payment-api/pom.xml
  2. 0 9
      cooleshow-payment/payment-api/src/main/java/com/yonge/cooleshow/payment/dto/OrderDto.java
  3. 0 22
      cooleshow-payment/payment-api/src/main/java/com/yonge/cooleshow/payment/dto/OrderPayDto.java
  4. 0 92
      cooleshow-payment/payment-server/pom.xml
  5. 0 18
      cooleshow-payment/payment-server/src/main/java/com/yonge/cooleshow/payment/PaymentApplication.java
  6. 0 58
      cooleshow-payment/payment-server/src/main/java/com/yonge/cooleshow/payment/controller/PaymentController.java
  7. 0 37
      cooleshow-payment/payment-server/src/main/java/com/yonge/cooleshow/payment/exception/ThirdpartyException.java
  8. 0 243
      cooleshow-payment/payment-server/src/main/java/com/yonge/cooleshow/payment/util/MessageFormatter.java
  9. 0 14
      cooleshow-payment/payment-server/src/main/resources/bootstrap-dev.properties
  10. 0 28
      cooleshow-payment/pom.xml
  11. 3 4
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseHomeworkController.java
  12. 3 4
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseScheduleRepliedController.java
  13. 5 5
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicAlbumController.java
  14. 3 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java
  15. 3 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicTagController.java
  16. 0 86
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/OrderDetailController.java
  17. 3 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentAttendanceController.java
  18. 3 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentController.java
  19. 3 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentCourseHomeworkController.java
  20. 3 4
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthEntryRecordController.java
  21. 3 7
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthMusicianRecordController.java
  22. 12 17
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java
  23. 3 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherWithdrawalController.java
  24. 3 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountController.java
  25. 3 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountRecordController.java
  26. 3 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserBankCardController.java
  27. 19 19
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserOrderController.java
  28. 19 19
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserOrderRefundsController.java
  29. 3 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VipCardRecordController.java
  30. 5 0
      cooleshow-user/user-biz/pom.xml
  31. 2 11
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/config/HuifuConfiguration.java
  32. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/constant/CourseConstant.java
  33. 45 15
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/constant/SysConfigConstant.java
  34. 13 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderDao.java
  35. 5 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderDetailDao.java
  36. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderPaymentDao.java
  37. 5 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderRefundsDao.java
  38. 3 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDetailDao.java
  39. 65 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/CheckLiveCourseTimeDto.java
  40. 12 33
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/LiveCourseGroupDto.java
  41. 70 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderPayReq.java
  42. 137 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java
  43. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherSearch.java
  44. 43 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseTimeEntity.java
  45. 1 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImRoomMessage.java
  46. 69 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImUserStateSync.java
  47. 23 78
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrder.java
  48. 3 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderDetail.java
  49. 126 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderPayment.java
  50. 3 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderRefunds.java
  51. 1 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroupDetail.java
  52. 4 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/CacheNameEnum.java
  53. 42 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/OrderStatusEnum.java
  54. 43 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/OrderTypeEnum.java
  55. 40 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/PayChannelEnum.java
  56. 22 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/props/HuifuProperties.java
  57. 38 15
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/PaymentSdk.java
  58. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/req/DeviceInfo.java
  59. 55 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/req/DivMember.java
  60. 5 40
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/req/PaymentConfirmParam.java
  61. 168 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/req/PaymentReq.java
  62. 9 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java
  63. 48 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  64. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/LiveRoomService.java
  65. 0 29
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/OrderService.java
  66. 5 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderDetailService.java
  67. 14 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderPaymentService.java
  68. 5 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderRefundsService.java
  69. 54 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java
  70. 5 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupDetailService.java
  71. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java
  72. 19 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VipCardRecordService.java
  73. 186 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  74. 12 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  75. 71 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java
  76. 3 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java
  77. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  78. 0 27
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/OrderDetailServiceImpl.java
  79. 0 27
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/OrderRefundsServiceImpl.java
  80. 0 27
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/OrderServiceImpl.java
  81. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  82. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderDetailServiceImpl.java
  83. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderPaymentServiceImpl.java
  84. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderRefundsServiceImpl.java
  85. 267 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  86. 17 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupDetailServiceImpl.java
  87. 34 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  88. 15 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VipCardRecordServiceImpl.java
  89. 0 86
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/support/Condition.java
  90. 50 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/support/PageUtil.java
  91. 0 14
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/OrderDetailVo.java
  92. 0 14
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/OrderRefundsVo.java
  93. 0 14
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/OrderVo.java
  94. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherVo.java
  95. 14 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderDetailVo.java
  96. 14 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderRefundsVo.java
  97. 24 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderVo.java
  98. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonPurchaseStudent.java
  99. 37 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonVo.java
  100. 33 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/OrderCheckRes.java

+ 0 - 15
cooleshow-payment/payment-api/pom.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>cooleshow-payment</artifactId>
-        <groupId>com.yonge.cooleshow</groupId>
-        <version>1.0</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>payment-api</artifactId>
-
-
-</project>

+ 0 - 9
cooleshow-payment/payment-api/src/main/java/com/yonge/cooleshow/payment/dto/OrderDto.java

@@ -1,9 +0,0 @@
-package com.yonge.cooleshow.payment.dto;
-
-/**
- * 订单对象
- * @Author: liweifan
- * @Data: 2022/3/11 18:46
- */
-public class OrderDto {
-}

+ 0 - 22
cooleshow-payment/payment-api/src/main/java/com/yonge/cooleshow/payment/dto/OrderPayDto.java

@@ -1,22 +0,0 @@
-package com.yonge.cooleshow.payment.dto;
-
-/**
- * @Author: liweifan
- * @Data: 2022/3/11 18:45
- */
-public class OrderPayDto {
-    /***
-     * 订单对象
-     * @author liweifan
-     * @updateTime 2022/3/11 18:46
-     */
-    private OrderDto orderDto;
-
-    public OrderDto getOrderDto() {
-        return orderDto;
-    }
-
-    public void setOrderDto(OrderDto orderDto) {
-        this.orderDto = orderDto;
-    }
-}

+ 0 - 92
cooleshow-payment/payment-server/pom.xml

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>cooleshow-payment</artifactId>
-        <groupId>com.yonge.cooleshow</groupId>
-        <version>1.0</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>payment-server</artifactId>
-    <groupId>com.yonge.cooleshow</groupId>
-    <version>1.0</version>
-    <name>payment-server</name>
-
-    <properties>
-        <java.version>1.8</java.version>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <fastjson.version>1.2.76</fastjson.version> <!-- fastjson -->
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-security</artifactId>
-        </dependency>
-
-        <!-- swagger-spring-boot -->
-        <dependency>
-            <groupId>com.spring4all</groupId>
-            <artifactId>swagger-spring-boot-starter</artifactId>
-        </dependency>
-
-        <!-- <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>druid-spring-boot-starter</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.yonge.toolset</groupId>
-            <artifactId>audit-log</artifactId>
-        </dependency> -->
-
-        <dependency>
-            <groupId>com.github.whvcse</groupId>
-            <artifactId>easy-captcha</artifactId>
-            <version>1.6.2</version>
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>fastjson</artifactId>
-            <version>${fastjson.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.huifu.adapay</groupId>
-            <artifactId>adapay-java-sdk</artifactId>
-            <version>1.2.10</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.yonge.cooleshow</groupId>
-            <artifactId>payment-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>

+ 0 - 18
cooleshow-payment/payment-server/src/main/java/com/yonge/cooleshow/payment/PaymentApplication.java

@@ -1,18 +0,0 @@
-package com.yonge.cooleshow.payment;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-
-/**
- * @Author: liweifan
- * @Data: 2022/3/11 15:34
- */
-@SpringBootApplication
-@EnableDiscoveryClient
-public class PaymentApplication {
-    public static void main(String[] args) {
-        SpringApplication.run(PaymentApplication.class, args);
-    }
-
-}

+ 0 - 58
cooleshow-payment/payment-server/src/main/java/com/yonge/cooleshow/payment/controller/PaymentController.java

@@ -1,58 +0,0 @@
-package com.yonge.cooleshow.payment.controller;
-
-import com.huifu.adapay.core.AdapayCore;
-import com.huifu.adapay.core.util.AdapaySign;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * @Author: liweifan
- * @Data: 2022/3/11 18:16
- */
-@RestController
-@RequestMapping("/payment")
-@Api(value = "付款接口", tags = "付款接口")
-public class PaymentController {
-
-    @PostMapping("/orderPay")
-    public void orderPay() {
-
-    }
-
-    /***
-     * 汇付回调
-     * 问题:1、成功失败需要回执什么信息 2、回调url地址是否需要加入白名单
-     * @author liweifan
-     * @param: request
-     * @updateTime 2022/3/11 18:35
-     */
-    @PostMapping("/callback")
-    public void callback(HttpServletRequest request) {
-        try {
-            //验签传参data
-            String data = request.getParameter("data");
-            //验签传参sign
-            String sign = request.getParameter("sign");
-            //验签标记
-            boolean checkSign;
-            //验签传参publicKey
-            String publicKey = AdapayCore.PUBLIC_KEY;
-            //验签
-            checkSign = AdapaySign.verifySign(data, sign, publicKey);
-            if(checkSign){
-                //验签成功逻辑
-                System.out.println("成功返回数据data:"+data);
-            }else {
-                //验签失败逻辑
-            }
-        }catch (Exception e){
-        }
-        return ;
-    }
-}

+ 0 - 37
cooleshow-payment/payment-server/src/main/java/com/yonge/cooleshow/payment/exception/ThirdpartyException.java

@@ -1,37 +0,0 @@
-package com.yonge.cooleshow.payment.exception;
-
-
-import com.yonge.cooleshow.payment.util.MessageFormatter;
-
-public class ThirdpartyException extends RuntimeException {
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = -4562885563376566463L;
-
-	public ThirdpartyException() {
-		super();
-	}
-
-	public ThirdpartyException(String message) {
-		super(message);
-	}
-
-	public ThirdpartyException(Throwable cause) {
-		super(cause);
-	}
-
-	public ThirdpartyException(String message, Throwable cause) {
-		super(message, cause);
-	}
-
-	public ThirdpartyException(String message, Object... arguments) {
-		super(MessageFormatter.arrayFormat(message, arguments));
-	}
-
-	public ThirdpartyException(String message, Throwable cause, Object... args) {
-		super(MessageFormatter.arrayFormat(message, args), cause);
-	}
-
-}

+ 0 - 243
cooleshow-payment/payment-server/src/main/java/com/yonge/cooleshow/payment/util/MessageFormatter.java

@@ -1,243 +0,0 @@
-package com.yonge.cooleshow.payment.util;
-
-import java.util.HashMap;
-import java.util.Map;
-
-final public class MessageFormatter {
-	static final char DELIM_START = '{';
-	static final char DELIM_STOP = '}';
-	static final String DELIM_STR = "{}";
-	private static final char ESCAPE_CHAR = '\\';
-
-	/**
-	 * 将含有{}的字符串词用后面的变量替换
-	 * @param messagePattern
-	 * @param argArray
-	 * @return String
-	 */
-	final public static String arrayFormat(String messagePattern, Object... argArray) {
-		if (messagePattern == null) {
-			return "";
-		}
-		if (argArray == null) {
-			return messagePattern;
-		}
-		int i = 0;
-		int j;
-		StringBuffer sbuf = new StringBuffer(messagePattern.length() + 50);
-		int L;
-		for (L = 0; L < argArray.length; L++) {
-			j = messagePattern.indexOf(DELIM_STR, i);
-			if (j == -1) {
-				// no more variables
-				if (i == 0) { // this is a simple string
-					return messagePattern;
-				} else { // add the tail string which contains no variables and
-							// return
-					// the result.
-					sbuf.append(messagePattern.substring(i, messagePattern.length()));
-					return sbuf.toString();
-				}
-			} else {
-				if (isEscapedDelimeter(messagePattern, j)) {
-					if (!isDoubleEscaped(messagePattern, j)) {
-						L--; // DELIM_START was escaped, thus should not be
-								// incremented
-						sbuf.append(messagePattern.substring(i, j - 1));
-						sbuf.append(DELIM_START);
-						i = j + 1;
-					} else {
-						// The escape character preceding the delimiter start is
-						// itself escaped: "abc x:\\{}"
-						// we have to consume one backward slash
-						sbuf.append(messagePattern.substring(i, j - 1));
-						deeplyAppendParameter(sbuf, argArray[L], new HashMap<Object, Object>());
-						i = j + 2;
-					}
-				} else {
-					// normal case
-					sbuf.append(messagePattern.substring(i, j));
-					deeplyAppendParameter(sbuf, argArray[L], new HashMap<Object, Object>());
-					i = j + 2;
-				}
-			}
-		}
-		// append the characters following the last {} pair.
-		sbuf.append(messagePattern.substring(i, messagePattern.length()));
-		if (L < argArray.length - 1) {
-			return sbuf.toString();
-		} else {
-			return sbuf.toString();
-		}
-	}
-
-	// special treatment of array values was suggested by 'lizongbo'
-	private static void deeplyAppendParameter(StringBuffer sbuf, Object o, Map<Object, Object> seenMap) {
-		if (o == null) {
-			sbuf.append("null");
-			return;
-		}
-		if (!o.getClass().isArray()) {
-			safeObjectAppend(sbuf, o);
-		} else {
-			// check for primitive array types because they
-			// unfortunately cannot be cast to Object[]
-			if (o instanceof boolean[]) {
-				booleanArrayAppend(sbuf, (boolean[]) o);
-			} else if (o instanceof byte[]) {
-				byteArrayAppend(sbuf, (byte[]) o);
-			} else if (o instanceof char[]) {
-				charArrayAppend(sbuf, (char[]) o);
-			} else if (o instanceof short[]) {
-				shortArrayAppend(sbuf, (short[]) o);
-			} else if (o instanceof int[]) {
-				intArrayAppend(sbuf, (int[]) o);
-			} else if (o instanceof long[]) {
-				longArrayAppend(sbuf, (long[]) o);
-			} else if (o instanceof float[]) {
-				floatArrayAppend(sbuf, (float[]) o);
-			} else if (o instanceof double[]) {
-				doubleArrayAppend(sbuf, (double[]) o);
-			} else {
-				objectArrayAppend(sbuf, (Object[]) o, seenMap);
-			}
-		}
-	}
-
-	private static void safeObjectAppend(StringBuffer sbuf, Object o) {
-		try {
-			String oAsString = o.toString();
-			sbuf.append(oAsString);
-		} catch (Throwable t) {
-			sbuf.append("[FAILED toString()]");
-		}
-
-	}
-
-	private static void objectArrayAppend(StringBuffer sbuf, Object[] a, Map<Object, Object> seenMap) {
-		sbuf.append('[');
-		if (!seenMap.containsKey(a)) {
-			seenMap.put(a, null);
-			final int len = a.length;
-			for (int i = 0; i < len; i++) {
-				deeplyAppendParameter(sbuf, a[i], seenMap);
-				if (i != len - 1)
-					sbuf.append(", ");
-			}
-			// allow repeats in siblings
-			seenMap.remove(a);
-		} else {
-			sbuf.append("...");
-		}
-		sbuf.append(']');
-	}
-
-	private static void booleanArrayAppend(StringBuffer sbuf, boolean[] a) {
-		sbuf.append('[');
-		final int len = a.length;
-		for (int i = 0; i < len; i++) {
-			sbuf.append(a[i]);
-			if (i != len - 1)
-				sbuf.append(", ");
-		}
-		sbuf.append(']');
-	}
-
-	private static void byteArrayAppend(StringBuffer sbuf, byte[] a) {
-		sbuf.append('[');
-		final int len = a.length;
-		for (int i = 0; i < len; i++) {
-			sbuf.append(a[i]);
-			if (i != len - 1)
-				sbuf.append(", ");
-		}
-		sbuf.append(']');
-	}
-
-	private static void charArrayAppend(StringBuffer sbuf, char[] a) {
-		sbuf.append('[');
-		final int len = a.length;
-		for (int i = 0; i < len; i++) {
-			sbuf.append(a[i]);
-			if (i != len - 1)
-				sbuf.append(", ");
-		}
-		sbuf.append(']');
-	}
-
-	private static void shortArrayAppend(StringBuffer sbuf, short[] a) {
-		sbuf.append('[');
-		final int len = a.length;
-		for (int i = 0; i < len; i++) {
-			sbuf.append(a[i]);
-			if (i != len - 1)
-				sbuf.append(", ");
-		}
-		sbuf.append(']');
-	}
-
-	private static void intArrayAppend(StringBuffer sbuf, int[] a) {
-		sbuf.append('[');
-		final int len = a.length;
-		for (int i = 0; i < len; i++) {
-			sbuf.append(a[i]);
-			if (i != len - 1)
-				sbuf.append(", ");
-		}
-		sbuf.append(']');
-	}
-
-	private static void longArrayAppend(StringBuffer sbuf, long[] a) {
-		sbuf.append('[');
-		final int len = a.length;
-		for (int i = 0; i < len; i++) {
-			sbuf.append(a[i]);
-			if (i != len - 1)
-				sbuf.append(", ");
-		}
-		sbuf.append(']');
-	}
-
-	private static void floatArrayAppend(StringBuffer sbuf, float[] a) {
-		sbuf.append('[');
-		final int len = a.length;
-		for (int i = 0; i < len; i++) {
-			sbuf.append(a[i]);
-			if (i != len - 1)
-				sbuf.append(", ");
-		}
-		sbuf.append(']');
-	}
-
-	private static void doubleArrayAppend(StringBuffer sbuf, double[] a) {
-		sbuf.append('[');
-		final int len = a.length;
-		for (int i = 0; i < len; i++) {
-			sbuf.append(a[i]);
-			if (i != len - 1)
-				sbuf.append(", ");
-		}
-		sbuf.append(']');
-	}
-
-	final static boolean isEscapedDelimeter(String messagePattern, int delimeterStartIndex) {
-
-		if (delimeterStartIndex == 0) {
-			return false;
-		}
-		char potentialEscape = messagePattern.charAt(delimeterStartIndex - 1);
-		if (potentialEscape == ESCAPE_CHAR) {
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	final static boolean isDoubleEscaped(String messagePattern, int delimeterStartIndex) {
-		if (delimeterStartIndex >= 2 && messagePattern.charAt(delimeterStartIndex - 2) == ESCAPE_CHAR) {
-			return true;
-		} else {
-			return false;
-		}
-	}
-}

+ 0 - 14
cooleshow-payment/payment-server/src/main/resources/bootstrap-dev.properties

@@ -1,14 +0,0 @@
-#\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.1.200:8848
-#\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=6f8374a9-598f-4889-bb17-476070ffb8de
-#\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
-spring.cloud.nacos.config.group=DEFAULT_GROUP
-#\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
-spring.cloud.nacos.config.prefix=payment
-#\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
-spring.cloud.nacos.config.file-extension=yaml
-#\u662f\u5426\u52a8\u6001\u5237\u65b0
-spring.cloud.nacos.config.refresh.enabled=true
-#\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
-spring.cloud.nacos.config.enabled=true

+ 0 - 28
cooleshow-payment/pom.xml

@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>com.yonge.cooleshow</groupId>
-        <artifactId>cooleshow</artifactId>
-        <version>1.0</version>
-    </parent>
-
-    <groupId>com.yonge.cooleshow</groupId>
-    <artifactId>cooleshow-payment</artifactId>
-    <version>1.0</version>
-    <packaging>pom</packaging>
-    <name>cooleshow-payment</name>
-
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
-
-    <modules>
-        <module>payment-server</module>
-        <module>payment-api</module>
-    </modules>
-
-</project>

+ 3 - 4
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseHomeworkController.java

@@ -1,9 +1,8 @@
 package com.yonge.cooleshow.admin.controller;
 
-import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -42,8 +41,8 @@ public class CourseHomeworkController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入courseHomeworkSearch")
     public HttpResponseResult<PageInfo<CourseHomeworkVo>> page(@RequestBody CourseHomeworkSearch query) {
-		IPage<CourseHomeworkVo> pages = courseHomeworkService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
+		IPage<CourseHomeworkVo> pages = courseHomeworkService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
 	}
     
     /**

+ 3 - 4
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseScheduleRepliedController.java

@@ -1,9 +1,8 @@
 package com.yonge.cooleshow.admin.controller;
 
-import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -42,8 +41,8 @@ public class CourseScheduleRepliedController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入courseScheduleRepliedSearch")
     public HttpResponseResult<PageInfo<CourseScheduleRepliedVo>> page(@RequestBody CourseScheduleRepliedSearch query) {
-		IPage<CourseScheduleRepliedVo> pages = courseScheduleRepliedService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
+		IPage<CourseScheduleRepliedVo> pages = courseScheduleRepliedService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
 	}
     
     /**

+ 5 - 5
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicAlbumController.java

@@ -7,7 +7,7 @@ import javax.validation.Valid;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumDetailSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.enums.StateEnum;
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.AlbumDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -92,8 +92,8 @@ public class MusicAlbumController extends BaseController {
         if (sysUser == null) {
             return failed("用户信息获取失败");
         }
-        IPage<MusicAlbumVo> iPage = musicAlbumService.selectPage(Condition.getPage(query),query);
-        return succeed(Condition.pageInfo(iPage));
+        IPage<MusicAlbumVo> iPage = musicAlbumService.selectPage(PageUtil.getPage(query),query);
+        return succeed(PageUtil.pageInfo(iPage));
     }
 
     /**
@@ -117,7 +117,7 @@ public class MusicAlbumController extends BaseController {
     public HttpResponseResult<AlbumDetailVo> detail(@Valid @RequestBody MusicAlbumDetailSearch query) {
 
         query.setType(2);
-        AlbumDetailVo albumDetailVo = musicAlbumService.detail(Condition.getPage(query),query);
+        AlbumDetailVo albumDetailVo = musicAlbumService.detail(PageUtil.getPage(query),query);
         return succeed(albumDetailVo);
     }
 
@@ -131,7 +131,7 @@ public class MusicAlbumController extends BaseController {
 
         query.setType(1);
         query.setState(StateEnum.ENABLE);
-        AlbumDetailVo albumDetailVo = musicAlbumService.detail(Condition.getPage(query),query);
+        AlbumDetailVo albumDetailVo = musicAlbumService.detail(PageUtil.getPage(query),query);
         return succeed(albumDetailVo);
     }
 

+ 3 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java

@@ -13,8 +13,8 @@ import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
 import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.StateEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
-import com.yonge.cooleshow.biz.dal.support.Condition;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -145,8 +145,8 @@ public class MusicSheetController extends BaseController {
             return failed("用户信息获取失败");
         }
 
-        IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(musicSheetVoIPage));
+        IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(musicSheetVoIPage));
     }
 
 

+ 3 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicTagController.java

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.MusicTagSaveDto;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicTagSearch;
 import com.yonge.cooleshow.biz.dal.service.MusicTagService;
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.MusicTagVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -42,8 +42,8 @@ public class MusicTagController extends BaseController {
     @GetMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入musicTag")
     public HttpResponseResult<PageInfo<MusicTagVo>> page(MusicTagSearch query) {
-		IPage<MusicTagVo> pages = musicTagService.selectPage(Condition.getPage(query), query);
-		return succeed(Condition.pageInfo(pages));
+		IPage<MusicTagVo> pages = musicTagService.selectPage(PageUtil.getPage(query), query);
+		return succeed(PageUtil.pageInfo(pages));
 	}
 
 

+ 0 - 86
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/OrderDetailController.java

@@ -1,86 +0,0 @@
-package com.yonge.cooleshow.admin.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-
-import com.yonge.cooleshow.biz.dal.support.Condition;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.common.page.PageInfo;
-import com.yonge.toolset.utils.string.StringUtil;
-import io.swagger.annotations.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-
-import com.yonge.cooleshow.biz.dal.vo.OrderDetailVo;
-import com.yonge.cooleshow.biz.dal.dto.search.OrderDetailSearch;
-import com.yonge.cooleshow.biz.dal.entity.OrderDetail;
-import com.yonge.cooleshow.biz.dal.service.OrderDetailService;
-
-@RestController
-@RequestMapping("/orderDetail")
-@Api(value = "平台订单表", tags = "平台订单表")
-public class OrderDetailController extends BaseController {
-
-    @Autowired
-    private OrderDetailService orderDetailService;
-
-	/**
-     * 查询单条
-     */
-    @GetMapping("/detail/{id}")
-    @ApiOperation(value = "详情", notes = "传入id")
-    public HttpResponseResult<OrderDetailVo> detail(@PathVariable("id") Long id) {
-    	return succeed(orderDetailService.detail(id));
-	}
-    
-    /**
-     * 查询分页
-     */
-    @PostMapping("/page")
-    @ApiOperation(value = "查询分页", notes = "传入orderDetailSearch")
-    public HttpResponseResult<PageInfo<OrderDetailVo>> page(@RequestBody OrderDetailSearch query) {
-		IPage<OrderDetailVo> pages = orderDetailService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
-	}
-    
-    /**
-	 * 新增
-	 */
-	@PostMapping("/save")
-	@ApiOperation(value = "新增", notes = "传入orderDetail")
-	public HttpResponseResult save(@Valid @RequestBody OrderDetail orderDetail) {
-    	return status(orderDetailService.save(orderDetail));
-	}
-    
-    /**
-	 * 修改
-	 */
-	@PostMapping("/update")
-	@ApiOperation(value = "修改", notes = "传入orderDetail")
-	public HttpResponseResult update(@Valid @RequestBody OrderDetail orderDetail) {
-        return status(orderDetailService.updateById(orderDetail));
-	}
-    
-    /**
-	 * 新增或修改
-	 */
-    @PostMapping("/submit")
-    @ApiOperation(value = "新增或修改", notes = "传入orderDetail")
-	public HttpResponseResult submit(@Valid @RequestBody OrderDetail orderDetail) {
-        return status(orderDetailService.saveOrUpdate(orderDetail));
-    }
-
- 	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        if (StringUtil.isEmpty(ids)) {
-			return failed("参数不能为空");
-		}
-		return status(orderDetailService.removeByIds(StringUtil.toLongList(ids)));
-	}
-}

+ 3 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentAttendanceController.java

@@ -2,7 +2,7 @@ package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -41,8 +41,8 @@ public class StudentAttendanceController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入studentAttendanceSearch")
     public HttpResponseResult<PageInfo<StudentAttendanceVo>> page(@RequestBody StudentAttendanceSearch query) {
-		IPage<StudentAttendanceVo> pages = studentAttendanceService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
+		IPage<StudentAttendanceVo> pages = studentAttendanceService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
 	}
     
     /**

+ 3 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentController.java

@@ -3,7 +3,7 @@ package com.yonge.cooleshow.admin.controller;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -37,8 +37,8 @@ public class StudentController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入student")
     public HttpResponseResult<PageInfo<StudentVo>> page(@RequestBody StudentSearch query) {
-		IPage<StudentVo> pages = studentService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
+		IPage<StudentVo> pages = studentService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
 	}
 
 }

+ 3 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentCourseHomeworkController.java

@@ -2,7 +2,7 @@ package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -41,8 +41,8 @@ public class StudentCourseHomeworkController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入studentCourseHomeworkSearch")
     public HttpResponseResult<PageInfo<StudentCourseHomeworkVo>> page(@RequestBody StudentCourseHomeworkSearch query) {
-		IPage<StudentCourseHomeworkVo> pages = studentCourseHomeworkService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
+		IPage<StudentCourseHomeworkVo> pages = studentCourseHomeworkService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
 	}
     
     /**

+ 3 - 4
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthEntryRecordController.java

@@ -6,8 +6,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.req.AuthOperaReq;
 import com.yonge.cooleshow.biz.dal.dto.search.AuthEntryRecordSearch;
 import com.yonge.cooleshow.biz.dal.service.TeacherAuthEntryRecordService;
-import com.yonge.cooleshow.biz.dal.support.Condition;
-import com.yonge.cooleshow.biz.dal.support.Query;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -47,8 +46,8 @@ public class TeacherAuthEntryRecordController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入teacherAuthEntryRecord")
     public HttpResponseResult<PageInfo<TeacherAuthEntryRecordVo>> page(@RequestBody AuthEntryRecordSearch search) {
-        IPage<TeacherAuthEntryRecordVo> pages = teacherAuthEntryRecordService.selectPage(Condition.getPage(search), search);
-        return succeed(Condition.pageInfo(pages));
+        IPage<TeacherAuthEntryRecordVo> pages = teacherAuthEntryRecordService.selectPage(PageUtil.getPage(search), search);
+        return succeed(PageUtil.pageInfo(pages));
     }
 
     @PostMapping("/doAuth")

+ 3 - 7
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthMusicianRecordController.java

@@ -5,12 +5,9 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.req.AuthOperaReq;
 import com.yonge.cooleshow.biz.dal.dto.search.AuthEntryRecordSearch;
-import com.yonge.cooleshow.biz.dal.entity.TeacherAuthMusicianRecord;
 import com.yonge.cooleshow.biz.dal.service.TeacherAuthMusicianRecordService;
-import com.yonge.cooleshow.biz.dal.support.Condition;
-import com.yonge.cooleshow.biz.dal.support.Query;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.MusicianAuthEntryRecordVo;
-import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -20,7 +17,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import java.util.List;
 
 @RestController
 @RequestMapping("/teacherAuthMusicianRecord")
@@ -51,8 +47,8 @@ public class TeacherAuthMusicianRecordController extends BaseController {
 	@PostMapping("/page")
 	@ApiOperation(value = "查询分页", notes = "传入AuthEntryRecordSearch")
 	public HttpResponseResult<PageInfo<MusicianAuthEntryRecordVo>> page(@RequestBody AuthEntryRecordSearch query) {
-		IPage<MusicianAuthEntryRecordVo> pages = teacherAuthMusicianRecordService.selectPage(Condition.getPage(query), query);
-		return succeed(Condition.pageInfo(pages));
+		IPage<MusicianAuthEntryRecordVo> pages = teacherAuthMusicianRecordService.selectPage(PageUtil.getPage(query), query);
+		return succeed(PageUtil.pageInfo(pages));
 	}
 
 	@PostMapping("/doAuth")

+ 12 - 17
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java

@@ -1,27 +1,22 @@
 package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dao.SubjectDao;
-import com.yonge.cooleshow.biz.dal.dto.req.TeacherSubmitReq;
-import com.yonge.cooleshow.biz.dal.dto.search.TeacherSearch;
-import com.yonge.cooleshow.biz.dal.entity.Teacher;
-import com.yonge.cooleshow.biz.dal.service.TeacherService;
-import com.yonge.cooleshow.biz.dal.support.Condition;
-import com.yonge.cooleshow.biz.dal.support.Query;
-import com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo;
-import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.page.PageInfo;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
+
 import com.yonge.toolset.utils.string.StringUtil;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import java.util.List;
+
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherSubmitReq;
+import com.yonge.cooleshow.biz.dal.dto.search.TeacherSearch;
+import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 
 @RestController
 @RequestMapping("/teacher")
@@ -49,9 +44,9 @@ public class TeacherController extends BaseController {
      */
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入teacher")
-    public HttpResponseResult<IPage<TeacherVo>> page(@RequestBody TeacherSearch query) {
-        IPage<TeacherVo> pages = teacherService.selectPage(Condition.getPage(query), query);
-        return succeed(pages);
+    public HttpResponseResult<PageInfo<TeacherVo>> page(@RequestBody TeacherSearch query) {
+        IPage<TeacherVo> pages = teacherService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
     }
 
     /**
@@ -59,7 +54,7 @@ public class TeacherController extends BaseController {
      */
     @PostMapping("/submit")
     @ApiOperation(value = "新增或修改", notes = "传入teacher")
-    public HttpResponseResult<Boolean> submit(@RequestBody TeacherSubmitReq teacherSubmitReq) {
+    public HttpResponseResult<Boolean> submit(@Valid @RequestBody TeacherSubmitReq teacherSubmitReq) {
         return teacherService.submit(teacherSubmitReq);
     }
 

+ 3 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherWithdrawalController.java

@@ -2,7 +2,7 @@ package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -41,8 +41,8 @@ public class TeacherWithdrawalController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入teacherWithdrawalSearch")
     public HttpResponseResult<PageInfo<TeacherWithdrawalVo>> page(@RequestBody TeacherWithdrawalSearch query) {
-		IPage<TeacherWithdrawalVo> pages = teacherWithdrawalService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
+		IPage<TeacherWithdrawalVo> pages = teacherWithdrawalService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
 	}
     
     /**

+ 3 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountController.java

@@ -2,7 +2,7 @@ package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -41,8 +41,8 @@ public class UserAccountController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入userAccountSearch")
     public HttpResponseResult<PageInfo<UserAccountVo>> page(@RequestBody UserAccountSearch query) {
-		IPage<UserAccountVo> pages = userAccountService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
+		IPage<UserAccountVo> pages = userAccountService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
 	}
     
     /**

+ 3 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountRecordController.java

@@ -2,7 +2,7 @@ package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -41,8 +41,8 @@ public class UserAccountRecordController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入userAccountRecordSearch")
     public HttpResponseResult<PageInfo<UserAccountRecordVo>> page(@RequestBody UserAccountRecordSearch query) {
-		IPage<UserAccountRecordVo> pages = userAccountRecordService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
+		IPage<UserAccountRecordVo> pages = userAccountRecordService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
 	}
     
     /**

+ 3 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserBankCardController.java

@@ -2,7 +2,7 @@ package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -41,8 +41,8 @@ public class UserBankCardController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入userBankCardSearch")
     public HttpResponseResult<PageInfo<UserBankCardVo>> page(@RequestBody UserBankCardSearch query) {
-		IPage<UserBankCardVo> pages = userBankCardService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
+		IPage<UserBankCardVo> pages = userBankCardService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
 	}
     
     /**

+ 19 - 19
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/OrderController.java → cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserOrderController.java

@@ -2,7 +2,8 @@ package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -13,26 +14,25 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 
-import com.yonge.cooleshow.biz.dal.vo.OrderVo;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
-import com.yonge.cooleshow.biz.dal.entity.Order;
-import com.yonge.cooleshow.biz.dal.service.OrderService;
+import com.yonge.cooleshow.biz.dal.entity.UserOrder;
+import com.yonge.cooleshow.biz.dal.service.UserOrderService;
 
 @RestController
-@RequestMapping("/order")
+@RequestMapping("/userOrder")
 @Api(value = "平台订单表", tags = "平台订单表")
-public class OrderController extends BaseController {
+public class UserOrderController extends BaseController {
 
     @Autowired
-    private OrderService orderService;
+    private UserOrderService userOrderService;
 
 	/**
      * 查询单条
      */
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "详情", notes = "传入id")
-    public HttpResponseResult<OrderVo> detail(@PathVariable("id") Long id) {
-    	return succeed(orderService.detail(id));
+    public HttpResponseResult<UserOrderVo> detail(@PathVariable("id") Long id) {
+    	return succeed(userOrderService.detail(id));
 	}
     
     /**
@@ -40,9 +40,9 @@ public class OrderController extends BaseController {
      */
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入orderSearch")
-    public HttpResponseResult<PageInfo<OrderVo>> page(@RequestBody OrderSearch query) {
-		IPage<OrderVo> pages = orderService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
+    public HttpResponseResult<PageInfo<UserOrderVo>> page(@RequestBody OrderSearch query) {
+		IPage<UserOrderVo> pages = userOrderService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
 	}
     
     /**
@@ -50,8 +50,8 @@ public class OrderController extends BaseController {
 	 */
 	@PostMapping("/save")
 	@ApiOperation(value = "新增", notes = "传入order")
-	public HttpResponseResult save(@Valid @RequestBody Order order) {
-    	return status(orderService.save(order));
+	public HttpResponseResult save(@Valid @RequestBody UserOrder userOrder) {
+    	return status(userOrderService.save(userOrder));
 	}
     
     /**
@@ -59,8 +59,8 @@ public class OrderController extends BaseController {
 	 */
 	@PostMapping("/update")
 	@ApiOperation(value = "修改", notes = "传入order")
-	public HttpResponseResult update(@Valid @RequestBody Order order) {
-        return status(orderService.updateById(order));
+	public HttpResponseResult update(@Valid @RequestBody UserOrder userOrder) {
+        return status(userOrderService.updateById(userOrder));
 	}
     
     /**
@@ -68,8 +68,8 @@ public class OrderController extends BaseController {
 	 */
     @PostMapping("/submit")
     @ApiOperation(value = "新增或修改", notes = "传入order")
-	public HttpResponseResult submit(@Valid @RequestBody Order order) {
-        return status(orderService.saveOrUpdate(order));
+	public HttpResponseResult submit(@Valid @RequestBody UserOrder userOrder) {
+        return status(userOrderService.saveOrUpdate(userOrder));
     }
 
  	/**
@@ -81,6 +81,6 @@ public class OrderController extends BaseController {
         if (StringUtil.isEmpty(ids)) {
 			return failed("参数不能为空");
 		}
-		return status(orderService.removeByIds(StringUtil.toLongList(ids)));
+		return status(userOrderService.removeByIds(StringUtil.toLongList(ids)));
 	}
 }

+ 19 - 19
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/OrderRefundsController.java → cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserOrderRefundsController.java

@@ -2,7 +2,7 @@ package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -13,26 +13,26 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 
-import com.yonge.cooleshow.biz.dal.vo.OrderRefundsVo;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderRefundsVo;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderRefundsSearch;
-import com.yonge.cooleshow.biz.dal.entity.OrderRefunds;
-import com.yonge.cooleshow.biz.dal.service.OrderRefundsService;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderRefunds;
+import com.yonge.cooleshow.biz.dal.service.UserOrderRefundsService;
 
 @RestController
-@RequestMapping("/orderRefunds")
+@RequestMapping("/UserOrderRefunds")
 @Api(value = "用户退款表", tags = "用户退款表")
-public class OrderRefundsController extends BaseController {
+public class UserOrderRefundsController extends BaseController {
 
     @Autowired
-    private OrderRefundsService orderRefundsService;
+    private UserOrderRefundsService userOrderRefundsService;
 
 	/**
      * 查询单条
      */
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "详情", notes = "传入id")
-    public HttpResponseResult<OrderRefundsVo> detail(@PathVariable("id") Long id) {
-    	return succeed(orderRefundsService.detail(id));
+    public HttpResponseResult<UserOrderRefundsVo> detail(@PathVariable("id") Long id) {
+    	return succeed(userOrderRefundsService.detail(id));
 	}
     
     /**
@@ -40,9 +40,9 @@ public class OrderRefundsController extends BaseController {
      */
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入orderRefundsSearch")
-    public HttpResponseResult<PageInfo<OrderRefundsVo>> page(@RequestBody OrderRefundsSearch query) {
-		IPage<OrderRefundsVo> pages = orderRefundsService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
+    public HttpResponseResult<PageInfo<UserOrderRefundsVo>> page(@RequestBody OrderRefundsSearch query) {
+		IPage<UserOrderRefundsVo> pages = userOrderRefundsService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
 	}
     
     /**
@@ -50,8 +50,8 @@ public class OrderRefundsController extends BaseController {
 	 */
 	@PostMapping("/save")
 	@ApiOperation(value = "新增", notes = "传入orderRefunds")
-	public HttpResponseResult save(@Valid @RequestBody OrderRefunds orderRefunds) {
-    	return status(orderRefundsService.save(orderRefunds));
+	public HttpResponseResult save(@Valid @RequestBody UserOrderRefunds userOrderRefunds) {
+    	return status(userOrderRefundsService.save(userOrderRefunds));
 	}
     
     /**
@@ -59,8 +59,8 @@ public class OrderRefundsController extends BaseController {
 	 */
 	@PostMapping("/update")
 	@ApiOperation(value = "修改", notes = "传入orderRefunds")
-	public HttpResponseResult update(@Valid @RequestBody OrderRefunds orderRefunds) {
-        return status(orderRefundsService.updateById(orderRefunds));
+	public HttpResponseResult update(@Valid @RequestBody UserOrderRefunds userOrderRefunds) {
+        return status(userOrderRefundsService.updateById(userOrderRefunds));
 	}
     
     /**
@@ -68,8 +68,8 @@ public class OrderRefundsController extends BaseController {
 	 */
     @PostMapping("/submit")
     @ApiOperation(value = "新增或修改", notes = "传入orderRefunds")
-	public HttpResponseResult submit(@Valid @RequestBody OrderRefunds orderRefunds) {
-        return status(orderRefundsService.saveOrUpdate(orderRefunds));
+	public HttpResponseResult submit(@Valid @RequestBody UserOrderRefunds userOrderRefunds) {
+        return status(userOrderRefundsService.saveOrUpdate(userOrderRefunds));
     }
 
  	/**
@@ -81,6 +81,6 @@ public class OrderRefundsController extends BaseController {
         if (StringUtil.isEmpty(ids)) {
 			return failed("参数不能为空");
 		}
-		return status(orderRefundsService.removeByIds(StringUtil.toLongList(ids)));
+		return status(userOrderRefundsService.removeByIds(StringUtil.toLongList(ids)));
 	}
 }

+ 3 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VipCardRecordController.java

@@ -2,7 +2,7 @@ package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -41,8 +41,8 @@ public class VipCardRecordController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入vipCardRecordSearch")
     public HttpResponseResult<PageInfo<VipCardRecordVo>> page(@RequestBody VipCardRecordSearch query) {
-		IPage<VipCardRecordVo> pages = vipCardRecordService.selectPage(Condition.getPage(query), query);
-        return succeed(Condition.pageInfo(pages));
+		IPage<VipCardRecordVo> pages = vipCardRecordService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
 	}
     
     /**

+ 5 - 0
cooleshow-user/user-biz/pom.xml

@@ -61,6 +61,11 @@
             <artifactId>auth-api</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.huifu.adapay</groupId>
+            <artifactId>adapay-java-sdk</artifactId>
+            <version>1.2.10</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 2 - 11
cooleshow-payment/payment-server/src/main/java/com/yonge/cooleshow/payment/config/HuifuConfiguration.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/config/HuifuConfiguration.java

@@ -1,20 +1,11 @@
-package com.yonge.cooleshow.payment.config;
+package com.yonge.cooleshow.biz.dal.config;
 
 import com.huifu.adapay.Adapay;
 import com.huifu.adapay.model.MerConfig;
-import com.yonge.cooleshow.payment.props.HuifuProperties;
+import com.yonge.cooleshow.biz.dal.props.HuifuProperties;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.http.server.reactive.ServerHttpResponse;
-import org.springframework.web.cors.reactive.CorsUtils;
-import org.springframework.web.server.ServerWebExchange;
-import org.springframework.web.server.WebFilter;
-import org.springframework.web.server.WebFilterChain;
 
 /**
  * 路由配置信息

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/constant/CourseConstant.java

@@ -0,0 +1,9 @@
+package com.yonge.cooleshow.biz.dal.constant;
+
+public interface CourseConstant {
+    /**
+     * 未正式写入数据库的排课时间临时数据
+     * <p>用途将未写入数据库的排课数据写入缓存,然后生成日历及陪练课买课时校验课时将缓存时间拿出来比对</p>
+     */
+    String LOCK_COURSE_TIME_INFO = "LOCK_COURSE_TIME_INFO";
+}

+ 45 - 15
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/constant/SysConfigConstant.java

@@ -19,52 +19,82 @@ public interface SysConfigConstant {
      * @updateTime 2022/3/24 10:20
      */
     String OPEN_LIVE_OVER_CLASS = "open_list_over_class";
-
-    /**
-     * 直播服务费
-     */
-    String LIVE_SERVICE_RATE = "live_service_rate";
     /***
      * 平台提现手续费
      * @author liweifan
      * @updateTime 2022/3/24 17:15
      */
     String WITHDRAWAL_SERVICE_FEE = "withdrawal_service_fee";
-
+    /**
+     * 陪练课服务费
+     */
+    String PRACTICE_SERVICE_FEE = "practice_service_fee";
+    /**
+     * 陪练课可选时长配置
+     */
+    String PRACTICE_TIMES_SETTING = "practice_times_setting";
+    /**
+     * 直播课服务费
+     */
+    String LIVE_SERVICE_RATE = "live_service_rate";
+    /**
+     * 视频课服务费
+     */
+    String VIDEO_LESSON_SERVICE_FEE = "video_lesson_service_fee";
+    /**
+     * 乐谱服务费
+     */
+    String MUSIC_SHEET_SERVICE_FEE = "music_sheet_service_fee";
     /**
      * 提前XX分钟创建/进入直播房间的时间
      */
     String PRE_CREATE_LIVE_ROOM_MINUTE = "pre_create_live_room_minute";
-
     /**
      * 提前XX分钟创建/进入陪练课房间时间
      */
     String PRE_CREATE_PRACTICE_ROOM_MINUTE = "pre_create_practice_room_minute";
-
     /**
      * 直播结束后,XX分钟关闭房间
      */
     String DESTROY_EXPIRED_LIVE_ROOM_MINUTE = "destroy_expired_live_room_minute";
-
     /**
      * 陪练课结束后,XX分钟关闭房间
      */
     String DESTROY_EXPIRED_PRACTICE_ROOM_MINUTE = "destroy_expired_practice_room_minute";
+    /**
+     * 课程结束后,XX天后结算课酬
+     */
+    String COURSE_SETTLEMENT_TIME_DAY = "course_settlement_time_day";
 
     /**
-     * 陪练课提现手续费
+     * 创建直播课可选时间设定
      */
-    String PRACTICE_SERVICE_FEE = "practice_service_fee";
+    String LIVE_TIME_SETTING = "live_time_setting";
 
     /**
-     * 陪练课可选时长配置
+     * 学生购买陪练课时间段锁定时间
      */
-    String PRACTICE_TIMES_SETTING = "practice_times_setting";
+    String STUDENT_BUY_PRACTICE_TIME_LOCK_MINUTE = "student_buy_practice_time_lock_minute";
 
     /**
-     * 课程结束后,XX天后结算课酬
+     * 老师创建直播课选择课程时间段锁定的时间
      */
-    String COURSE_SETTLEMENT_TIME_DAY = "course_settlement_time_day";
+    String CREATE_LIVE_TIME_LOCK_MINUTE = "create_live_time_lock_minute";
+
+    /**
+     * 课程开始时间
+     */
+    String COURSE_START_SETTING = "course_start_setting";
+
+    /**
+     * 课程结束时间
+     */
+    String COURSE_END_SETTING = "course_end_setting";
+
+    /**
+     * 自动规划课程最大周数
+     */
+    String AUTO_PLANNING_COURSE_MAX_WEEK = "auto_planning_course_max_week";
 
     /**
      * 管理端默认头像

+ 13 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/OrderDao.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderDao.java

@@ -4,27 +4,33 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.entity.UserOrder;
 import org.apache.ibatis.annotations.Param;
-import com.yonge.cooleshow.biz.dal.entity.Order;
-import com.yonge.cooleshow.biz.dal.vo.OrderVo;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
 
 
-public interface OrderDao extends BaseMapper<Order>{
+public interface UserOrderDao extends BaseMapper<UserOrder>{
 	/**
-	 * 查询详情
+	 * 查询详情-通过id
      * @author liweifan
      * @date 2022-03-30 13:53:51
      * @return: com.yonge.cooleshow.biz.dal.vo.OrderVo
 	 */
-	OrderVo detail(@Param("id") Long id);
-
+	UserOrderVo detailById(@Param("id") Long id);
+	/**
+	 * 查询详情-通过订单号
+	 * @author liweifan
+	 * @date 2022-03-30 13:53:51
+	 * @return: com.yonge.cooleshow.biz.dal.vo.OrderVo
+	 */
+	UserOrderVo detailByOrderNo(@Param("orderNo") String orderNo);
 	/**
 	 * 分页查询
      * @author liweifan
      * @date 2022-03-30 13:53:51
      * @return: com.yonge.cooleshow.biz.dal.vo.OrderVo
 	 */
-	List<OrderVo> selectPage(@Param("page") IPage page, @Param("param") OrderSearch order);
+	List<UserOrderVo> selectPage(@Param("page") IPage page, @Param("param") OrderSearch order);
 	
 }

+ 5 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/OrderDetailDao.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderDetailDao.java

@@ -5,19 +5,19 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
-import com.yonge.cooleshow.biz.dal.entity.OrderDetail;
-import com.yonge.cooleshow.biz.dal.vo.OrderDetailVo;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderDetail;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderDetailSearch;
 
 
-public interface OrderDetailDao extends BaseMapper<OrderDetail>{
+public interface UserOrderDetailDao extends BaseMapper<UserOrderDetail>{
 	/**
 	 * 查询详情
      * @author liweifan
      * @date 2022-03-30 13:53:51
      * @return: com.yonge.cooleshow.biz.dal.vo.OrderDetailVo
 	 */
-	OrderDetailVo detail(@Param("id") Long id);
+	UserOrderDetailVo detail(@Param("id") Long id);
 
 	/**
 	 * 分页查询
@@ -25,6 +25,6 @@ public interface OrderDetailDao extends BaseMapper<OrderDetail>{
      * @date 2022-03-30 13:53:51
      * @return: com.yonge.cooleshow.biz.dal.vo.OrderDetailVo
 	 */
-	List<OrderDetailVo> selectPage(@Param("page") IPage page, @Param("param") OrderDetailSearch orderDetail);
+	List<UserOrderDetailVo> selectPage(@Param("page") IPage page, @Param("param") OrderDetailSearch orderDetail);
 	
 }

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderPaymentDao.java

@@ -0,0 +1,8 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderPayment;
+
+
+public interface UserOrderPaymentDao extends BaseMapper<UserOrderPayment>{
+}

+ 5 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/OrderRefundsDao.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderRefundsDao.java

@@ -5,19 +5,19 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
-import com.yonge.cooleshow.biz.dal.entity.OrderRefunds;
-import com.yonge.cooleshow.biz.dal.vo.OrderRefundsVo;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderRefunds;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderRefundsVo;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderRefundsSearch;
 
 
-public interface OrderRefundsDao extends BaseMapper<OrderRefunds>{
+public interface UserOrderRefundsDao extends BaseMapper<UserOrderRefunds>{
 	/**
 	 * 查询详情
      * @author liweifan
      * @date 2022-03-30 13:53:51
      * @return: com.yonge.cooleshow.biz.dal.vo.OrderRefundsVo
 	 */
-	OrderRefundsVo detail(@Param("id") Long id);
+	UserOrderRefundsVo detail(@Param("id") Long id);
 
 	/**
 	 * 分页查询
@@ -25,6 +25,6 @@ public interface OrderRefundsDao extends BaseMapper<OrderRefunds>{
      * @date 2022-03-30 13:53:51
      * @return: com.yonge.cooleshow.biz.dal.vo.OrderRefundsVo
 	 */
-	List<OrderRefundsVo> selectPage(@Param("page") IPage page, @Param("param") OrderRefundsSearch orderRefunds);
+	List<UserOrderRefundsVo> selectPage(@Param("page") IPage page, @Param("param") OrderRefundsSearch orderRefunds);
 	
 }

+ 3 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDetailDao.java

@@ -17,15 +17,12 @@ import java.util.List;
  * @version v1.0
  **/
 public interface VideoLessonGroupDetailDao extends BaseMapper<VideoLessonGroupDetail> {
-    //TODO 根据组id查视频课详情
-    List<VideoLessonGroupDetail> selectDetail(Long id);
-
-    //TODO 根据组id查询购买学员信息
-    List<VideoLessonPurchaseStudent> selectStudent(Long id);
-
     //查询视频课
     List<VideoLessonGroupDetail> selectPage(IPage page,@Param("param") VideoLessonSearch query);
 
+    //根据组id查询购买用户
+    List<VideoLessonPurchaseStudent> selectPageStudent(IPage page,@Param("param")  VideoLessonSearch query);
+
     //新增视频课
     void insertVideoLesson(List<VideoLessonGroupDetail> list);
 

+ 65 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/CheckLiveCourseTimeDto.java

@@ -0,0 +1,65 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import com.yonge.cooleshow.biz.dal.entity.CourseTimeEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author hgw
+ * Created by 2022-03-30
+ */
+@ApiModel(value = "创建直播课组验校时间接收类")
+public class CheckLiveCourseTimeDto implements Serializable {
+
+    @NotNull(message = "老师Id不能为空")
+    @ApiModelProperty(value = "老师Id")
+    private Long teacherId;
+
+    @NotNull(message = "是否需要自动排课不能为空")
+    @ApiModelProperty(value = "是否需要循环 0:不需要 1:需要")
+    private Integer loop;
+
+    @NotNull(message = "课程数不能为空")
+    @ApiModelProperty(value = "课程数")
+    private Integer courseNum;
+
+    @NotNull(message = "课程时间不能为空")
+    @ApiModelProperty(value = "课程时间接收类")
+    private List<CourseTimeEntity> timeList;
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Integer getLoop() {
+        return loop;
+    }
+
+    public void setLoop(Integer loop) {
+        this.loop = loop;
+    }
+
+    public Integer getCourseNum() {
+        return courseNum;
+    }
+
+    public void setCourseNum(Integer courseNum) {
+        this.courseNum = courseNum;
+    }
+
+    public List<CourseTimeEntity> getTimeList() {
+        return timeList;
+    }
+
+    public void setTimeList(List<CourseTimeEntity> timeList) {
+        this.timeList = timeList;
+    }
+}

+ 12 - 33
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/CourseGroupDto.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/LiveCourseGroupDto.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dto;
 
+import com.yonge.cooleshow.biz.dal.entity.CourseTimeEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -16,8 +17,8 @@ import java.util.List;
  * @author hgw
  * Created by 2022-03-21
  */
-@ApiModel(value = "课程组接收类")
-public class CourseGroupDto implements Serializable {
+@ApiModel(value = "创建直播课接收类")
+public class LiveCourseGroupDto implements Serializable {
 
     @ApiModelProperty(value = "主键")
     private Long id;
@@ -69,23 +70,16 @@ public class CourseGroupDto implements Serializable {
     @ApiModelProperty(value = "直播背景图")
     private String backgroundPic;
 
-    @NotNull(message = "课程数不能为空")
-    @Positive(message = "课程数必须大于0")
+    @NotNull(message = "最少成课人数不能为空")
+    @Positive(message = "最少成课人数必须大于0")
     @ApiModelProperty(value = "最少成课人数")
     private Integer mixStudentNum;
 
     @ApiModelProperty(value = "课时及教学计划")
-    private List<CourseInfoDto> courseInfo;
+    private List<CoursePlanDto> CoursePlanList;
 
     @ApiModel(value = "课程详情接收类")
-    static class CourseInfoDto implements Serializable{
-        @NotNull(message = "上课时间不能为空")
-        @ApiModelProperty(value = "上课时间")
-        private Date startTime;
-
-        @NotNull(message = "下课时间不能为空")
-        @ApiModelProperty(value = "下课时间")
-        private Date endTime;
+    static class CoursePlanDto extends CourseTimeEntity implements Serializable {
 
         @NotNull(message = "课堂编号不能为空")
         @ApiModelProperty(value = "课堂编号-第几堂课")
@@ -96,22 +90,6 @@ public class CourseGroupDto implements Serializable {
         @ApiModelProperty(value = "教学计划/最多200字")
         private String plan;
 
-        public Date getStartTime() {
-            return startTime;
-        }
-
-        public void setStartTime(Date startTime) {
-            this.startTime = startTime;
-        }
-
-        public Date getEndTime() {
-            return endTime;
-        }
-
-        public void setEndTime(Date endTime) {
-            this.endTime = endTime;
-        }
-
         public Integer getClassNum() {
             return classNum;
         }
@@ -233,11 +211,12 @@ public class CourseGroupDto implements Serializable {
         this.mixStudentNum = mixStudentNum;
     }
 
-    public List<CourseInfoDto> getCourseInfo() {
-        return courseInfo;
+    public List<CoursePlanDto> getCoursePlanList() {
+        return CoursePlanList;
     }
 
-    public void setCourseInfo(List<CourseInfoDto> courseInfo) {
-        this.courseInfo = courseInfo;
+    public void setCoursePlanList(List<CoursePlanDto> coursePlanList) {
+        CoursePlanList = coursePlanList;
     }
+
 }

+ 70 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderPayReq.java

@@ -0,0 +1,70 @@
+package com.yonge.cooleshow.biz.dal.dto.req;
+
+import com.yonge.cooleshow.biz.dal.enums.PayChannelEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 下单支付请求
+ *
+ * @Author: liweifan
+ * @Data: 2022/3/31 14:55
+ */
+@ApiModel(value = "OrderPayReq对象", description = "下单支付请求")
+public class OrderPayReq {
+    @NotBlank(message = "订单号不能为空")
+    @ApiModelProperty(value = "订单号 ", required = true)
+    private String orderNo;
+    @NotNull(message = "支付渠道不能为空")
+    @ApiModelProperty(value = "支付渠道:  alipay 支付宝  wx_lite 微信 ", required = true)
+    private PayChannelEnum payChannel;
+    @ApiModelProperty(value = "用户id ")
+    private Long userId;
+    @ApiModelProperty(value = "用户端公网ip ")
+    private String ipAddress;
+    @ApiModelProperty(value = "微信用户openId(微信支付必传)")
+    private String openId;
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public PayChannelEnum getPayChannel() {
+        return payChannel;
+    }
+
+    public void setPayChannel(PayChannelEnum payChannel) {
+        this.payChannel = payChannel;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getIpAddress() {
+        return ipAddress;
+    }
+
+    public void setIpAddress(String ipAddress) {
+        this.ipAddress = ipAddress;
+    }
+
+    public String getOpenId() {
+        return openId;
+    }
+
+    public void setOpenId(String openId) {
+        this.openId = openId;
+    }
+}

+ 137 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java

@@ -0,0 +1,137 @@
+package com.yonge.cooleshow.biz.dal.dto.req;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * 下单请求
+ *
+ * @Author: liweifan
+ * @Data: 2022/3/31 14:55
+ */
+@ApiModel(value = "OrderReq对象", description = "下单请求")
+public class OrderReq {
+    @ApiModelProperty(value = "用户id ")
+    private Long userId;
+    @NotBlank(message = "订单名称不能为空")
+    @ApiModelProperty(value = "订单名称 ", required = true)
+    private String orderName;
+    @ApiModelProperty(value = "订单描述信息 ")
+    private String orderDesc;
+    @NotNull(message = "订单类型不能为空")
+    @ApiModelProperty(value = "订单类型:  VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ", required = true)
+    private OrderTypeEnum orderType;
+    @ApiModelProperty(value = "业务id ")
+    private Long bizId;
+    @ApiModelProperty(value = "业务内容 ")
+    private String bizContent;
+    @NotNull(message = "原价不能为空")
+    @ApiModelProperty(value = "原价 ", required = true)
+    private BigDecimal originalPrice;
+    @NotNull(message = "预计价格不能为空")
+    @ApiModelProperty(value = "预计价格 ", required = true)
+    private BigDecimal expectPrice;
+    @NotNull(message = "实际价格不能为空")
+    @ApiModelProperty(value = "实际价格 ", required = true)
+    private BigDecimal actualPrice;
+    @NotNull(message = "优惠金额不能为空")
+    @ApiModelProperty(value = "优惠金额 ", required = true)
+    private BigDecimal couponAmount;
+
+    @ApiModelProperty("用户备注 ")
+    private String userNote;
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getOrderName() {
+        return orderName;
+    }
+
+    public void setOrderName(String orderName) {
+        this.orderName = orderName;
+    }
+
+    public String getOrderDesc() {
+        return orderDesc;
+    }
+
+    public void setOrderDesc(String orderDesc) {
+        this.orderDesc = orderDesc;
+    }
+
+    public OrderTypeEnum getOrderType() {
+        return orderType;
+    }
+
+    public void setOrderType(OrderTypeEnum orderType) {
+        this.orderType = orderType;
+    }
+
+    public Long getBizId() {
+        return bizId;
+    }
+
+    public void setBizId(Long bizId) {
+        this.bizId = bizId;
+    }
+
+    public String getBizContent() {
+        return bizContent;
+    }
+
+    public void setBizContent(String bizContent) {
+        this.bizContent = bizContent;
+    }
+
+    public BigDecimal getOriginalPrice() {
+        return originalPrice;
+    }
+
+    public void setOriginalPrice(BigDecimal originalPrice) {
+        this.originalPrice = originalPrice;
+    }
+
+    public BigDecimal getExpectPrice() {
+        return expectPrice;
+    }
+
+    public void setExpectPrice(BigDecimal expectPrice) {
+        this.expectPrice = expectPrice;
+    }
+
+    public BigDecimal getActualPrice() {
+        return actualPrice;
+    }
+
+    public void setActualPrice(BigDecimal actualPrice) {
+        this.actualPrice = actualPrice;
+    }
+
+    public BigDecimal getCouponAmount() {
+        return couponAmount;
+    }
+
+    public void setCouponAmount(BigDecimal couponAmount) {
+        this.couponAmount = couponAmount;
+    }
+
+    public String getUserNote() {
+        return userNote;
+    }
+
+    public void setUserNote(String userNote) {
+        this.userNote = userNote;
+    }
+}

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherSearch.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.support.Query;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -12,7 +13,7 @@ import io.swagger.annotations.ApiModelProperty;
 public class TeacherSearch extends Query {
     @ApiModelProperty(value = "老师编号/昵称/电话")
     private String search;
-    @ApiModelProperty(value = "老师类型")
+    @ApiModelProperty(value = "老师类型 TOURIST 游客 ENTRY 认证老师 MUSICIAN 平台音乐人")
     private String teacherType;
 
     public String getSearch() {

+ 43 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseTimeEntity.java

@@ -0,0 +1,43 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author hgw
+ * Created by 2022-03-31
+ */
+@ApiModel(value = "课程时间类")
+public class CourseTimeEntity implements Serializable {
+
+    @NotNull(message = "上课时间不能为空")
+    @ApiModelProperty(value = "上课时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    @NotNull(message = "下课时间不能为空")
+    @ApiModelProperty(value = "下课时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+}

+ 1 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImRoomMessage.java

@@ -6,11 +6,8 @@ package com.yonge.cooleshow.biz.dal.entity;
  */
 public class ImRoomMessage extends BaseMessage {
 
-    //objectName 类型-将所有人强制踢出房间
-    public static final String FORCED_OFFLINE = "RC:ForcedOffline";
-
     //objectName 类型-观看者退出房间
-    public static final String LOOKER_LOGIN_OUT = "RC:LookerLoginOut";
+    public static final String RC_CHATROOM_LEAVE = "RC:Chatroom:Leave";
 
     /**
      * 消息类型

+ 69 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImUserStateSync.java

@@ -0,0 +1,69 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * 监听融云用户状态变更实体类
+ *
+ * @author hgw
+ * Created by 2022-02-18
+ */
+public class ImUserStateSync implements Serializable {
+
+    @ApiModelProperty(value = "用户 Id")
+    private String userid;
+
+    @ApiModelProperty(value = "状态:0:online 上线、1:offline 离线、2:logout 登出 3:退出直播间")
+    private String status;
+
+    @ApiModelProperty(value = "操作系统:iOS、Android、Websocket、PC、MiniProgram(小程序),用户上线时同步")
+    private String os;
+
+    @ApiModelProperty(value = "发生时间")
+    private Long time;
+
+    @ApiModelProperty(value = "用户当前的 IP 地址及端口")
+    private String clientIp;
+
+    public String getUserid() {
+        return userid;
+    }
+
+    public void setUserid(String userid) {
+        this.userid = userid;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getOs() {
+        return os;
+    }
+
+    public void setOs(String os) {
+        this.os = os;
+    }
+
+    public Long getTime() {
+        return time;
+    }
+
+    public void setTime(Long time) {
+        this.time = time;
+    }
+
+    public String getClientIp() {
+        return clientIp;
+    }
+
+    public void setClientIp(String clientIp) {
+        this.clientIp = clientIp;
+    }
+}

+ 23 - 78
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Order.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrder.java

@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.PayChannelEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -16,9 +19,9 @@ import java.math.BigDecimal;
 /**
  * 平台订单表
  */
-@TableName("order")
-@ApiModel(value = "Order对象", description = "平台订单表")
-public class Order implements Serializable {
+@TableName("user_order")
+@ApiModel(value = "UserOrder对象", description = "平台订单表")
+public class UserOrder implements Serializable {
 	private static final long serialVersionUID = 1L;
     @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
@@ -27,7 +30,7 @@ public class Order implements Serializable {
     private String orderNo;
     @ApiModelProperty("买家id ")
 	@TableField(value = "user_id_")
-    private Integer userId;
+    private Long userId;
     @ApiModelProperty("卖家id ")
 	@TableField(value = "merch_id_")
     private Long merchId;
@@ -39,7 +42,7 @@ public class Order implements Serializable {
     private String orderDesc;
     @ApiModelProperty("订单状态 WAIT_PAY 待支付 PAYING 支付中  PAID 已付款 CLOSE 已关闭 ")
 	@TableField(value = "status_")
-    private String status;
+    private OrderStatusEnum status;
     @ApiModelProperty("原价 ")
 	@TableField(value = "original_price_")
     private BigDecimal originalPrice;
@@ -64,9 +67,9 @@ public class Order implements Serializable {
     @ApiModelProperty("用户备注 ")
 	@TableField(value = "user_note_")
     private String userNote;
-    @ApiModelProperty("订单类型 1、开通会员  2、陪练课购买  3、直播课购买 4、视频课购买 5、单曲点播 ")
+    @ApiModelProperty("订单类型:  VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播")
 	@TableField(value = "order_type_")
-    private String orderType;
+    private OrderTypeEnum orderType;
     @ApiModelProperty("下单时间 ")
 	@TableField(value = "create_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -86,23 +89,6 @@ public class Order implements Serializable {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date updateTime;
-    @ApiModelProperty("交易流水号 ")
-	@TableField(value = "trans_no_")
-    private String transNo;
-    @ApiModelProperty("支付渠道:  alipay 支付宝  wx_lite 微信 ")
-	@TableField(value = "pay_channel_")
-    private String payChannel;
-    @ApiModelProperty("交易金额,必须大于0,保留两位小数点,如0.10、100.05等 ")
-	@TableField(value = "pay_amt_")
-    private BigDecimal payAmt;
-    @ApiModelProperty("到账时间 ")
-	@TableField(value = "arrival_time_")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
-    private Date arrivalTime;
-    @ApiModelProperty("失败信息 ")
-	@TableField(value = "pay_fail_msg_")
-    private String payFailMsg;
 
 	public Long getId() {
         return id;
@@ -119,16 +105,16 @@ public class Order implements Serializable {
     public void setOrderNo(String orderNo) {
         this.orderNo = orderNo;
     }
-    
-	public Integer getUserId() {
+
+    public Long getUserId() {
         return userId;
     }
 
-    public void setUserId(Integer userId) {
+    public void setUserId(Long userId) {
         this.userId = userId;
     }
-    
-	public Long getMerchId() {
+
+    public Long getMerchId() {
         return merchId;
     }
 
@@ -152,14 +138,6 @@ public class Order implements Serializable {
         this.orderDesc = orderDesc;
     }
     
-	public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-    
 	public BigDecimal getOriginalPrice() {
         return originalPrice;
     }
@@ -224,14 +202,6 @@ public class Order implements Serializable {
         this.userNote = userNote;
     }
     
-	public String getOrderType() {
-        return orderType;
-    }
-
-    public void setOrderType(String orderType) {
-        this.orderType = orderType;
-    }
-    
 	public Date getCreateTime() {
         return createTime;
     }
@@ -263,45 +233,20 @@ public class Order implements Serializable {
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
-    
-	public String getTransNo() {
-        return transNo;
-    }
 
-    public void setTransNo(String transNo) {
-        this.transNo = transNo;
-    }
-    
-	public String getPayChannel() {
-        return payChannel;
-    }
-
-    public void setPayChannel(String payChannel) {
-        this.payChannel = payChannel;
-    }
-    
-	public BigDecimal getPayAmt() {
-        return payAmt;
+    public OrderStatusEnum getStatus() {
+        return status;
     }
 
-    public void setPayAmt(BigDecimal payAmt) {
-        this.payAmt = payAmt;
-    }
-    
-	public Date getArrivalTime() {
-        return arrivalTime;
+    public void setStatus(OrderStatusEnum status) {
+        this.status = status;
     }
 
-    public void setArrivalTime(Date arrivalTime) {
-        this.arrivalTime = arrivalTime;
-    }
-    
-	public String getPayFailMsg() {
-        return payFailMsg;
+    public OrderTypeEnum getOrderType() {
+        return orderType;
     }
 
-    public void setPayFailMsg(String payFailMsg) {
-        this.payFailMsg = payFailMsg;
+    public void setOrderType(OrderTypeEnum orderType) {
+        this.orderType = orderType;
     }
-    
 }

+ 3 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/OrderDetail.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderDetail.java

@@ -15,9 +15,9 @@ import org.springframework.format.annotation.DateTimeFormat;
 /**
  * 平台订单表
  */
-@TableName("order_detail")
-@ApiModel(value = "OrderDetail对象", description = "平台订单表")
-public class OrderDetail implements Serializable {
+@TableName("user_order_detail")
+@ApiModel(value = "UserOrderDetail对象", description = "平台订单表")
+public class UserOrderDetail implements Serializable {
 	private static final long serialVersionUID = 1L;
     @TableId(value = "id_", type = IdType.AUTO)
     private Long id;

+ 126 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderPayment.java

@@ -0,0 +1,126 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.math.BigDecimal;
+
+/**
+ * 平台订单支付表
+ */
+@TableName("user_order_payment")
+@ApiModel(value = "UserOrderPayment对象", description = "平台订单支付表")
+public class UserOrderPayment implements Serializable {
+	private static final long serialVersionUID = 1L;
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+    @ApiModelProperty("订单号 ")
+	@TableField(value = "order_no_")
+    private String orderNo;
+    @ApiModelProperty("交易流水号 ")
+	@TableField(value = "trans_no_")
+    private String transNo;
+    @ApiModelProperty("支付渠道:  alipay 支付宝  wx_lite 微信 ")
+	@TableField(value = "pay_channel_")
+    private String payChannel;
+    @ApiModelProperty("交易金额,必须大于0,保留两位小数点,如0.10、100.05等 ")
+	@TableField(value = "pay_amt_")
+    private BigDecimal payAmt;
+    @ApiModelProperty("支付详情信息(用于拉起支付) ")
+	@TableField(value = "pay_info")
+    private String payInfo;
+    @ApiModelProperty("失效时间(超过支付失效时间的订单,会取出来判断是否已经关单,最大失效时间往前推5分钟) ")
+	@TableField(value = "invalid_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date invalidTime;
+    @ApiModelProperty("到账时间 ")
+	@TableField(value = "arrival_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date arrivalTime;
+    @ApiModelProperty("失败信息 ")
+	@TableField(value = "pay_fail_msg_")
+    private String payFailMsg;
+
+	public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    
+	public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+    
+	public String getTransNo() {
+        return transNo;
+    }
+
+    public void setTransNo(String transNo) {
+        this.transNo = transNo;
+    }
+    
+	public String getPayChannel() {
+        return payChannel;
+    }
+
+    public void setPayChannel(String payChannel) {
+        this.payChannel = payChannel;
+    }
+    
+	public BigDecimal getPayAmt() {
+        return payAmt;
+    }
+
+    public void setPayAmt(BigDecimal payAmt) {
+        this.payAmt = payAmt;
+    }
+    
+	public String getPayInfo() {
+        return payInfo;
+    }
+
+    public void setPayInfo(String payInfo) {
+        this.payInfo = payInfo;
+    }
+    
+	public Date getInvalidTime() {
+        return invalidTime;
+    }
+
+    public void setInvalidTime(Date invalidTime) {
+        this.invalidTime = invalidTime;
+    }
+    
+	public Date getArrivalTime() {
+        return arrivalTime;
+    }
+
+    public void setArrivalTime(Date arrivalTime) {
+        this.arrivalTime = arrivalTime;
+    }
+    
+	public String getPayFailMsg() {
+        return payFailMsg;
+    }
+
+    public void setPayFailMsg(String payFailMsg) {
+        this.payFailMsg = payFailMsg;
+    }
+    
+}

+ 3 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/OrderRefunds.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderRefunds.java

@@ -16,9 +16,9 @@ import java.math.BigDecimal;
 /**
  * 用户退款表
  */
-@TableName("order_refunds")
-@ApiModel(value = "OrderRefunds对象", description = "用户退款表")
-public class OrderRefunds implements Serializable {
+@TableName("user_order_refunds")
+@ApiModel(value = "UserOrderRefunds对象", description = "用户退款表")
+public class UserOrderRefunds implements Serializable {
 	private static final long serialVersionUID = 1L;
     @TableId(value = "id_", type = IdType.AUTO)
     private Long id;

+ 1 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroupDetail.java

@@ -25,8 +25,7 @@ public class VideoLessonGroupDetail extends BaseEntity {
     private Long id;  //主键ID
 
     @TableField("video_lesson_group_id_")
-    @ApiModelProperty(value = "课程组ID", required = true)
-    @NotNull(message = "课程组id不能为空;")
+    @ApiModelProperty(value = "课程组ID")
     private Long videoLessonGroupId;  //课程组ID
 
     @TableField("video_title_")

+ 4 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/CacheNameEnum.java

@@ -14,7 +14,10 @@ import java.time.Duration;
  */
 public enum CacheNameEnum implements BaseEnum<String, CacheNameEnum> {
     TEACHER_HOME_TOTAL("老师首页统计缓存"),
-    STUDENT_HOME_TOTAL("学生首页统计缓存")
+    STUDENT_HOME_TOTAL("学生首页统计缓存"),
+
+    LOCK_EXECUTE_ORDER("用户下单锁"),
+    LOCK_PAY_ORDER("用户付款锁")
     ;
     /***
      * 缓存描述

+ 42 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/OrderStatusEnum.java

@@ -0,0 +1,42 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+/**
+ * 订单状态 WAIT_PAY 待支付 PAYING 支付中  PAID 已付款 CLOSE 已关闭
+ * @Author: liweifan
+ * @Data: 2022/3/31 14:59
+ */
+public enum OrderStatusEnum implements BaseEnum<String, OrderStatusEnum> {
+    WAIT_PAY("WAIT_PAY","待支付"),
+    PAYING("PAYING","支付中"),
+    PAID("PAID","已付款"),
+    CLOSE("CLOSE","已关闭")
+    ;
+    @EnumValue
+    private String code;
+    private String msg;
+
+    OrderStatusEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+}

+ 43 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/OrderTypeEnum.java

@@ -0,0 +1,43 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+/**
+ * 订单类型
+ * @Author: liweifan
+ * @Data: 2022/3/31 14:59
+ */
+public enum OrderTypeEnum implements BaseEnum<String, OrderTypeEnum> {
+    VIP("VIP","开通会员"),
+    PRACTICE("PRACTICE","陪练课购买"),
+    LIVE("LIVE","直播课购买"),
+    VIDEO("VIDEO","视频课购买"),
+    MUSIC("MUSIC","单曲点播")
+    ;
+    @EnumValue
+    private String code;
+    private String msg;
+
+    OrderTypeEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+}

+ 40 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/PayChannelEnum.java

@@ -0,0 +1,40 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+/**
+ * 支付渠道
+ * @author liweifan
+ * @updateTime 2022/3/31 11:30
+ */
+public enum PayChannelEnum implements BaseEnum<String, PayChannelEnum> {
+    alipay("alipay","支付宝APP支付"),
+    wx_lite("wx_lite","微信APP支付")
+    ;
+    @EnumValue
+    private String code;
+    private String msg;
+
+    PayChannelEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+}

+ 22 - 5
cooleshow-payment/payment-server/src/main/java/com/yonge/cooleshow/payment/props/HuifuProperties.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/props/HuifuProperties.java

@@ -1,4 +1,4 @@
-package com.yonge.cooleshow.payment.props;
+package com.yonge.cooleshow.biz.dal.props;
 
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
@@ -9,14 +9,31 @@ import org.springframework.cloud.context.config.annotation.RefreshScope;
 @RefreshScope
 @ConfigurationProperties("huifu")
 public class HuifuProperties {
+    /***
+     * 汇付 控制台 主页面应用的app_id
+     * @author liweifan
+     * @updateTime 2022/3/31 11:19
+     */
+    private String appId;
+    /***
+     * 汇付 控制台->商户信息管理->证书管理中的API Key(prod模式的API KEY)
+     * @author liweifan
+     * @updateTime 2022/3/31 11:19
+     */
     private String apiKey;
-
+    /***
+     * 汇付 控制台->商户信息管理->证书管理中的API Key(mock模式的API KEY)
+     * @author liweifan
+     * @updateTime 2022/3/31 11:19
+     */
     private String mockApiKey;
-
+    /***
+     * 商户发起请求时,用于请求参数加签所需要的RSA私钥
+     * @author liweifan
+     * @updateTime 2022/3/31 11:24
+     */
     private String rsaPrivateKey;
 
-    private String appId;
-
     public String getApiKey() {
         return apiKey;
     }

+ 38 - 15
cooleshow-payment/payment-server/src/main/java/com/yonge/cooleshow/payment/sdk/PaymentSdk.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/PaymentSdk.java

@@ -1,17 +1,24 @@
-package com.yonge.cooleshow.payment.sdk;
+package com.yonge.cooleshow.biz.dal.sdk;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.huifu.adapay.core.exception.BaseAdaPayException;
 import com.huifu.adapay.model.Payment;
 import com.huifu.adapay.model.PaymentConfirm;
-import com.yonge.cooleshow.payment.config.HuifuConfiguration;
-import com.yonge.cooleshow.payment.exception.ThirdpartyException;
+import com.yonge.cooleshow.biz.dal.config.HuifuConfiguration;
+import com.yonge.cooleshow.biz.dal.sdk.req.PaymentReq;
+import com.yonge.cooleshow.biz.dal.service.impl.ImGroupMemberServiceImpl;
+import com.yonge.toolset.thirdparty.exception.ThirdpartyException;
+import com.yonge.toolset.utils.collection.MapUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 
 @Component
 public class PaymentSdk {
+    private final static Logger log = LoggerFactory.getLogger(PaymentSdk.class);
 
     /**
      * 执行一个支付交易
@@ -19,25 +26,41 @@ public class PaymentSdk {
      * @return 创建的支付对象
      * @throws Exception 异常
      */
-    public Map<String, Object> executePayment(Map<String, Object> paymentParams) throws Exception {
-        paymentParams.put("app_id", HuifuConfiguration.getHuifuProperties().getAppId());
-
-        //log.info("汇付[创建支付对象] Req:{}", paymentParams);
+    public Map<String, Object> executePayment(PaymentReq paymentReq) {
+        paymentReq.setApp_id(HuifuConfiguration.getHuifuProperties().getAppId());
+        //创建分账对象
+        Map<String, String> div_member = new HashMap<>();
+        div_member.put("member_id", "0");
+        div_member.put("amount", paymentReq.getPay_amt());
+        div_member.put("fee_flag", "Y");
+        List<Map<String, String>> div_members = Arrays.asList(div_member);
+        paymentReq.setDiv_members(JSONObject.toJSONString(div_members));
+
+        log.info("汇付[创建支付对象] Req:{}", JSONObject.toJSONString(paymentReq));
         //调用sdk方法,创建支付,得到支付对象
-        Map<String, Object> payment = Payment.create(paymentParams);
-        //log.info("汇付[创建支付对象] Resp:{}", payment);
-
-        String errorCode = (String) payment.get("error_code");
+        Map<String, Object> paymentParams = MapUtil.populateMap(new HashMap<>(), paymentReq);
+        Map<String, Object> res;
+        try {
+            res = Payment.create(paymentParams);
+        } catch (BaseAdaPayException e) {
+            throw new ThirdpartyException(e.getMessage());
+        }
+        if (null == res) {
+            throw new ThirdpartyException("请求失败");
+        }
+        log.info("汇付[创建支付对象] Resp:{}", res);
+        String errorCode = (String) res.get("error_code");
         if (null != errorCode) {
-            String errorMsg = (String) payment.get("error_msg");
+            String errorMsg = (String) res.get("error_msg");
             throw new ThirdpartyException(errorMsg);
         }
-        return payment;
+        return res;
     }
 
     /**
      * 创建确认对象
      * 创建支付确认对象适用于延时分账的场景
+     *
      * @return 查询的支付对象
      * @throws Exception 异常
      */

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/req/DeviceInfo.java

@@ -0,0 +1,27 @@
+package com.yonge.cooleshow.biz.dal.sdk.req;
+
+import java.io.Serializable;
+
+/**
+ * 交易设备信息
+ * @Author: liweifan
+ * @Data: 2022/3/31 11:36
+ */
+public class DeviceInfo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /***
+     * 交易设备所在的公网 IP
+     * @author liweifan
+     * @updateTime 2022/3/31 11:07
+     */
+    private String device_ip;
+
+    public String getDevice_ip() {
+        return device_ip;
+    }
+
+    public void setDevice_ip(String device_ip) {
+        this.device_ip = device_ip;
+    }
+}

+ 55 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/req/DivMember.java

@@ -0,0 +1,55 @@
+package com.yonge.cooleshow.biz.dal.sdk.req;
+
+import java.io.Serializable;
+
+/**
+ * 分账对象
+ * @Author: liweifan
+ * @Data: 2022/3/31 11:26
+ */
+public class DivMember implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 分账用户 Member对象 的 id;若是商户本身时,传入0
+     * @author liweifan
+     * @updateTime 2022/3/31 11:27
+     */
+    private String member_id;
+    /**
+     * 分账金额,精确到分,如0.50,1.00等,分账总金额必须等于主交易金额,金额不能为0.00
+     * @author liweifan
+     * @updateTime 2022/3/31 11:28
+     */
+    private String amount;
+    /**
+     * 是否手续费承担方,N-否,Y-是,手续费承担方有且只能有一个
+     * @author liweifan
+     * @updateTime 2022/3/31 11:28
+     */
+    private String fee_flag;
+
+    public String getMember_id() {
+        return member_id;
+    }
+
+    public void setMember_id(String member_id) {
+        this.member_id = member_id;
+    }
+
+    public String getAmount() {
+        return amount;
+    }
+
+    public void setAmount(String amount) {
+        this.amount = amount;
+    }
+
+    public String getFee_flag() {
+        return fee_flag;
+    }
+
+    public void setFee_flag(String fee_flag) {
+        this.fee_flag = fee_flag;
+    }
+}

+ 5 - 40
cooleshow-payment/payment-api/src/main/java/com/yonge/cooleshow/payment/sdk/PaymentConfirmParam.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/req/PaymentConfirmParam.java

@@ -1,12 +1,15 @@
-package com.yonge.cooleshow.payment.sdk;
+package com.yonge.cooleshow.biz.dal.sdk.req;
 
+import java.io.Serializable;
 import java.util.List;
 
 /**
  * @Author: liweifan
  * @Data: 2022/3/11 17:44
  */
-public class PaymentConfirmParam {
+public class PaymentConfirmParam implements Serializable {
+    private static final long serialVersionUID = 1L;
+
     //Adapay生成的支付对象id
     private String payment_id;
     //请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一
@@ -67,42 +70,4 @@ public class PaymentConfirmParam {
     public void setFee_mode(String fee_mode) {
         this.fee_mode = fee_mode;
     }
-
-    /***
-     * 分账对象
-     * @author liweifan
-     * @updateTime 2022/3/11 18:03
-     */
-    public class  DivMember{
-        //分账用户 Member对象 的 id;若是商户本身时,传入0
-        private String member_id;
-        //分账金额,精确到分,如0.50,1.00等,分账总金额必须等于主交易金额,金额不能为0.00
-        private String amount;
-        //是否手续费承担方,N-否,Y-是,手续费承担方有且只能有一个
-        private String fee_flag;
-
-        public String getMember_id() {
-            return member_id;
-        }
-
-        public void setMember_id(String member_id) {
-            this.member_id = member_id;
-        }
-
-        public String getAmount() {
-            return amount;
-        }
-
-        public void setAmount(String amount) {
-            this.amount = amount;
-        }
-
-        public String getFee_flag() {
-            return fee_flag;
-        }
-
-        public void setFee_flag(String fee_flag) {
-            this.fee_flag = fee_flag;
-        }
-    }
 }

+ 168 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/req/PaymentReq.java

@@ -0,0 +1,168 @@
+package com.yonge.cooleshow.biz.dal.sdk.req;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * 创建支付对象请求参数
+ * @Author: liweifan
+ * @Data: 2022/3/31 10:58
+ */
+public class PaymentReq implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /***
+     * 请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一
+     * @author liweifan
+     * @updateTime 2022/3/31 11:00
+     */
+    private String order_no;
+    /***
+     * 控制台 主页面应用的app_id
+     * @author liweifan
+     * @updateTime 2022/3/31 11:00
+     */
+    private String app_id;
+    /***
+     * 支付渠道,参见 支付渠道
+     * @author liweifan
+     * @updateTime 2022/3/31 11:01
+     */
+    private String pay_channel;
+    /***
+     * 交易金额,必须大于0,保留两位小数点,如0.10、100.05等
+     * @author liweifan
+     * @updateTime 2022/3/31 11:01
+     */
+    private String pay_amt;
+    /***
+     * 商品标题
+     * @author liweifan
+     * @updateTime 2022/3/31 11:01
+     */
+    private String goods_title;
+    /***
+     * 商品描述信息,微信小程序和微信公众号该字段最大长度42个字符
+     * @author liweifan
+     * @updateTime 2022/3/31 11:01
+     */
+    private String goods_desc;
+    /***
+     * 分账对象信息列表,最多仅支持7个分账方,json 数组形式,详见 分账对象信息列表
+     * @author liweifan
+     * @updateTime 2022/3/31 11:01
+     */
+    private String div_members;
+    /***
+     * 订单附加说明
+     * @author liweifan
+     * @updateTime 2022/3/31 11:01
+     */
+    private String description;
+    /***
+     * 前端设备信息,详见 设备信息
+     * @author liweifan
+     * @updateTime 2022/3/31 11:01
+     */
+    private DeviceInfo device_info;
+    /***
+     * 支付渠道额外参数,JSON格式,条件可输入,详见 支付渠道 expend参数
+     * @author liweifan
+     * @updateTime 2022/3/31 11:01
+     */
+    private Map<String,Object> expend;
+    /***
+     * 异步通知地址,url为http/https路径,服务器POST回调,URL 上请勿附带参数
+     * @author liweifan
+     * @updateTime 2022/3/31 11:01
+     */
+    private String notify_url;
+
+    public String getOrder_no() {
+        return order_no;
+    }
+
+    public void setOrder_no(String order_no) {
+        this.order_no = order_no;
+    }
+
+    public String getApp_id() {
+        return app_id;
+    }
+
+    public void setApp_id(String app_id) {
+        this.app_id = app_id;
+    }
+
+    public String getPay_amt() {
+        return pay_amt;
+    }
+
+    public void setPay_amt(String pay_amt) {
+        this.pay_amt = pay_amt;
+    }
+
+    public String getGoods_title() {
+        return goods_title;
+    }
+
+    public void setGoods_title(String goods_title) {
+        this.goods_title = goods_title;
+    }
+
+    public String getGoods_desc() {
+        return goods_desc;
+    }
+
+    public void setGoods_desc(String goods_desc) {
+        this.goods_desc = goods_desc;
+    }
+
+    public String getDiv_members() {
+        return div_members;
+    }
+
+    public void setDiv_members(String div_members) {
+        this.div_members = div_members;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public DeviceInfo getDevice_info() {
+        return device_info;
+    }
+
+    public void setDevice_info(DeviceInfo device_info) {
+        this.device_info = device_info;
+    }
+
+    public Map<String, Object> getExpend() {
+        return expend;
+    }
+
+    public void setExpend(Map<String, Object> expend) {
+        this.expend = expend;
+    }
+
+    public String getNotify_url() {
+        return notify_url;
+    }
+
+    public void setNotify_url(String notify_url) {
+        this.notify_url = notify_url;
+    }
+
+    public String getPay_channel() {
+        return pay_channel;
+    }
+
+    public void setPay_channel(String pay_channel) {
+        this.pay_channel = pay_channel;
+    }
+}

+ 9 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java

@@ -2,8 +2,11 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.CourseGroupDao;
-import com.yonge.cooleshow.biz.dal.dto.CourseGroupDto;
+import com.yonge.cooleshow.biz.dal.dto.CheckLiveCourseTimeDto;
 import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
+import com.yonge.cooleshow.biz.dal.entity.CourseTimeEntity;
+
+import java.util.List;
 
 /**
  * 课程组表(CourseGroup)表服务接口
@@ -15,6 +18,10 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     CourseGroupDao getDao();
 
-    void add(CourseGroupDto dto);
+    /**
+     * 创建直播课程组时将课时写到缓存当作锁定的时间
+     */
+    List<CourseTimeEntity> lockCourseToCache(CheckLiveCourseTimeDto dto);
+
 }
 

+ 48 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java

@@ -10,6 +10,7 @@ import javax.validation.Valid;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
 
 /**
  * 老师课程表(CourseSchedule)表服务接口
@@ -34,6 +35,53 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
     PageInfo<TeacherCourseVo> queryTeacherLiveCourse(Map<String, Object> param);
 
     /**
+     * 校验该学生大于当前时间并未开始的课程时间和传入时间段有没有交集
+     *
+     * @param studentId 学生id
+     * @param startTime 新增课程 开始时间
+     * @param endTime   新增课程 结束时间
+     * @return true 被占用 false 没有被占用
+     */
+    boolean checkStudentCourseTime(Long studentId, Date startTime, Date endTime);
+
+    /**
+     * 校验老师这个时间段有没有被占用-校验课时
+     *
+     * @param teacherId 老师id
+     * @param startTime 新增课程 开始时间
+     * @param endTime   新增课程 结束时间
+     * @return true 被占用 false 没有被占用
+     */
+    boolean checkTeacherCourseTime(Long teacherId, Date startTime, Date endTime);
+
+    /**
+     * 查询这个课程列表中时间是否有重叠
+     * <p>案例:1
+     * <p>已有9:00~ 10:00 课程
+     * <p>新增课程 09:10~ 09:40
+     * <p>返回 true
+     *
+     * <p>案例:2
+     * <p>已有9:00~ 10:00 课程
+     * <p>新增课程 08:45~ 09:40
+     * <p>返回 true
+     *
+     * <p>案例:3
+     * <p>已有9:00~ 10:00 课程
+     * <p>新增课程 10:00~ 10:40
+     * <p>返回 false
+     *
+     * @param list         时间列表
+     * @param startTimeFun 获取现课程开始时间
+     * @param endTimeFun   获取现课程结束时间
+     * @param startTime    新增课程开始时间
+     * @param endTime      新增课程结束时间
+     * @return true 被占用 false 没有被占用
+     */
+    <T> boolean checkCourseTime(List<T> list, Function<T, Date> startTimeFun, Function<T, Date> endTimeFun,
+                                Date startTime, Date endTime);
+
+    /**
      * 锁定课时
      *
      * @param id 课程id

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/LiveRoomService.java

@@ -57,5 +57,9 @@ public interface LiveRoomService extends IService<LiveRoom> {
      */
     List<RoomUserInfoCache> queryRoomUserInfo(String roomUid);
 
+    /**
+     * 方便测试观察房间数据的方法
+     */
+    Map<String, Object> test(String roomUid);
 }
 

+ 0 - 29
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/OrderService.java

@@ -1,29 +0,0 @@
-package com.yonge.cooleshow.biz.dal.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.yonge.cooleshow.biz.dal.vo.OrderVo;
-import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
-import com.yonge.cooleshow.biz.dal.entity.Order;
-
-/**
- * 平台订单表 服务类
- * @author liweifan
- * @date 2022-03-30
- */
-public interface OrderService extends IService<Order>  {
-
-	/**
-     * 查询详情
-     * @author liweifan
- 	 * @date 2022-03-30
-     */
-	OrderVo detail(Long id);
-
-    /**
-     * 分页查询
-     * @author liweifan
- 	 * @date 2022-03-30
-     */
-    IPage<OrderVo> selectPage(IPage<OrderVo> page, OrderSearch query);
-}

+ 5 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/OrderDetailService.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderDetailService.java

@@ -2,28 +2,28 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.yonge.cooleshow.biz.dal.vo.OrderDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderDetailSearch;
-import com.yonge.cooleshow.biz.dal.entity.OrderDetail;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderDetail;
 
 /**
  * 平台订单表 服务类
  * @author liweifan
  * @date 2022-03-30
  */
-public interface OrderDetailService extends IService<OrderDetail>  {
+public interface UserOrderDetailService extends IService<UserOrderDetail>  {
 
 	/**
      * 查询详情
      * @author liweifan
  	 * @date 2022-03-30
      */
-	OrderDetailVo detail(Long id);
+	UserOrderDetailVo detail(Long id);
 
     /**
      * 分页查询
      * @author liweifan
  	 * @date 2022-03-30
      */
-    IPage<OrderDetailVo> selectPage(IPage<OrderDetailVo> page, OrderDetailSearch query);
+    IPage<UserOrderDetailVo> selectPage(IPage<UserOrderDetailVo> page, OrderDetailSearch query);
 }

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderPaymentService.java

@@ -0,0 +1,14 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderPayment;
+
+/**
+ * 平台订单支付表 服务类
+ *
+ * @author liweifan
+ * @date 2022-04-01
+ */
+public interface UserOrderPaymentService extends IService<UserOrderPayment> {
+
+}

+ 5 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/OrderRefundsService.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderRefundsService.java

@@ -2,28 +2,28 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.yonge.cooleshow.biz.dal.vo.OrderRefundsVo;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderRefundsVo;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderRefundsSearch;
-import com.yonge.cooleshow.biz.dal.entity.OrderRefunds;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderRefunds;
 
 /**
  * 用户退款表 服务类
  * @author liweifan
  * @date 2022-03-30
  */
-public interface OrderRefundsService extends IService<OrderRefunds>  {
+public interface UserOrderRefundsService extends IService<UserOrderRefunds>  {
 
 	/**
      * 查询详情
      * @author liweifan
  	 * @date 2022-03-30
      */
-	OrderRefundsVo detail(Long id);
+	UserOrderRefundsVo detail(Long id);
 
     /**
      * 分页查询
      * @author liweifan
  	 * @date 2022-03-30
      */
-    IPage<OrderRefundsVo> selectPage(IPage<OrderRefundsVo> page, OrderRefundsSearch query);
+    IPage<UserOrderRefundsVo> selectPage(IPage<UserOrderRefundsVo> page, OrderRefundsSearch query);
 }

+ 54 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java

@@ -0,0 +1,54 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderPayReq;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
+import com.yonge.cooleshow.biz.dal.entity.UserOrder;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
+import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderPayRes;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+
+/**
+ * 平台订单表 服务类
+ * @author liweifan
+ * @date 2022-03-30
+ */
+public interface UserOrderService extends IService<UserOrder>  {
+
+	/**
+     * 查询详情 通过订单id
+     * @author liweifan
+ 	 * @date 2022-03-30
+     */
+	UserOrderVo detail(Long id);
+	/**
+	 * 查询详情 通过订单号
+	 * @author liweifan
+	 * @date 2022-03-30
+	 */
+	UserOrderVo detail(String orderNo);
+	/**
+     * 分页查询
+     * @author liweifan
+ 	 * @date 2022-03-30
+     */
+    IPage<UserOrderVo> selectPage(IPage<UserOrderVo> page, OrderSearch query);
+	/***
+	 * 下单接口
+	 * @author liweifan
+	 * @param: orderReq
+	 * @updateTime 2022/3/31 15:42
+	 * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.entity.Order>
+	 */
+    HttpResponseResult<UserOrder> executeOrder(OrderReq orderReq);
+	/***
+	 * 订单付款
+	 * @author liweifan
+	 * @param: payReq
+	 * @updateTime 2022/3/31 17:23
+	 * @return: com.yonge.cooleshow.common.entity.HttpResponseResult
+	 */
+    HttpResponseResult<OrderPayRes> orderPay(OrderPayReq payReq);
+}

+ 5 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupDetailService.java

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailUpVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent;
 
 import java.util.List;
 
@@ -16,11 +17,13 @@ import java.util.List;
  * @version v1.0
  **/
 public interface VideoLessonGroupDetailService extends IService<VideoLessonGroupDetail> {
+    IPage<VideoLessonGroupDetail> selectPage(IPage<VideoLessonGroupDetail> page, VideoLessonSearch query);
+
+    IPage<VideoLessonPurchaseStudent> selectPageStudent(IPage<VideoLessonPurchaseStudent> page, VideoLessonSearch query);
+
     void insertVideoLesson(List<VideoLessonGroupDetail> videoLessonList, SysUser sysUser);
 
     void updateDetail(VideoLessonGroupDetailUpVo detailUpVo, SysUser sysUser);
 
     void deleteDetail(Long id);
-
-    IPage<VideoLessonGroupDetail> selectPage(IPage<VideoLessonGroupDetail> page, VideoLessonSearch query);
 }

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java

@@ -1,11 +1,13 @@
 package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonVo;
 
 /**
  * VideoLessonGroupService服务类
@@ -19,4 +21,6 @@ public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
     void updateGroup(VideoLessonGroupUpVo lessonGroupUpVo);
 
     void deleteGroup(Long id);
+
+    void add(VideoLessonVo lessonVo, SysUser sysUser);
 }

+ 19 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VipCardRecordService.java

@@ -2,9 +2,13 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCheckRes;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
 import com.yonge.cooleshow.biz.dal.dto.search.VipCardRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
 /**
  * 购买会员卡记录表 服务类
@@ -26,4 +30,19 @@ public interface VipCardRecordService extends IService<VipCardRecord>  {
  	 * @date 2022-03-30
      */
     IPage<VipCardRecordVo> selectPage(IPage<VipCardRecordVo> page, VipCardRecordSearch query);
+	/***
+	 * 验证订单参数
+	 * @author liweifan
+	 * @param: orderReq
+	 * @updateTime 2022/3/31 15:47
+	 * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
+	 */
+    HttpResponseResult<OrderCheckRes> checkOrder(OrderReq orderReq);
+	/***
+	 * 订单下单后操作
+	 * @author liweifan
+	 * @param: orderVo
+	 * @updateTime 2022/3/31 17:24
+	 */
+    void orderAfter(UserOrderVo orderVo);
 }

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

@@ -1,17 +1,40 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.constant.CourseConstant;
+import com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant;
+import com.yonge.cooleshow.biz.dal.constant.SysConfigConstant;
 import com.yonge.cooleshow.biz.dal.dao.CourseGroupDao;
-import com.yonge.cooleshow.biz.dal.dto.CourseGroupDto;
+import com.yonge.cooleshow.biz.dal.dto.CheckLiveCourseTimeDto;
+import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto;
 import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
+import com.yonge.cooleshow.biz.dal.entity.CourseTimeEntity;
 import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.common.exception.BizException;
+import com.yonge.toolset.utils.date.DateUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.redisson.api.RMap;
+import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+
 /**
  * 课程组表(CourseGroup)表服务实现类
  *
@@ -23,6 +46,15 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
 
     private final static Logger log = LoggerFactory.getLogger(CourseGroupServiceImpl.class);
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private RedissonClient redissonClient;
+    @Autowired
+    private CourseScheduleService courseScheduleService;
+    @Autowired
+    private SysConfigService sysConfigService;
+
     @Override
     public CourseGroupDao getDao() {
         return this.baseMapper;
@@ -30,15 +62,163 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
 
     /**
      * 新增课程组
+     *
      * @param dto
      */
     @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void add(CourseGroupDto dto){
+    public void add(LiveCourseGroupDto dto) {
+        //1.查询该老师没有用缓存的课时
+
+        //1.1 有缓存课时
+
+        //1.2 没有缓存课时
+
+    }
+
+    /**
+     * 创建直播课程组时将课时写到缓存当作锁定的时间
+     */
+    public List<CourseTimeEntity> lockCourseToCache(CheckLiveCourseTimeDto dto) {
+        //先自校验传入时间是否交集
+        List<CourseTimeEntity> timeList = dto.getTimeList();
+        if (timeList.size() > 1) {
+            for (int i = 0; i < timeList.size(); i++) {
+                if (i == timeList.size() - 1) {
+                    break;
+                }
+                CourseTimeEntity o1 = timeList.get(i);
+                List<CourseTimeEntity> newList = timeList.subList(i + 1, timeList.size());
+                boolean checkParamTime = courseScheduleService.checkCourseTime(newList, CourseTimeEntity::getStartTime, CourseTimeEntity::getEndTime, o1.getStartTime(), o1.getEndTime());
+                if (checkParamTime) {
+                    throw new BizException(DateUtil.dateToString(o1.getStartTime(), "yyyy年MM月dd号 HH点mm分") + "的课程时间重复!");
+                }
+            }
+        }
 
+        //再校验数据库中课程时间和传入时间是否有交集
+        timeList.forEach(o -> {
+            boolean checkDataTime = courseScheduleService.checkTeacherCourseTime(dto.getTeacherId(), o.getStartTime(), o.getEndTime());
+            if (checkDataTime) {
+                throw new BizException("预计安排在" + DateUtil.dateToString(o.getStartTime(), "yyyy年MM月dd号 HH点mm分") + "的课程已被学员选择!");
+            }
+        });
+        //先将当前验证通过课程时间锁住
+        String key = String.join(":", LiveRoomConstant.COOLESHOW, CourseConstant.LOCK_COURSE_TIME_INFO, dto.getTeacherId().toString());
+        RMap<Long, List<CourseTimeEntity>> map = redissonClient.getMap(key);
+        map.expire(1L, TimeUnit.DAYS);
+        map.fastPut(dto.getTeacherId(), timeList);
+
+        //需要自动补全课时
+        if (dto.getLoop() == 1) {
+            //获取总课程数量
+            Integer totalCourseNum = dto.getCourseNum();
+            //获取当前课程
+            int nowCourseNum = timeList.size();
+            //自动排课,获取排课后所有的课程时间
+            List<CourseTimeEntity> allCourseTime = teacherAutoPlanningLiveCourseTime(dto.getTeacherId(), totalCourseNum, nowCourseNum, timeList);
+            allCourseTime.sort(Comparator.comparing(CourseTimeEntity::getStartTime));
+            //替换掉原有的课时
+            dto.setTimeList(allCourseTime);
+            //将自动排课后的课时写入缓存覆盖原有的
+            map.fastPut(dto.getTeacherId(), allCourseTime);
+        }
+        return dto.getTimeList();
     }
 
+    /**
+     * 老师创建直播课自动排课
+     * <p>自动排课规则及场景:总5节课,填入2节,需要自动补3节
+     * <p>1.把前面2节课的时间循环+1周直到填满5节课为止
+     * <p>2.如果自动排课时的时间和未来课程时间有冲突则继续往后面延续一周
+     *
+     * @param totalCourseNum 总课程数量
+     * @param nowCourseNum   当前选择的课程数量
+     * @param paramTimeList  当前课程的时间段
+     * @return 自动排课后的全部课时
+     */
+    private List<CourseTimeEntity> teacherAutoPlanningLiveCourseTime(Long teacherId, int totalCourseNum, int nowCourseNum, List<CourseTimeEntity> paramTimeList) {
+        //获取总课程数量 - 获取当前选择的课程数量 = 要自动排课的课程数量
+        int diffCourse = totalCourseNum - nowCourseNum;
+        //获取课程时间,并按开始时间排序
+        List<CourseTimeEntity> sortCourseTime = paramTimeList.stream()
+                .sorted(Comparator.comparing(CourseTimeEntity::getStartTime))
+                .collect(Collectors.toList());
+        //获取最大排课周
+        String maxWeekStr = sysConfigService.findConfigValue(SysConfigConstant.AUTO_PLANNING_COURSE_MAX_WEEK);
+        int maxWeek = 26;//默认 26周
+        if (StringUtils.isBlank(maxWeekStr)) {
+            maxWeek = Integer.parseInt(maxWeekStr);
+        }
+        int index = 0;
+        //自动补全课时
+        for (int i = 0; i < diffCourse; i++) {
+            //需要增加的周数
+            AtomicInteger week = new AtomicInteger(1);
+            //是否要一直生成课程 true 一直增加周数并生成到不冲突的时间为止
+            AtomicBoolean flag = new AtomicBoolean(true);
+            //生成课程
+            while (flag.get()) {
+                if (index == nowCourseNum) {
+                    index = 0;
+                    //进入新的循环周数+1
+                    week.getAndIncrement();
+                }
+                CourseTimeEntity timeDto = sortCourseTime.get(index);
+                if (week.get() > maxWeek) {
+                    throw new BizException("系统自动排课时发现当前时间往后" + maxWeek + "周的课程时间已排满,请手动排课!");
+                }
+                Date autoStartDate = DateUtil.addWeeks(timeDto.getStartTime(), week.get());
+                Date autoEndDate = DateUtil.addWeeks(timeDto.getEndTime(), week.get());
+
+                //true  flag = true 并且 周数+1
+                Consumer<Boolean> con = (check) -> {
+                    //check = true ,有交集延续1周后继续生成时间
+                    if (check) {
+                        week.getAndIncrement();
+                        flag.set(true);
+                    } else {
+                        flag.set(false);
+                    }
+                };
+
+                boolean checkTime;
 
+                //若:传入时间是1号10点和8号10点,然后1号10点自动生成的课时是8号10点那么就和传入的8号10点冲突了,这种情况需要继续往后延续1周
+                checkTime = courseScheduleService.checkCourseTime(sortCourseTime, CourseTimeEntity::getStartTime, CourseTimeEntity::getEndTime, autoStartDate, autoEndDate);
+                con.accept(checkTime);
+                //如果和传入时间冲突则跳过
+                if (flag.get()) {
+                    continue;
+                }
 
+                //校验当前生成时间是否和未来的课程时间是否交集
+                checkTime = courseScheduleService.checkTeacherCourseTime(teacherId, autoStartDate, autoEndDate);
+                con.accept(checkTime);
+                //如果和未来时间冲突则跳过
+                if (flag.get()) {
+                    continue;
+                }
+
+                //将自动生成时间收入集合
+                CourseTimeEntity autoTimeDto = new CourseTimeEntity();
+                autoTimeDto.setStartTime(autoStartDate);
+                autoTimeDto.setEndTime(autoEndDate);
+                sortCourseTime.add(autoTimeDto);
+            }
+            index++;
+        }
+        return sortCourseTime;
+    }
+
+    private SysUser getSysUser(Long userId) {
+        return Optional.ofNullable(userId)
+                .map(sysUserFeignService::queryUserById)
+                .orElseThrow(() -> new BizException("用户不存在"));
+    }
+
+    private SysUser getSysUser() {
+        return Optional.ofNullable(sysUserFeignService.queryUserInfo())
+                .orElseThrow(() -> new BizException("用户不存在"));
+    }
 }
 

+ 12 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -1,6 +1,5 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -18,7 +17,6 @@ import com.yonge.cooleshow.common.exception.BizException;
 import com.yonge.cooleshow.common.page.PageInfo;
 import com.yonge.toolset.utils.date.DateUtil;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +31,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.function.Function;
 
 /**
  * 老师课程表(CourseSchedule)表服务实现类
@@ -100,7 +99,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         String ymd = DateUtil.format(startTime, DateUtil.DEFAULT_PATTERN);
         //查询大于当前时间并未开始的课程
         List<CourseSchedule> list = baseMapper.queryStudentCourse(studentId, ymd);
-        return checkCourseTime(list, startTime, endTime);
+        return checkCourseTime(list, CourseSchedule::getStartTime, CourseSchedule::getEndTime, startTime, endTime);
     }
 
     /**
@@ -120,7 +119,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         List<CourseSchedule> list = this.list(Wrappers.<CourseSchedule>lambdaQuery()
                 .eq(CourseSchedule::getTeacherId, teacherId)
                 .eq(CourseSchedule::getClassDate, ymd));
-        return checkCourseTime(list, startTime, endTime);
+        return checkCourseTime(list, CourseSchedule::getStartTime, CourseSchedule::getEndTime, startTime, endTime);
     }
 
     /**
@@ -140,12 +139,15 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * <p>新增课程 10:00~ 10:40
      * <p>返回 false
      *
-     * @param list      课程列表
-     * @param startTime 新增课程 开始时间
-     * @param endTime   新增课程 结束时间
+     * @param list         时间列表
+     * @param startTimeFun 获取现课程开始时间
+     * @param endTimeFun   获取现课程结束时间
+     * @param startTime    新增课程开始时间
+     * @param endTime      新增课程结束时间
      * @return true 被占用 false 没有被占用
      */
-    public boolean checkCourseTime(List<CourseSchedule> list, Date startTime, Date endTime) {
+    public <T> boolean checkCourseTime(List<T> list, Function<T, Date> startTimeFun, Function<T, Date> endTimeFun,
+                                       Date startTime, Date endTime) {
         WrapperUtil.checkObj(startTime, "开始时间不能为空!");
         WrapperUtil.checkObj(endTime, "结束时间不能为空!");
         // 如果没有课程,直接返回false
@@ -154,8 +156,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         }
         boolean result;
         //匹配时间是否有交集
-        for (CourseSchedule course : list) {
-            result = WrapperUtil.inInterSection(course.getStartTime(), course.getEndTime(), startTime, endTime);
+        for (T t : list) {
+            result = WrapperUtil.inInterSection(startTimeFun.apply(t), endTimeFun.apply(t), startTime, endTime);
             if (result) {
                 return true;
             }

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.LiveRoomDao;
+import com.yonge.cooleshow.biz.dal.dto.CheckLiveCourseTimeDto;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
 import com.yonge.cooleshow.biz.dal.enums.RoomTypeEnum;
@@ -483,5 +484,75 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         return roomUserInfoCaches.size();
     }
 
+    /**
+     * 方便测试观察房间数据的方法
+     */
+    public Map<String, Object> test(String roomUid) {
+        //result
+        Map<String, Object> result = new HashMap<>();
+        //模拟排课数据 测试用
+        CheckLiveCourseTimeDto dto = new CheckLiveCourseTimeDto();
+        dto.setTeacherId(99L);
+        dto.setCourseNum(6);
+        dto.setLoop(1);
+
+        List<CourseTimeEntity> timeList = new ArrayList<>();
+        CourseTimeEntity c1 = new CourseTimeEntity();
+        c1.setStartTime(DateUtil.stringToDate("2022-04-01 09:00:00", DateUtil.EXPANDED_DATE_TIME_FORMAT));
+        c1.setEndTime(DateUtil.stringToDate("2022-04-01 09:30:00", DateUtil.EXPANDED_DATE_TIME_FORMAT));
+        CourseTimeEntity c2 = new CourseTimeEntity();
+        c2.setStartTime(DateUtil.stringToDate("2022-04-08 09:00:00", DateUtil.EXPANDED_DATE_TIME_FORMAT));
+        c2.setEndTime(DateUtil.stringToDate("2022-04-08 09:30:00", DateUtil.EXPANDED_DATE_TIME_FORMAT));
+        CourseTimeEntity c3 = new CourseTimeEntity();
+        c3.setStartTime(DateUtil.stringToDate("2022-04-02 09:00:00", DateUtil.EXPANDED_DATE_TIME_FORMAT));
+        c3.setEndTime(DateUtil.stringToDate("2022-04-02 09:30:00", DateUtil.EXPANDED_DATE_TIME_FORMAT));
+        timeList.add(c3);
+        timeList.add(c1);
+        timeList.add(c2);
+        dto.setTimeList(timeList);
+        List<CourseTimeEntity> courseTimeEntities = courseGroupService.lockCourseToCache(dto);
+        result.put("自动生成课时", courseTimeEntities);
+
+        //获取房间信息
+        RBucket<RoomInfoCache> speakerCache = redissonClient.getBucket(LIVE_ROOM_INFO.replace(ROOM_UID, roomUid));
+        if (speakerCache.isExists()) {
+            result.put("房间信息信息", speakerCache.get());
+        } else {
+            result.put("房间信息", "房间信息不存在");
+        }
+
+        //点赞数
+        Object like = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).get();
+        if (Objects.isNull(like)) {
+            like = 0;
+        }
+        result.put("点赞数", like);
+
+        int totalLook = 0;
+        int look = 0;
+        List<RoomUserInfoCache> inRoomUserInfo;
+
+        //累计总观看的用户数量
+        List<RoomUserInfoCache> totalUserInfo = queryTotalRoomUserInfo(roomUid);
+        if (CollectionUtils.isNotEmpty(totalUserInfo)) {
+            //正在房间观看的用户数据
+            inRoomUserInfo = queryRoomUserInfo(totalUserInfo);
+            if (CollectionUtils.isNotEmpty(inRoomUserInfo)) {
+                look = inRoomUserInfo.size();
+                result.put("正在观看的人员信息", inRoomUserInfo);
+            } else {
+                result.put("正在观看的人员信息", "没有正在观看的人员数据");
+            }
+            totalLook = totalUserInfo.size();
+            result.put("总人员数据", totalUserInfo);
+        } else {
+            result.put("总人员数据", "没有人员数据");
+        }
+
+        result.put("总观看人数", totalLook);
+        result.put("实时观看数", look);
+        return result;
+    }
+
 }
 

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

@@ -10,12 +10,13 @@ import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
 import com.yonge.cooleshow.biz.dal.dao.MusicAlbumDao;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.enums.StateEnum;
+
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.AlbumFavoriteService;
 import com.yonge.cooleshow.biz.dal.service.AlbumMusicRelateService;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.AlbumDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
 import com.yonge.cooleshow.common.exception.BizException;
@@ -91,7 +92,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         albumDetailVo.setAlbumDesc(musicAlbum.getAlbumDesc());
 
         IPage<MusicSheet> musicSheetVoIPage = musicSheetService.selectAlbumDetailPage(page,query);
-        albumDetailVo.setMusicSheetList(Condition.pageInfo(musicSheetVoIPage));
+        albumDetailVo.setMusicSheetList(PageUtil.pageInfo(musicSheetVoIPage));
         return albumDetailVo;
     }
 

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java

@@ -18,7 +18,7 @@ import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.StateEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
-import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetShareVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
@@ -122,7 +122,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         query.setState(StateEnum.ENABLE);
         // 只查3条
         query.setRows(3);
-        IPage<MusicSheetVo> musicSheetVoIPage = selectPage(Condition.getPage(query), query);
+        IPage<MusicSheetVo> musicSheetVoIPage = selectPage(PageUtil.getPage(query), query);
         MusicSheetShareVo musicSheetShareVo = new MusicSheetShareVo();
         musicSheetShareVo.setMusicSheetCount(musicSheetVoIPage.getTotal());
         musicSheetShareVo.setMusicSheetVoList(musicSheetVoIPage.getRecords());

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

@@ -1,27 +0,0 @@
-package com.yonge.cooleshow.biz.dal.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import com.yonge.cooleshow.biz.dal.entity.OrderDetail;
-import com.yonge.cooleshow.biz.dal.vo.OrderDetailVo;
-import com.yonge.cooleshow.biz.dal.dto.search.OrderDetailSearch;
-import com.yonge.cooleshow.biz.dal.dao.OrderDetailDao;
-import com.yonge.cooleshow.biz.dal.service.OrderDetailService;
-
-
-@Service
-public class OrderDetailServiceImpl extends ServiceImpl<OrderDetailDao, OrderDetail> implements OrderDetailService {
-
-	@Override
-    public OrderDetailVo detail(Long id) {
-        OrderDetailVo detail = baseMapper.detail(id);
-        return detail;
-    }
-    
-     @Override
-    public IPage<OrderDetailVo> selectPage(IPage<OrderDetailVo> page, OrderDetailSearch query){
-        return page.setRecords(baseMapper.selectPage(page, query));
-    }
-	
-}

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

@@ -1,27 +0,0 @@
-package com.yonge.cooleshow.biz.dal.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import com.yonge.cooleshow.biz.dal.entity.OrderRefunds;
-import com.yonge.cooleshow.biz.dal.vo.OrderRefundsVo;
-import com.yonge.cooleshow.biz.dal.dto.search.OrderRefundsSearch;
-import com.yonge.cooleshow.biz.dal.dao.OrderRefundsDao;
-import com.yonge.cooleshow.biz.dal.service.OrderRefundsService;
-
-
-@Service
-public class OrderRefundsServiceImpl extends ServiceImpl<OrderRefundsDao, OrderRefunds> implements OrderRefundsService {
-
-	@Override
-    public OrderRefundsVo detail(Long id) {
-        OrderRefundsVo detail = baseMapper.detail(id);
-        return detail;
-    }
-    
-     @Override
-    public IPage<OrderRefundsVo> selectPage(IPage<OrderRefundsVo> page, OrderRefundsSearch query){
-        return page.setRecords(baseMapper.selectPage(page, query));
-    }
-	
-}

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

@@ -1,27 +0,0 @@
-package com.yonge.cooleshow.biz.dal.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import com.yonge.cooleshow.biz.dal.entity.Order;
-import com.yonge.cooleshow.biz.dal.vo.OrderVo;
-import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
-import com.yonge.cooleshow.biz.dal.dao.OrderDao;
-import com.yonge.cooleshow.biz.dal.service.OrderService;
-
-
-@Service
-public class OrderServiceImpl extends ServiceImpl<OrderDao, Order> implements OrderService {
-
-	@Override
-    public OrderVo detail(Long id) {
-        OrderVo detail = baseMapper.detail(id);
-        return detail;
-    }
-    
-     @Override
-    public IPage<OrderVo> selectPage(IPage<OrderVo> page, OrderSearch query){
-        return page.setRecords(baseMapper.selectPage(page, query));
-    }
-	
-}

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -75,8 +75,8 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     }
 
     @Override
-    public IPage<TeacherVo> selectPage(IPage<TeacherVo> page, TeacherSearch teacher) {
-        return page.setRecords(baseMapper.selectPage(page, teacher));
+    public IPage<TeacherVo> selectPage(IPage<TeacherVo> page, TeacherSearch search) {
+        return page.setRecords(baseMapper.selectPage(page, search));
     }
 
     @Override

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

@@ -0,0 +1,27 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderDetail;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
+import com.yonge.cooleshow.biz.dal.dto.search.OrderDetailSearch;
+import com.yonge.cooleshow.biz.dal.dao.UserOrderDetailDao;
+import com.yonge.cooleshow.biz.dal.service.UserOrderDetailService;
+
+
+@Service
+public class UserOrderDetailServiceImpl extends ServiceImpl<UserOrderDetailDao, UserOrderDetail> implements UserOrderDetailService {
+
+	@Override
+    public UserOrderDetailVo detail(Long id) {
+        UserOrderDetailVo detail = baseMapper.detail(id);
+        return detail;
+    }
+    
+     @Override
+    public IPage<UserOrderDetailVo> selectPage(IPage<UserOrderDetailVo> page, OrderDetailSearch query){
+        return page.setRecords(baseMapper.selectPage(page, query));
+    }
+	
+}

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

@@ -0,0 +1,13 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderPayment;
+import com.yonge.cooleshow.biz.dal.dao.UserOrderPaymentDao;
+import com.yonge.cooleshow.biz.dal.service.UserOrderPaymentService;
+
+
+@Service
+public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao, UserOrderPayment> implements UserOrderPaymentService {
+
+}

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

@@ -0,0 +1,27 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderRefunds;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderRefundsVo;
+import com.yonge.cooleshow.biz.dal.dto.search.OrderRefundsSearch;
+import com.yonge.cooleshow.biz.dal.dao.UserOrderRefundsDao;
+import com.yonge.cooleshow.biz.dal.service.UserOrderRefundsService;
+
+
+@Service
+public class UserOrderRefundsServiceImpl extends ServiceImpl<UserOrderRefundsDao, UserOrderRefunds> implements UserOrderRefundsService {
+
+	@Override
+    public UserOrderRefundsVo detail(Long id) {
+        UserOrderRefundsVo detail = baseMapper.detail(id);
+        return detail;
+    }
+    
+     @Override
+    public IPage<UserOrderRefundsVo> selectPage(IPage<UserOrderRefundsVo> page, OrderRefundsSearch query){
+        return page.setRecords(baseMapper.selectPage(page, query));
+    }
+	
+}

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

@@ -0,0 +1,267 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.constant.SysConfigConstant;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderPayReq;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderDetail;
+import com.yonge.cooleshow.biz.dal.entity.UserOrder;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderPayment;
+import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.PayChannelEnum;
+import com.yonge.cooleshow.biz.dal.sdk.PaymentSdk;
+import com.yonge.cooleshow.biz.dal.sdk.req.DeviceInfo;
+import com.yonge.cooleshow.biz.dal.sdk.req.PaymentReq;
+import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCheckRes;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderPayRes;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.exception.BizException;
+import com.yonge.toolset.utils.collection.MapUtil;
+import org.apache.commons.beanutils.BeanUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
+import com.yonge.cooleshow.biz.dal.dao.UserOrderDao;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.PostConstruct;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+
+@Service
+public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> implements UserOrderService {
+    private final static Logger log = LoggerFactory.getLogger(UserOrderServiceImpl.class);
+
+    @Autowired
+    private VipCardRecordService vipCardRecordService;
+    @Autowired
+    private SysConfigService sysConfigService;
+    @Autowired
+    private UserOrderDetailService orderDetailService;
+    @Autowired
+    private UserOrderPaymentService orderPaymentService;
+    @Autowired
+    private PaymentSdk paymentSdk;
+
+    //验证订单是否可以下单
+    private static final Map<String, Function<OrderReq, HttpResponseResult<OrderCheckRes>>> checkOrder = new HashMap<>();
+    //插入订单后执行
+    private static final Map<String, Consumer<UserOrderVo>> orderAfter = new HashMap<>();
+
+    @PostConstruct
+    private void init() {
+        //vip开通缴费
+        checkOrder.put(OrderTypeEnum.VIP.getCode(), vipCardRecordService::checkOrder);
+
+
+        //vip开通缴费
+        orderAfter.put(OrderTypeEnum.VIP.getCode(), vipCardRecordService::orderAfter);
+    }
+
+    @Override
+    public UserOrderVo detail(Long id) {
+        return baseMapper.detailById(id);
+    }
+
+    @Override
+    public UserOrderVo detail(String orderNo) {
+        return baseMapper.detailByOrderNo(orderNo);
+    }
+
+    @Override
+    public IPage<UserOrderVo> selectPage(IPage<UserOrderVo> page, OrderSearch query) {
+        return page.setRecords(baseMapper.selectPage(page, query));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResponseResult<UserOrder> executeOrder(OrderReq orderReq) {
+        log.info("订单[创建订单] Req:{}", JSONObject.toJSONString(orderReq));
+        //todo 假定一个用户最多有三个待支付,支付中订单
+        /*Integer num = baseMapper.selectCount(Wrappers.<Order>query().lambda()
+                .eq(Order::getUserId, orderReq.getUserId())
+                .in(Order::getStatus, OrderStatusEnum.PAYING.getCode(), OrderStatusEnum.WAIT_PAY.getCode())
+        );
+        Integer payingNum = 3;
+        if (num >= payingNum) {
+            return HttpResponseResult.failed("未完成订单数过多");
+        }*/
+        //todo 订单验证参数,金额不小于0等
+
+        //验证参数,必须验证参数
+        Function<OrderReq, HttpResponseResult<OrderCheckRes>> checkFunction = checkOrder.get(orderReq.getOrderType());
+        if (Objects.isNull(checkFunction)) {
+            return HttpResponseResult.failed("参数校验失败");
+        }
+        HttpResponseResult<OrderCheckRes> checkResult = checkFunction.apply(orderReq);
+        if (!checkResult.getStatus() || null == checkResult.getData() || !checkResult.getData().getRes()) {
+            log.info("订单[创建订单] Res:{}", JSONObject.toJSONString(checkResult));
+            return HttpResponseResult.failed("参数校验失败");
+        }
+        //验证成功后,订单入库
+        UserOrderVo orderVo = insertOrder(orderReq, checkResult.getData());
+
+        Consumer<UserOrderVo> afterFunction = orderAfter.get(orderReq.getOrderType());
+        if (!Objects.isNull(afterFunction)) {
+            afterFunction.accept(orderVo);
+        }
+        return HttpResponseResult.succeed();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResponseResult<OrderPayRes> orderPay(OrderPayReq payReq) {
+        //查询订单
+        UserOrderVo detail = detail(payReq.getOrderNo());
+        if (null == detail) {
+            return HttpResponseResult.failed("订单不存在");
+        }
+        if (OrderStatusEnum.WAIT_PAY.equals(detail.getStatus())) {
+            //处于待支付状态,需要调用汇付发起付款请求接口
+            return orderPayWaitPay(payReq, detail);
+        } else if (OrderStatusEnum.PAYING.equals(detail.getStatus())) {
+            //处于付款中状态,需要拉起付款接口返回信息,并且去到汇付
+            return orderPayPaying(payReq, detail);
+        }
+        return HttpResponseResult.failed("订单状态异常");
+    }
+
+    /***
+     * 处理待支付订单
+     * @author liweifan
+     * @param: payReq
+     * @param: detail
+     * @updateTime 2022/4/1 10:32
+     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
+     */
+    private HttpResponseResult<OrderPayRes> orderPayWaitPay(OrderPayReq payReq, UserOrderVo detail) {
+        PaymentReq paymentReq = new PaymentReq();
+        paymentReq.setOrder_no(payReq.getOrderNo());
+        paymentReq.setPay_channel(payReq.getPayChannel().getCode());
+        paymentReq.setPay_amt(detail.getActualPrice().setScale(2).toString());
+        paymentReq.setGoods_title(detail.getOrderName());
+        paymentReq.setGoods_desc(detail.getOrderDesc());
+
+        DeviceInfo deviceInfo = new DeviceInfo();
+        deviceInfo.setDevice_ip(payReq.getIpAddress());
+
+        paymentReq.setDevice_info(deviceInfo);
+        paymentReq.setNotify_url("异步通知地址");
+
+        if (PayChannelEnum.wx_lite.equals(payReq.getPayChannel())) {
+            Map<String, Object> expend = new HashMap<>();
+            expend.put("open_id", payReq.getOpenId());
+            paymentReq.setExpend(expend);
+        }
+        //付款请求
+        Map<String, Object> res = paymentSdk.executePayment(paymentReq);
+
+        OrderPayRes orderPayRes = new OrderPayRes();
+        orderPayRes.setPay_amt(detail.getActualPrice().setScale(2).toString());
+
+        orderPayRes.setPay_info(
+                MapUtil.populateMap(new HashMap<>(), res.get("expend"))
+                        .get("pay_info").toString()
+        );
+        //insertOrderPayment();
+        //入订单付款表,同时修改订单状态
+        UserOrderPayment orderPayment = new UserOrderPayment();
+
+
+
+        return HttpResponseResult.succeed(orderPayRes);
+    }
+
+    /***
+     * 处理待支付中订单
+     * @author liweifan
+     * @param: payReq
+     * @param: detail
+     * @updateTime 2022/4/1 10:32
+     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
+     */
+    private HttpResponseResult<OrderPayRes> orderPayPaying(OrderPayReq payReq, UserOrderVo detail) {
+        return null;
+    }
+
+    /***
+     * 订单入库
+     * @author liweifan
+     * @param: orderReq
+     * @updateTime 2022/3/31 16:15
+     * @return: com.yonge.cooleshow.biz.dal.entity.Order
+     */
+    private UserOrderVo insertOrder(OrderReq orderReq, OrderCheckRes data) {
+        UserOrder userOrder = new UserOrder();
+        //todo 订单号生产规则
+        userOrder.setOrderNo("123");
+        userOrder.setUserId(orderReq.getUserId());
+        userOrder.setMerchId(data.getMerchId());
+        userOrder.setOrderName(orderReq.getOrderName());
+        userOrder.setOrderDesc(orderReq.getOrderDesc());
+        userOrder.setStatus(OrderStatusEnum.WAIT_PAY);
+        userOrder.setOriginalPrice(orderReq.getOriginalPrice());
+        userOrder.setExpectPrice(orderReq.getExpectPrice());
+        userOrder.setActualPrice(orderReq.getActualPrice());
+        userOrder.setCouponAmount(orderReq.getCouponAmount());
+        //平台服务费
+        BigDecimal serviceFeeRate = getServiceFeeRate(orderReq.getOrderType());
+        userOrder.setPlantformFee(orderReq.getActualPrice().multiply(serviceFeeRate));
+        userOrder.setPlantformFeeRate(serviceFeeRate);
+        userOrder.setUserNote(orderReq.getUserNote());
+        userOrder.setOrderType(orderReq.getOrderType());
+        userOrder.setCreateTime(new Date());
+        int insert = baseMapper.insert(userOrder);
+
+        if (insert == 0 || null == userOrder.getId()) {
+            throw new BizException("插入失败");
+        }
+        UserOrderDetail orderDetail = new UserOrderDetail();
+        orderDetail.setOrderNo(userOrder.getOrderNo());
+        orderDetail.setBizId(orderReq.getBizId());
+        orderDetail.setBizContent(orderReq.getBizContent());
+        orderDetail.setCreateTime(new Date());
+        orderDetailService.save(orderDetail);
+
+        UserOrderVo vo = new UserOrderVo();
+        try {
+            BeanUtils.copyProperties(vo, userOrder);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new BizException("对象转换失败");
+        }
+        vo.setOrderDetail(orderDetail);
+        return vo;
+    }
+
+    /***
+     * 获取平台服务费率
+     * @author liweifan
+     * @param: orderTypeEnum
+     * @updateTime 2022/3/31 16:49
+     * @return: java.math.BigDecimal
+     */
+    private BigDecimal getServiceFeeRate(OrderTypeEnum orderTypeEnum) {
+        String configValue = "0";
+        if (OrderTypeEnum.VIDEO.equals(orderTypeEnum)) {
+            configValue = sysConfigService.findConfigValue(SysConfigConstant.VIDEO_LESSON_SERVICE_FEE);
+        } else if (OrderTypeEnum.PRACTICE.equals(orderTypeEnum)) {
+            configValue = sysConfigService.findConfigValue(SysConfigConstant.PRACTICE_SERVICE_FEE);
+        } else if (OrderTypeEnum.LIVE.equals(orderTypeEnum)) {
+            configValue = sysConfigService.findConfigValue(SysConfigConstant.LIVE_SERVICE_RATE);
+        } else if (OrderTypeEnum.MUSIC.equals(orderTypeEnum)) {
+            configValue = sysConfigService.findConfigValue(SysConfigConstant.MUSIC_SHEET_SERVICE_FEE);
+        }
+        return new BigDecimal(configValue).divide(new BigDecimal(100));
+    }
+}

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

@@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDetailDao;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailUpVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -52,6 +54,16 @@ public class VideoLessonGroupDetailServiceImpl extends ServiceImpl<VideoLessonGr
     }
 
     /**
+    * @Description: 根据组id查询购买用户
+    * @Author: cy
+    * @Date: 2022/4/1
+    */
+    @Override
+    public IPage<VideoLessonPurchaseStudent> selectPageStudent(IPage<VideoLessonPurchaseStudent> page, VideoLessonSearch query) {
+        return page.setRecords(baseMapper.selectPageStudent(page,query));
+    }
+
+    /**
     * @Description: 新增视频课
     * @Author: cy
     * @Date: 2022/3/31
@@ -68,6 +80,11 @@ public class VideoLessonGroupDetailServiceImpl extends ServiceImpl<VideoLessonGr
             throw new RuntimeException("创建课程必须属于同组");
         }
 
+        VideoLessonGroup lessonGroup = videoLessonGroupDao.selectById(synSet.iterator().next());
+        if (lessonGroup==null){
+            throw new RuntimeException("视频课组不存在");
+        }
+
         //添加课程
         videoLessonGroupDetailDao.insertVideoLesson(videoLessonList);
         //刷新统计

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

@@ -1,13 +1,16 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDetailDao;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao;
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -15,6 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
+
 /**
  * VideoLessonGroupService服务实现类
  * @author yzp
@@ -67,4 +72,33 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
         videoLessonGroupDao.deleteById(id);
         videoLessonGroupDetailDao.deleteByGroupId(id);
     }
+
+    /**
+    * @Description: 新增视频课组&视频课
+    * @Author: cy
+    * @Date: 2022/4/1
+    */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void add(VideoLessonVo lessonVo, SysUser sysUser) {
+        VideoLessonGroup lessonGroup = lessonVo.getLessonGroup();
+        List<VideoLessonGroupDetail> lessonList = lessonVo.getLessonList();
+
+        //添加组
+        lessonGroup.setTeacherId(sysUser.getId());
+        videoLessonGroupDao.insert(lessonGroup);
+
+        for (VideoLessonGroupDetail detail : lessonList) {
+            detail.setVideoLessonGroupId(lessonGroup.getId());
+            detail.setTeacherId(sysUser.getId());
+        }
+
+        //添加课程
+        videoLessonGroupDetailDao.insertVideoLesson(lessonList);
+
+        //刷新统计
+        VideoLessonGroupUpVo groupUpVo = new VideoLessonGroupUpVo();
+        groupUpVo.setId(lessonGroup.getId());
+        videoLessonGroupDao.updateGroup(groupUpVo);
+    }
 }

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

@@ -2,6 +2,10 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCheckRes;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
 import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
@@ -23,5 +27,15 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
     public IPage<VipCardRecordVo> selectPage(IPage<VipCardRecordVo> page, VipCardRecordSearch query){
         return page.setRecords(baseMapper.selectPage(page, query));
     }
-	
+
+    @Override
+    public HttpResponseResult<OrderCheckRes> checkOrder(OrderReq orderReq) {
+        return HttpResponseResult.succeed();
+    }
+
+    @Override
+    public void orderAfter(UserOrderVo orderVo) {
+
+    }
+
 }

+ 0 - 86
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/support/Condition.java

@@ -1,86 +0,0 @@
-package com.yonge.cooleshow.biz.dal.support;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.yonge.cooleshow.common.page.PageInfo;
-import com.yonge.toolset.utils.string.StringUtil;
-import org.springframework.beans.BeanUtils;
-
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * 分页工具
- *
- * @author Chill
- */
-public class Condition {
-	private static Integer toInt(Integer num,Integer bak){
-		if(null == num || 0 == num){
-			return bak;
-		}
-		return num;
-	}
-	/**
-	 * 转化成mybatis plus中的Page
-	 *
-	 * @param query 查询条件
-	 * @return IPage
-	 */
-	public static <T> IPage<T> getPage(Query query) {
-		Page<T> page = new Page<T>(toInt(query.getPage(),1), toInt(query.getRows(),10));
-		page.setAsc(StringUtil.toStrArray(SqlKeyword.filter(query.getAscs())));
-		page.setDesc(StringUtil.toStrArray(SqlKeyword.filter(query.getDescs())));
-		return page;
-	}
-
-	/**
-	 * 获取mybatis plus中的QueryWrapper
-	 *
-	 * @param entity 实体
-	 * @param <T>    类型
-	 * @return QueryWrapper
-	 */
-	public static <T> QueryWrapper<T> getQueryWrapper(T entity) {
-		return new QueryWrapper<>(entity);
-	}
-
-	/**
-	 * 获取mybatis plus中的QueryWrapper
-	 *
-	 * @param query   查询条件
-	 * @param exclude 排除的查询条件
-	 * @param clazz   实体类
-	 * @param <T>     类型
-	 * @return QueryWrapper
-	 */
-	public static <T> QueryWrapper<T> getQueryWrapper(Map<String, Object> query, Map<String, Object> exclude, Class<T> clazz) {
-		exclude.forEach((k, v) -> query.remove(k));
-		QueryWrapper<T> qw = new QueryWrapper<>();
-		qw.setEntity(BeanUtils.instantiateClass(clazz));
-		SqlKeyword.buildCondition(query, qw);
-		return qw;
-	}
-
-
-	/**
-	 * 将mybatisPlus的分页模型 转换为本项目的分页模型
-	 *
-	 * @param source  mybatisPlus的分页模型
-	 * @param <T>返回的类
-	 */
-	public static <T> PageInfo<T> pageInfo(IPage<T> source) {
-		if (Objects.isNull(source)) {
-			return new PageInfo<>(1, 20);
-		}
-		int total = Integer.parseInt(String.valueOf(source.getTotal()));
-		int limit = Integer.parseInt(String.valueOf(source.getSize()));
-		PageInfo<T> resultPage = new PageInfo<>();
-		resultPage.setRows(source.getRecords());
-		resultPage.setLimit(limit);
-		resultPage.setTotal(total);
-		return resultPage;
-	}
-
-}

+ 50 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/support/PageUtil.java

@@ -1,8 +1,11 @@
 package com.yonge.cooleshow.biz.dal.support;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yonge.cooleshow.common.page.PageInfo;
+import com.yonge.toolset.utils.string.StringUtil;
+import org.springframework.beans.BeanUtils;
 
 import java.util.Map;
 import java.util.Objects;
@@ -14,6 +17,53 @@ import java.util.Optional;
  */
 public class PageUtil {
 
+    private static Integer toInt(Integer num,Integer bak){
+        if(null == num || 0 == num){
+            return bak;
+        }
+        return num;
+    }
+    /**
+     * 转化成mybatis plus中的Page
+     *
+     * @param query 查询条件
+     * @return IPage
+     */
+    public static <T> IPage<T> getPage(Query query) {
+        Page<T> page = new Page<T>(toInt(query.getPage(),1), toInt(query.getRows(),10));
+        page.setAsc(StringUtil.toStrArray(SqlKeyword.filter(query.getAscs())));
+        page.setDesc(StringUtil.toStrArray(SqlKeyword.filter(query.getDescs())));
+        return page;
+    }
+
+    /**
+     * 获取mybatis plus中的QueryWrapper
+     *
+     * @param entity 实体
+     * @param <T>    类型
+     * @return QueryWrapper
+     */
+    public static <T> QueryWrapper<T> getQueryWrapper(T entity) {
+        return new QueryWrapper<>(entity);
+    }
+
+    /**
+     * 获取mybatis plus中的QueryWrapper
+     *
+     * @param query   查询条件
+     * @param exclude 排除的查询条件
+     * @param clazz   实体类
+     * @param <T>     类型
+     * @return QueryWrapper
+     */
+    public static <T> QueryWrapper<T> getQueryWrapper(Map<String, Object> query, Map<String, Object> exclude, Class<T> clazz) {
+        exclude.forEach((k, v) -> query.remove(k));
+        QueryWrapper<T> qw = new QueryWrapper<>();
+        qw.setEntity(BeanUtils.instantiateClass(clazz));
+        SqlKeyword.buildCondition(query, qw);
+        return qw;
+    }
+
     /**
      * 获取mybatisPlus的分页模型
      *

+ 0 - 14
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/OrderDetailVo.java

@@ -1,14 +0,0 @@
-package com.yonge.cooleshow.biz.dal.vo;
-
-import com.yonge.cooleshow.biz.dal.entity.OrderDetail;
-import io.swagger.annotations.ApiModel;
-
-/**
- * @Author: liweifan
- * @Data: 2022-03-30 13:53:51
- */
-@ApiModel(value = "OrderDetailVo对象", description = "平台订单表查询视图对象")
-public class OrderDetailVo extends OrderDetail{
-	private static final long serialVersionUID = 1L;
-
-}

+ 0 - 14
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/OrderRefundsVo.java

@@ -1,14 +0,0 @@
-package com.yonge.cooleshow.biz.dal.vo;
-
-import com.yonge.cooleshow.biz.dal.entity.OrderRefunds;
-import io.swagger.annotations.ApiModel;
-
-/**
- * @Author: liweifan
- * @Data: 2022-03-30 13:53:51
- */
-@ApiModel(value = "OrderRefundsVo对象", description = "用户退款表查询视图对象")
-public class OrderRefundsVo extends OrderRefunds{
-	private static final long serialVersionUID = 1L;
-
-}

+ 0 - 14
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/OrderVo.java

@@ -1,14 +0,0 @@
-package com.yonge.cooleshow.biz.dal.vo;
-
-import com.yonge.cooleshow.biz.dal.entity.Order;
-import io.swagger.annotations.ApiModel;
-
-/**
- * @Author: liweifan
- * @Data: 2022-03-30 13:53:51
- */
-@ApiModel(value = "OrderVo对象", description = "平台订单表查询视图对象")
-public class OrderVo extends Order{
-	private static final long serialVersionUID = 1L;
-
-}

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherVo.java

@@ -39,6 +39,8 @@ public class TeacherVo extends Teacher {
     private Date birthdate;
     @ApiModelProperty(value = "审核人")
     private String verifyUser;
+    @ApiModelProperty(value = "0-正常,9-锁定")
+    private Integer lockFlag;
     @ApiModelProperty(value = "老师风采视频")
     private List<TeacherStyleVideo> styleVideo;
 
@@ -129,4 +131,12 @@ public class TeacherVo extends Teacher {
     public void setStyleVideo(List<TeacherStyleVideo> styleVideo) {
         this.styleVideo = styleVideo;
     }
+
+    public Integer getLockFlag() {
+        return lockFlag;
+    }
+
+    public void setLockFlag(Integer lockFlag) {
+        this.lockFlag = lockFlag;
+    }
 }

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderDetailVo.java

@@ -0,0 +1,14 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.UserOrderDetail;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022-03-30 13:53:51
+ */
+@ApiModel(value = "UserOrderDetailVo对象", description = "平台订单表查询视图对象")
+public class UserOrderDetailVo extends UserOrderDetail {
+	private static final long serialVersionUID = 1L;
+
+}

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderRefundsVo.java

@@ -0,0 +1,14 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.UserOrderRefunds;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022-03-30 13:53:51
+ */
+@ApiModel(value = "UserOrderRefundsVo对象", description = "用户退款表查询视图对象")
+public class UserOrderRefundsVo extends UserOrderRefunds {
+	private static final long serialVersionUID = 1L;
+
+}

+ 24 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderVo.java

@@ -0,0 +1,24 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.UserOrder;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderDetail;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022-03-30 13:53:51
+ */
+@ApiModel(value = "UserOrderVo对象", description = "平台订单表查询视图对象")
+public class UserOrderVo extends UserOrder {
+	private static final long serialVersionUID = 1L;
+
+	private UserOrderDetail orderDetail;
+
+	public UserOrderDetail getOrderDetail() {
+		return orderDetail;
+	}
+
+	public void setOrderDetail(UserOrderDetail orderDetail) {
+		this.orderDetail = orderDetail;
+	}
+}

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonPurchaseStudent.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
+import com.yonge.cooleshow.common.entity.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -10,7 +11,7 @@ import java.util.Date;
  * @date: 2022/3/30 11:39
  */
 @ApiModel(value = "VideoLessonPurchaseStudent对象")
-public class VideoLessonPurchaseStudent {
+public class VideoLessonPurchaseStudent extends BaseEntity {
     @ApiModelProperty("头像地址")
     private String avatar;
 

+ 37 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonVo.java

@@ -0,0 +1,37 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
+import com.yonge.cooleshow.biz.dal.valid.impl.ValidList;
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+
+import javax.validation.Valid;
+
+/**
+ * @author: cy
+ * @date: 2022/4/1 10:41
+ */
+@ApiModel(value = "VideoLessonVo")
+public class VideoLessonVo extends BaseEntity {
+    @Valid
+    private VideoLessonGroup lessonGroup;
+
+    private ValidList<@Valid VideoLessonGroupDetail> lessonList;
+
+    public VideoLessonGroup getLessonGroup() {
+        return lessonGroup;
+    }
+
+    public void setLessonGroup(VideoLessonGroup lessonGroup) {
+        this.lessonGroup = lessonGroup;
+    }
+
+    public ValidList<VideoLessonGroupDetail> getLessonList() {
+        return lessonList;
+    }
+
+    public void setLessonList(ValidList<VideoLessonGroupDetail> lessonList) {
+        this.lessonList = lessonList;
+    }
+}

+ 33 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/OrderCheckRes.java

@@ -0,0 +1,33 @@
+package com.yonge.cooleshow.biz.dal.vo.res;
+
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/3/31 16:18
+ */
+@ApiModel(value = "OrderCheckRes", description = "订单验证返回对象")
+public class OrderCheckRes {
+    @ApiModelProperty("验证结果")
+    private Boolean res;
+    @ApiModelProperty("商家id")
+    private Long merchId;
+
+    public Boolean getRes() {
+        return res;
+    }
+
+    public void setRes(Boolean res) {
+        this.res = res;
+    }
+
+    public Long getMerchId() {
+        return merchId;
+    }
+
+    public void setMerchId(Long merchId) {
+        this.merchId = merchId;
+    }
+}

Some files were not shown because too many files changed in this diff