فهرست منبع

Merge branch 'master' of http://git.dayaedu.com/yonge/cooleshow into zouxuan

 Conflicts:
	cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleStudentPaymentDao.java
	cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleStudentPaymentService.java
	cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleStudentPaymentServiceImpl.java
zouxuan 3 سال پیش
والد
کامیت
7c0aecbef4
100فایلهای تغییر یافته به همراه2046 افزوده شده و 318 حذف شده
  1. 6 1
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java
  2. 16 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/TeacherFeignService.java
  3. 5 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java
  4. 10 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/TeacherFeignServiceFallback.java
  5. 0 1
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java
  6. 16 3
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysMenuMapper.xml
  7. 0 14
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/HelpCenterContentController.java
  8. 1 1
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java
  9. 9 0
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/dao/HelpCenterContentDao.java
  10. 2 0
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/dao/SysNewsInformationDao.java
  11. 14 1
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/entity/SysNewsType.java
  12. 17 0
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/service/impl/HelpCenterContentServiceImpl.java
  13. 2 2
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/service/impl/SysNewsInformationServiceImpl.java
  14. 1 1
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/task/NoticeReleaseTask.java
  15. 17 3
      cooleshow-cms/src/main/resources/config/mybatis/HelpCenterContentMapper.xml
  16. 0 39
      cooleshow-cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  17. 23 10
      cooleshow-cms/src/main/resources/config/mybatis/SysNewsTypeMapper.xml
  18. 6 1
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java
  19. 7 7
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/AdminStatisticalController.java
  20. 6 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dao/OmsOrderDao.java
  21. 3 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dao/OmsOrderReturnApplyDao.java
  22. 5 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dao/PmsProductDao.java
  23. 196 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dto/HomeStatistical.java
  24. 8 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderReturnApplyService.java
  25. 5 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderService.java
  26. 13 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsProductService.java
  27. 8 1
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderReturnApplyServiceImpl.java
  28. 26 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java
  29. 13 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsProductServiceImpl.java
  30. 11 0
      cooleshow-mall/mall-admin/src/main/resources/config/mybatis/OmsOrderDao.xml
  31. 8 0
      cooleshow-mall/mall-admin/src/main/resources/config/mybatis/OmsOrderReturnApplyDao.xml
  32. 23 0
      cooleshow-mall/mall-admin/src/main/resources/config/mybatis/PmsProductDao.xml
  33. 4 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/mapper/PmsProductAttributeMapper.java
  34. 12 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/mapper/PmsSkuStockMapper.java
  35. 11 1
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/mapper/UserOrderPaymentMapper.java
  36. 11 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrder.java
  37. 12 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/PmsProduct.java
  38. 11 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/PmsProductAttributeValue.java
  39. 18 3
      cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderMapper.xml
  40. 4 0
      cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/PmsSkuStockMapper.xml
  41. 25 0
      cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/UserOrderPaymentMapper.xml
  42. 2 1
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/enums/PayChannelEnum.java
  43. 1 1
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/adapay/PaymentSdk.java
  44. 23 32
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/OrderPayReq.java
  45. 7 3
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/service/PaymentService.java
  46. 9 24
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/service/impl/AdapayPaymentServiceImpl.java
  47. 2 1
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsCartItemController.java
  48. 18 2
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java
  49. 14 12
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/PaymentController.java
  50. 2 2
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/UmsMemberCouponController.java
  51. 1 1
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/domain/OrderParam.java
  52. 11 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/OmsReturnApplyQueryParam.java
  53. 2 2
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/ProductSearch.java
  54. 1 1
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsCartItemService.java
  55. 11 8
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java
  56. 34 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/UserOrderPaymentService.java
  57. 12 6
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/HomeServiceImpl.java
  58. 11 4
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsCartItemServiceImpl.java
  59. 11 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderReturnApplyServiceImpl.java
  60. 43 52
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java
  61. 17 1
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/PmsPortalProductServiceImpl.java
  62. 53 1
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/UserOrderPaymentServiceImpl.java
  63. 22 17
      cooleshow-mall/mall-portal/src/main/resources/config/mybatis/OmsOrderReturnApplyDao.xml
  64. 4 2
      cooleshow-mall/mall-portal/src/main/resources/config/mybatis/PortalOrderDao.xml
  65. 1 1
      cooleshow-mall/mall-portal/src/main/resources/config/mybatis/SmsCouponHistoryDao.xml
  66. 22 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/CourseStatusTask.java
  67. 24 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherEarningTask.java
  68. 22 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherSalaryTask.java
  69. 0 1
      cooleshow-user/pom.xml
  70. 11 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/client/AdminFeignClient.java
  71. 5 12
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ContractTemplateController.java
  72. 124 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseGroupController.java
  73. 30 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java
  74. 5 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SmsCodeController.java
  75. 60 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherStyleVideoController.java
  76. 5 6
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserWithdrawalController.java
  77. 21 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/constant/WithdrawalConstant.java
  78. 54 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/AudioTypeConverter.java
  79. 45 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/ChargeTypeConverter.java
  80. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/WithdrawalStatusConvert.java
  81. 48 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/YesOrNoConverter.java
  82. 1 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ContractTemplateDao.java
  83. 91 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseGroupDao.java
  84. 23 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  85. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  86. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupMemberAuditDao.java
  87. 0 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/StudentDao.java
  88. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SysUserContractRecordDao.java
  89. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherFreeTimeDao.java
  90. 18 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherStyleVideoDao.java
  91. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserAccountRecordDao.java
  92. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderDao.java
  93. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderDetailDao.java
  94. 0 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserWithdrawalDao.java
  95. 162 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/MusicSheetExport.java
  96. 33 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java
  97. 125 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/CourseGroupDetailSearch.java
  98. 143 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/CourseGroupSearch.java
  99. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicSheetSearch.java
  100. 22 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/OrderDetailSearch.java

+ 6 - 1
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.feign.config.FeignConfiguration;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 
 /**
  * Description
@@ -20,8 +21,12 @@ public interface AdminFeignService {
 
 
     /**
-     * 公告发布轮询
+     * 老师作业布置通知
      */
     @GetMapping("/admin/teacherSend")
     HttpResponseResult<Object> sendTodayNotRepliedAndNotDecorateHomework();
+
+    //老师课酬
+    @PostMapping(value = "/teacherEarning")
+    HttpResponseResult<Object> sendTeacherEarning();
 }

+ 16 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/TeacherFeignService.java

@@ -32,4 +32,20 @@ public interface TeacherFeignService {
      */
     @GetMapping("/task/courseRemind")
     HttpResponseResult<Object> courseRemind();
+
+    /**
+     * @Description: 更新课程状态
+     * @Author: cy
+     * @Date: 2022/5/17
+     */
+    @GetMapping("/task/courseStatus")
+    HttpResponseResult<Object> courseStatus();
+
+    /**
+     * @Description: 更新课酬状态
+     * @Author: cy
+     * @Date: 2022/5/24
+     */
+    @GetMapping("/task/teacherSalary")
+    HttpResponseResult<Object> teacherSalary();
 }

+ 5 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java

@@ -14,4 +14,9 @@ public class AdminFeignServiceFallback implements AdminFeignService {
     public HttpResponseResult<Object> sendTodayNotRepliedAndNotDecorateHomework() {
         return null;
     }
+
+    @Override
+    public HttpResponseResult<Object> sendTeacherEarning() {
+        return null;
+    }
 }

+ 10 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/TeacherFeignServiceFallback.java

@@ -21,4 +21,14 @@ public class TeacherFeignServiceFallback implements TeacherFeignService {
     public HttpResponseResult<Object> courseRemind() {
         return null;
     }
+
+    @Override
+    public HttpResponseResult<Object> courseStatus() {
+        return null;
+    }
+
+    @Override
+    public HttpResponseResult<Object> teacherSalary() {
+        return null;
+    }
 }

+ 0 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java

@@ -75,7 +75,6 @@ public class TokenController extends BaseController {
     public SysUser queryUserInfo() {
 		AuthUser authUser = SecurityUtils.getUser();
 		if(authUser != null){
-			SysUser sysUser = userService.get(authUser.getUserId());
 			return userService.get(authUser.getUserId());
 		}
 		return null;

+ 16 - 3
cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysMenuMapper.xml

@@ -84,7 +84,7 @@
             <if test="name != null">
                 name_ = #{name},
             </if>
-            <if test="icon != null">
+            <if test="icon != null and icon != ''">
                 icon_ = #{icon},
             </if>
             <if test="component != null">
@@ -99,7 +99,7 @@
             <if test="hid != null">
                 hidden_ = #{hid},
             </if>
-            <if test="memo != null">
+            <if test="memo != null and memo != ''">
                 memo_ = #{memo},
             </if>
         </set>
@@ -176,7 +176,20 @@
         SELECT sm.* FROM sys_menu sm
         LEFT JOIN sys_role_menu srm ON srm.menu_id_ = sm.id_
         LEFT JOIN sys_user_role sur ON sur.role_id_ = srm.role_id_
-        <include refid="queryTree"/>
+        left join sys_role r on sur.role_id_ = r.id_
+        where r.del_flag_ = 0 and r.is_enable_ = 1
+        <if test="userId != null">
+            AND sur.user_id_ = #{userId}
+        </if>
+        <if test="hid != null">
+            AND sm.hidden_ = #{hid}
+        </if>
+        <if test="delFlag != null">
+            AND sm.del_flag_ = #{delFlag}
+        </if>
+        <if test="parentId != null">
+            AND sm.parent_id_ = #{parentId}
+        </if>
         GROUP BY sm.id_
         ORDER BY sm.sort_ DESC,sm.id_ DESC
     </select>

+ 0 - 14
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/HelpCenterContentController.java

@@ -73,12 +73,6 @@ public class HelpCenterContentController extends BaseController {
 				return failed("未找到相关信息");
 			}
 
-			if (helpCenterContent.getCatalogId() ==2) {
-				if (helpCenterContent.getReleaseStatus() == 1) {
-					return failed("公告已发布不能修改");
-				}
-			}
-
 			if (helpCenterContent.getStatus() == 1) {
 				return failed("启用状态下,不能修改");
 			}
@@ -116,11 +110,6 @@ public class HelpCenterContentController extends BaseController {
 		if (helpCenterContent == null) {
 			return failed("未找到相关信息");
 		}
-		if (helpCenterContent.getCatalogId() ==2) {
-			if (helpCenterContent.getReleaseStatus() == 1) {
-				return failed("公告已发布不能修改");
-			}
-		}
 		if (helpCenterContent.getStatus() == 1) {
 			return failed("启用状态下,不能删除");
 		}
@@ -137,9 +126,6 @@ public class HelpCenterContentController extends BaseController {
 		if (helpCenterContent == null) {
 			return failed("未找到相关信息");
 		}
-		if (helpCenterContent.getCatalogId() == 2) {
-			return failed("公告不可禁用");
-		}
 		return succeed(helpCenterContentService.status(id));
 	}
 

+ 1 - 1
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java

@@ -94,7 +94,7 @@ public class NewsController extends BaseController {
 			return failed("章节不能为空");
 		}
 		// 1 2 3 4 5
-		if (newsInfo.getType() != 2) {
+		if (newsInfo.getType() != 2 && newsInfo.getType() !=6) {
 			if (StringUtil.isEmpty(newsInfo.getCoverImage())) {
 				return failed("封面不能为空");
 			}

+ 9 - 0
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/dao/HelpCenterContentDao.java

@@ -35,4 +35,13 @@ public interface HelpCenterContentDao extends BaseDAO<Long, HelpCenterContent> {
      * @return
      */
     List<HelpCenterContent> selectNeedReleaseNotice();
+
+    /**
+     * 查看状态为启用的公告
+     *
+     * @param status
+     * @param catalogType
+     * @return
+     */
+    Integer selectByNoticeStatus(@Param("status") Integer status, @Param("catalogType") String catalogType);
 }

+ 2 - 0
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/dao/SysNewsInformationDao.java

@@ -79,4 +79,6 @@ public interface SysNewsInformationDao extends BaseDAO<Long, SysNewsInformation>
 	 * @return
 	 */
 	String selectAppVersionInfo(@Param("platform") String platform, @Param("version") String version);
+
+	Integer selectByStatus(Integer status);
 }

+ 14 - 1
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/entity/SysNewsType.java

@@ -16,6 +16,9 @@ public class SysNewsType {
 	/**  */
 	@ApiModelProperty("名称")
 	private String name;
+
+	@ApiModelProperty("图片url")
+	private String url;
 	
 	/**  */
 	@ApiModelProperty("上级id")
@@ -33,7 +36,16 @@ public class SysNewsType {
 	
 	/**  */
 	private java.util.Date updateTime;
-	
+
+	public String getUrl() {
+		return url;
+	}
+
+	public void setUrl(String url) {
+		this.url = url;
+	}
+
+
 	public void setId(Long id){
 		this.id = id;
 	}
@@ -94,4 +106,5 @@ public class SysNewsType {
 	public void setOrder(Integer order) {
 		this.order = order;
 	}
+
 }

+ 17 - 0
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/service/impl/HelpCenterContentServiceImpl.java

@@ -4,6 +4,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.yonge.cooleshow.cms.dal.entity.NewsStatusEnum;
+import com.yonge.cooleshow.cms.dto.SysNewsInformationDto;
+import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.mybatis.service.impl.BaseServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -45,6 +48,20 @@ public class HelpCenterContentServiceImpl extends BaseServiceImpl<Long, HelpCent
     @Override
 	@Transactional
     public boolean status(Long id) {
+		HelpCenterContent helpCenterContent = contentCenterDao.get(id);
+		if (helpCenterContent.getCatalogId() != 2) {
+			contentCenterDao.status(id);
+			return true;
+		}
+		if (helpCenterContent.getStatus().equals(NewsStatusEnum.SHOW.getCode())) {
+			contentCenterDao.status(id);
+			return true;
+		}
+		Integer count = contentCenterDao.selectByNoticeStatus(NewsStatusEnum.SHOW.getCode(),helpCenterContent.getCatalogType());
+
+		if (count >0) {
+			throw  new BizException("有正在启用的公告");
+		}
 
 		contentCenterDao.status(id);
 		return true;

+ 2 - 2
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/service/impl/SysNewsInformationServiceImpl.java

@@ -188,10 +188,10 @@ public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNews
 			return true;
 		}
 
-		Integer count = sysNewsInformationDao.selectByVersionAndStatus(sysNewsInformationDto.getAttribute1(),NewsStatusEnum.SHOW.getCode());
+		Integer count = sysNewsInformationDao.selectByVersionAndStatus(null,NewsStatusEnum.SHOW.getCode());
 
 		if (count >0) {
-			throw  new BizException("有正在启用的告");
+			throw  new BizException("有正在启用的广告");
 		}
 		sysNewsInformationDao.updateStatus(id);
 		return true;

+ 1 - 1
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/task/NoticeReleaseTask.java

@@ -31,7 +31,7 @@ public class NoticeReleaseTask {
     /**
      * 公告发布轮询
      */
-    @GetMapping("/noticeRelease")
+    // @GetMapping("/noticeRelease")
     public HttpResponseResult noticeRelease(){
         // 查询将要发布的公告 (0 ~ 当前时间 + 5 min 的未发布的公告) 循环发布
         List<HelpCenterContent> helpCenterContents = helpCenterContentService.getNeedReleaseNotice();

+ 17 - 3
cooleshow-cms/src/main/resources/config/mybatis/HelpCenterContentMapper.xml

@@ -31,8 +31,8 @@
 				and content.title_ like '%' #{title} '%'
 			</if>
 			<if test="status!= null">
-				and ((content.status_ = #{status} and content.catalog_id_ = 1)
-					or (content.release_status_ = #{status} and content.catalog_id_ = 2))
+			and ((content.status_ = #{status} and content.catalog_id_ = 1)
+				or (content.status_ = #{status} and content.catalog_id_ = 2 and content.release_time_ &lt;= now()))
 			</if>
 			<if test="catalogType != null and catalogType != ''">
 				and content.catalog_type_ = #{catalogType}
@@ -228,7 +228,7 @@
 		left join sys_user su on su.id_ = t.user_id_
 	</insert>
 
-	<select id="selectNeedReleaseNotice" resultMap="HelpCenterContent">
+	<select id="selectNeedReleaseNotice"  resultMap="HelpCenterContentBlobs">
 		select
 		<include refid="Base_Column_List_union" />
 		from help_center_content content
@@ -239,4 +239,18 @@
 		and content.catalog_id_ = 2
 		and content.release_status_ = 0
 	</select>
+
+	<select id="selectByNoticeStatus" resultType="java.lang.Integer">
+		select count(1)
+		from help_center_content hcc
+		<where>
+			hcc.catalog_id_ = 2
+			<if test="status != null">
+				and hcc.status_ = #{status}
+			</if>
+			<if test="catalogType != null and catalogType != ''">
+				and hcc.catalog_type_ = #{catalogType}
+			</if>
+		</where>
+	</select>
 </mapper>

+ 0 - 39
cooleshow-cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -107,62 +107,26 @@
 			<if test="status != null">
 				status_ = #{status, typeHandler=com.yonge.toolset.mybatis.dal.CustomEnumTypeHandler},
 			</if>
-			<if test="title != null">
 				title_ = #{title},
-			</if>
-			<if test="updateTime != null">
 				update_time_ = NOW(),
-			</if>
-			<if test="content != null">
 				content_ = #{content},
-			</if>
-			<if test="coverImage != null">
 				cover_image_ = #{coverImage},
-			</if>
-			<if test="videoCoverImage != null">
 				video_cover_image_ = #{videoCoverImage},
-			</if>
-			<if test="type != null">
 				type_ = #{type},
-			</if>
 				online_time_ = #{onlineTime},
 				offline_time_ = #{offlineTime},
-			<if test="subType != null and subType != ''">
 				sub_type_ = #{subType},
-			</if>
-			<if test="linkUrl != null">
 				link_url_ = #{linkUrl},
-			</if>
-			<if test="hrefTarget != null">
 				href_target_ = #{hrefTarget},
-			</if>
-			<if test="order != null">
 				order_ = #{order},
-			</if>
-			<if test="memo != null">
 				memo_ = #{memo},
-			</if>
-			<if test="delFlag != null">
 				del_flag_ = #{delFlag},
-			</if>
-			<if test="attribute1 != null">
 				attribute1_ = #{attribute1},
-			</if>
-			<if test="attribute2 != null">
 				attribute2_ = #{attribute2},
-			</if>
-			<if test="subjectIdList != null">
 				subject_id_list_ = #{subjectIdList},
-			</if>
-			<if test="updateBy != null">
 				update_by_ = #{updateBy},
-			</if>
-			<if test="linkType != null">
 				link_type_ = #{linkType},
-			</if>
-			<if test="showTime != null">
 				show_time_ = #{showTime}
-			</if>
 		</set>
 		WHERE id_ = #{id}
 	</update>
@@ -297,9 +261,6 @@
 			<if test="status != null">
 				and sni.status_ = #{status}
 			</if>
-			<if test="version != null || version != ''">
-				and sni.attribute1_ = #{version}
-			</if>
 		</where>
 	</select>
 </mapper>

+ 23 - 10
cooleshow-cms/src/main/resources/config/mybatis/SysNewsTypeMapper.xml

@@ -9,6 +9,7 @@
 		<result column="parent_id_" property="parentId" />
 		<result column="del_flag_" property="delFlag" />
 		<result column="order_" property="order" />
+		<result column="url_" property="url" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 	</resultMap>
@@ -32,8 +33,8 @@
 	<insert id="insert" parameterType="com.yonge.cooleshow.cms.dal.entity.SysNewsType"
 		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO sys_news_type
-		(id_,name_,parent_id_,del_flag_,create_time_,update_time_,order_)
-		VALUES(#{id},#{name},#{parentId},#{delFlag},#{createTime},#{updateTime},#{order})
+		(id_,name_,parent_id_,del_flag_,create_time_,update_time_,order_,url_)
+		VALUES(#{id},#{name},#{parentId},#{delFlag},#{createTime},#{updateTime},#{order},#{url})
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
@@ -59,7 +60,10 @@
 				create_time_ = #{createTime},
 			</if>
 			<if test="order != null">
-				order_ = #{order}
+				order_ = #{order},
+			</if>
+			<if test="url != null">
+				url_ = #{url}
 			</if>
 		</set>
 		WHERE id_ = #{id}
@@ -102,22 +106,30 @@
 	</sql>
 
 	<select id="queryAppPage" resultMap="SysNewsTypeDto">
-		SELECT snt.id_ as sntId
+		select a.*,sni.* from (
+		SELECT distinct snt.id_ as sntId
 		,snt.name_ as name,
 		snt.parent_id_ as parentId,
 		snt.order_ as sntOrder,
 		snt.del_flag_ as sntDelFlag,
 		snt.create_time_ as createTime,
 		snt.update_time_ as updateTime,
-		sni.*
+		snt.url_ as url
 		FROM sys_news_type snt
 		left join sys_news_information sni on sni.sub_type_ = snt.id_
 		where snt.del_flag_ = 0 and snt.parent_id_ = 6 and sni.del_flag_ = 0 and sni.status_ = 1
 		<if test="search != null and search != ''">
-			and  (sni.title_ like concat('%',#{search},'%') or snt.name_ like concat('%',#{search},'%'))
+			and (sni.title_ like concat('%',#{search},'%') or snt.name_ like concat('%',#{search},'%'))
 		</if>
 		ORDER BY snt.order_ , sni.order_
-		<include refid="global.limit" />
+		<include refid="global.limit"/>
+		) a
+
+		left join sys_news_information sni on sni.sub_type_ = a.sntId
+		where sni.del_flag_ = 0 and sni.status_ = 1
+
+		ORDER BY a.sntOrder , sni.order_
+
 	</select>
 
 	<resultMap type="com.yonge.cooleshow.cms.dto.SysNewsTypeDto" id="SysNewsTypeDto">
@@ -128,6 +140,7 @@
 		<result column="sntOrder" property="order" />
 		<result column="sntDelFlag" property="delFlag" />
 		<result column="createTime" property="createTime" />
+		<result column="url" property="url" />
 		<result column="updateTime" property="updateTime" />
 
 		<collection property="newsInformationList"  ofType="com.yonge.cooleshow.cms.dal.entity.SysNewsInformation">
@@ -157,14 +170,14 @@
 	</resultMap>
 
 	<select id="queryAppCount" resultType="int">
-		SELECT count(1)
+		select count(1) from (
+		SELECT snt.id_
 		FROM sys_news_type snt
 		left join sys_news_information sni on sni.sub_type_ = snt.id_
 		where snt.del_flag_ = 0 and snt.parent_id_ = 6 and sni.del_flag_ = 0 and sni.status_ = 1
 		<if test="search != null and search != ''">
 			and  (sni.title_ like concat('%',#{search},'%') or snt.name_ like concat('%',#{search},'%'))
 		</if>
-		ORDER BY snt.order_ , sni.order_
-		<include refid="global.limit" />
+		group by snt.id_ ) a
 	</select>
 </mapper>

+ 6 - 1
cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java

@@ -139,5 +139,10 @@ public interface SysConfigConstant {
      * @updateTime 2022/4/20 11:43
      */
     String GOOD_LOGO_MUSIC = "good_logo_music";
-
+    /***
+     * 陪练课&直播课老师课程结算日期(天)
+     * @author cy
+     * @updateTime 2022/5/24 10:03
+     */
+    String COURSE_SALARY_SETTLEMENT_DAY = "course_salary_settlement_day";
 }

+ 7 - 7
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/AdminStatisticalController.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.admin.dto.HomeStatistical;
 import com.yonge.cooleshow.admin.dto.search.UserStatisticalSearch;
 import com.yonge.cooleshow.admin.service.OmsOrderService;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
@@ -30,15 +31,14 @@ public class AdminStatisticalController {
     private OmsOrderService orderService;
 
 
-     // 弃用
-    @Deprecated
-    @ApiOperation("商城用户统计")
-    @RequestMapping(value = "/user", method = RequestMethod.POST)
+    @ApiOperation("商城首页统计")
+    @RequestMapping(value = "/home", method = RequestMethod.GET)
     @ResponseBody
-    public CommonResult<List<CmsPrefrenceArea>> userStatistical(@RequestBody UserStatisticalSearch search) {
+    public CommonResult<HomeStatistical> userStatistical() {
 
-        orderService.userStatistical(search);
-        return CommonResult.failed();
+        HomeStatistical statistical = orderService.statistical();
+
+        return CommonResult.success(statistical);
 
     }
 }

+ 6 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dao/OmsOrderDao.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.dao;
 
+import com.yonge.cooleshow.admin.dto.HomeStatistical;
 import com.yonge.cooleshow.admin.dto.OmsOrderDeliveryParam;
 import com.yonge.cooleshow.admin.dto.OmsOrderDetail;
 import com.yonge.cooleshow.admin.dto.OmsOrderQueryParam;
@@ -31,4 +32,9 @@ public interface OmsOrderDao {
     OmsOrderDetail getDetail(@Param("id") Long id);
 
     List<Map<String,Object>> getUserOrderInfoList(Map<String, Object> param);
+
+    /**
+     * 统计订单状态数量
+     */
+    HomeStatistical selectOrderStatusNum();
 }

+ 3 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dao/OmsOrderReturnApplyDao.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.dao;
 
+import com.yonge.cooleshow.admin.dto.HomeStatistical;
 import com.yonge.cooleshow.admin.dto.OmsOrderReturnApplyResult;
 import com.yonge.cooleshow.admin.dto.OmsReturnApplyQueryParam;
 import com.yonge.cooleshow.mbg.model.OmsOrderReturnApply;
@@ -21,4 +22,6 @@ public interface OmsOrderReturnApplyDao {
      * 获取申请详情
      */
     OmsOrderReturnApplyResult getDetail(@Param("id")Long id);
+
+    HomeStatistical selectReturnStatusCount();
 }

+ 5 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dao/PmsProductDao.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.dao;
 
+import com.yonge.cooleshow.admin.dto.HomeStatistical;
 import com.yonge.cooleshow.admin.dto.PmsProductResult;
 import org.apache.ibatis.annotations.Param;
 
@@ -13,4 +14,8 @@ public interface PmsProductDao {
      * 获取商品编辑信息
      */
     PmsProductResult getUpdateInfo(@Param("id") Long id);
+
+    HomeStatistical selectLowStockCount();
+
+    HomeStatistical selectProductShowStatusCount();
 }

+ 196 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dto/HomeStatistical.java

@@ -0,0 +1,196 @@
+package com.yonge.cooleshow.admin.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-24
+ */
+@ApiModel("首页统计")
+public class HomeStatistical {
+
+    @ApiModelProperty("今日订单数")
+    private Integer todayOrderNum;
+
+    @ApiModelProperty("今日销售金额")
+    private BigDecimal todayOrderAmount;
+
+    @ApiModelProperty("昨日订单数")
+    private Integer yesterdayOrderNum;
+
+    @ApiModelProperty("昨日销售金额")
+    private Integer yesterdayOrderAmount;
+
+
+    @ApiModelProperty("待付款订单")
+    private Integer waitPayOrder;
+
+    @ApiModelProperty("待发货订单")
+    private Integer waitOutOrder;
+
+    @ApiModelProperty("已发货订单")
+    private Integer outOrder;
+
+    @ApiModelProperty("已完成订单")
+    private Integer successOrder;
+
+    @ApiModelProperty("待确认收货订单")
+    private Integer waitReceiptOrder;
+
+    @ApiModelProperty("新缺货登记")
+    private Integer outStockProduct;
+
+    @ApiModelProperty("待处理退款申请")
+    private Integer waitDisposeRefund;
+
+    @ApiModelProperty("待处理退货订单")
+    private Integer waitDisposeRefundOrder;
+
+    @ApiModelProperty("已下架")
+    private Integer delisted;
+
+
+    @ApiModelProperty("已上架")
+    private Integer shelves;
+
+
+    @ApiModelProperty("库存紧张")
+    private Integer outStock;
+
+
+    @ApiModelProperty("全部商品")
+    private Integer productNum;
+
+    public Integer getTodayOrderNum() {
+        return todayOrderNum;
+    }
+
+    public void setTodayOrderNum(Integer todayOrderNum) {
+        this.todayOrderNum = todayOrderNum;
+    }
+
+    public BigDecimal getTodayOrderAmount() {
+        return todayOrderAmount;
+    }
+
+    public void setTodayOrderAmount(BigDecimal todayOrderAmount) {
+        this.todayOrderAmount = todayOrderAmount;
+    }
+
+    public Integer getYesterdayOrderNum() {
+        return yesterdayOrderNum;
+    }
+
+    public void setYesterdayOrderNum(Integer yesterdayOrderNum) {
+        this.yesterdayOrderNum = yesterdayOrderNum;
+    }
+
+    public Integer getYesterdayOrderAmount() {
+        return yesterdayOrderAmount;
+    }
+
+    public void setYesterdayOrderAmount(Integer yesterdayOrderAmount) {
+        this.yesterdayOrderAmount = yesterdayOrderAmount;
+    }
+
+    public Integer getWaitPayOrder() {
+        return waitPayOrder;
+    }
+
+    public void setWaitPayOrder(Integer waitPayOrder) {
+        this.waitPayOrder = waitPayOrder;
+    }
+
+    public Integer getWaitOutOrder() {
+        return waitOutOrder;
+    }
+
+    public void setWaitOutOrder(Integer waitOutOrder) {
+        this.waitOutOrder = waitOutOrder;
+    }
+
+    public Integer getOutOrder() {
+        return outOrder;
+    }
+
+    public void setOutOrder(Integer outOrder) {
+        this.outOrder = outOrder;
+    }
+
+    public Integer getSuccessOrder() {
+        return successOrder;
+    }
+
+    public void setSuccessOrder(Integer successOrder) {
+        this.successOrder = successOrder;
+    }
+
+    public Integer getWaitReceiptOrder() {
+        return waitReceiptOrder;
+    }
+
+    public void setWaitReceiptOrder(Integer waitReceiptOrder) {
+        this.waitReceiptOrder = waitReceiptOrder;
+    }
+
+    public Integer getOutStockProduct() {
+        return outStockProduct;
+    }
+
+    public void setOutStockProduct(Integer outStockProduct) {
+        this.outStockProduct = outStockProduct;
+    }
+
+    public Integer getWaitDisposeRefund() {
+        return waitDisposeRefund;
+    }
+
+    public void setWaitDisposeRefund(Integer waitDisposeRefund) {
+        this.waitDisposeRefund = waitDisposeRefund;
+    }
+
+    public Integer getWaitDisposeRefundOrder() {
+        return waitDisposeRefundOrder;
+    }
+
+    public void setWaitDisposeRefundOrder(Integer waitDisposeRefundOrder) {
+        this.waitDisposeRefundOrder = waitDisposeRefundOrder;
+    }
+
+    public Integer getDelisted() {
+        return delisted;
+    }
+
+    public void setDelisted(Integer delisted) {
+        this.delisted = delisted;
+    }
+
+    public Integer getShelves() {
+        return shelves;
+    }
+
+    public void setShelves(Integer shelves) {
+        this.shelves = shelves;
+    }
+
+    public Integer getOutStock() {
+        return outStock;
+    }
+
+    public void setOutStock(Integer outStock) {
+        this.outStock = outStock;
+    }
+
+    public Integer getProductNum() {
+        return productNum;
+    }
+
+    public void setProductNum(Integer productNum) {
+        this.productNum = productNum;
+    }
+}

+ 8 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderReturnApplyService.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.service;
 
+import com.yonge.cooleshow.admin.dto.HomeStatistical;
 import com.yonge.cooleshow.admin.dto.OmsOrderReturnApplyResult;
 import com.yonge.cooleshow.admin.dto.OmsReturnApplyQueryParam;
 import com.yonge.cooleshow.admin.dto.OmsUpdateStatusParam;
@@ -38,4 +39,11 @@ public interface OmsOrderReturnApplyService {
      * @param data
      */
     void orderCallback(String data);
+
+    /**
+     * 统计 待处理退款申请 待处理退货订单
+     *
+     * @return
+     */
+    HomeStatistical countReturnStatus();
 }

+ 5 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderService.java

@@ -76,4 +76,9 @@ public interface OmsOrderService {
      * @return
      */
     List<Map<String,Object>> userOrderInfoList(Map<String, Object> param);
+
+    /**
+     * 首页统计
+     */
+    HomeStatistical statistical();
 }

+ 13 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsProductService.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.service;
 
+import com.yonge.cooleshow.admin.dto.HomeStatistical;
 import com.yonge.cooleshow.admin.dto.PmsProductParam;
 import com.yonge.cooleshow.admin.dto.PmsProductQueryParam;
 import com.yonge.cooleshow.admin.dto.PmsProductResult;
@@ -70,4 +71,16 @@ public interface PmsProductService {
      * 根据商品名称或者货号模糊查询
      */
     List<PmsProduct> list(String keyword);
+
+    /**
+     * 获取缺货数量
+     */
+    HomeStatistical countLowStockCount();
+
+    /**
+     * 统计 已下架 已上架 全部商品
+     *
+     * @return
+     */
+    HomeStatistical countProductShowStatus();
 }

+ 8 - 1
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderReturnApplyServiceImpl.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.admin.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.yonge.cooleshow.admin.dao.OmsOrderReturnApplyDao;
+import com.yonge.cooleshow.admin.dto.HomeStatistical;
 import com.yonge.cooleshow.admin.dto.OmsOrderReturnApplyResult;
 import com.yonge.cooleshow.admin.dto.OmsReturnApplyQueryParam;
 import com.yonge.cooleshow.admin.dto.OmsUpdateStatusParam;
@@ -110,7 +111,7 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
      */
     private void refundAmount(OmsOrderReturnApply returnApply) {
         // 退款
-        UserOrderPayment userOrderPayment = userOrderPaymentMapper.selectByTranNo(returnApply.getOrderSn());
+        UserOrderPayment userOrderPayment = userOrderPaymentMapper.selectByOrderNoAndStatusSucceeded(returnApply.getOrderSn());
         OrderRefundReq refundReq = new OrderRefundReq();
         refundReq.setOrderNo(returnApply.getOrderSn());
         refundReq.setRefundAmount(returnApply.getReturnAmount().setScale(2, RoundingMode.HALF_UP).toString());
@@ -156,6 +157,12 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
         }
     }
 
+    @Override
+    public HomeStatistical countReturnStatus() {
+
+        return returnApplyDao.selectReturnStatusCount();
+    }
+
     /**
      * 退款失败
      *

+ 26 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java

@@ -5,6 +5,8 @@ import com.yonge.cooleshow.admin.dao.OmsOrderDao;
 import com.yonge.cooleshow.admin.dao.OmsOrderOperateHistoryDao;
 import com.yonge.cooleshow.admin.dto.*;
 import com.yonge.cooleshow.admin.dto.search.UserStatisticalSearch;
+import com.yonge.cooleshow.admin.service.OmsOrderReturnApplyService;
+import com.yonge.cooleshow.admin.service.PmsProductService;
 import com.yonge.cooleshow.mbg.mapper.OmsOrderMapper;
 import com.yonge.cooleshow.mbg.mapper.OmsOrderOperateHistoryMapper;
 import com.yonge.cooleshow.mbg.model.OmsOrder;
@@ -35,6 +37,12 @@ public class OmsOrderServiceImpl implements OmsOrderService {
     @Autowired
     private OmsOrderOperateHistoryMapper orderOperateHistoryMapper;
 
+    @Autowired
+    private OmsOrderReturnApplyService orderReturnApplyService;
+
+    @Autowired
+    private PmsProductService productService;
+
     @Override
     public List<OmsOrder> list(OmsOrderQueryParam queryParam, Integer pageSize, Integer pageNum) {
         PageHelper.startPage(pageNum, pageSize);
@@ -163,4 +171,22 @@ public class OmsOrderServiceImpl implements OmsOrderService {
     public List<Map<String,Object>> userOrderInfoList(Map<String, Object> param) {
         return orderDao.getUserOrderInfoList(param);
     }
+
+    @Override
+    public HomeStatistical statistical() {
+        HomeStatistical  homeStatistical = new HomeStatistical();
+        // 订单状态
+        homeStatistical = orderDao.selectOrderStatusNum();
+
+        // 缺货登记   库存紧张
+        homeStatistical = productService.countLowStockCount();
+
+        // 待处理退款申请  待处理退货订单
+        homeStatistical = orderReturnApplyService.countReturnStatus();
+
+        // 已下架 已上架 全部商品
+        homeStatistical = productService.countProductShowStatus();
+
+        return homeStatistical;
+    }
 }

+ 13 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsProductServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
 import com.github.pagehelper.PageHelper;
 import com.yonge.cooleshow.admin.dao.*;
 import com.yonge.cooleshow.admin.dao.*;
+import com.yonge.cooleshow.admin.dto.HomeStatistical;
 import com.yonge.cooleshow.admin.dto.PmsProductParam;
 import com.yonge.cooleshow.admin.dto.PmsProductQueryParam;
 import com.yonge.cooleshow.admin.dto.PmsProductResult;
@@ -302,6 +303,18 @@ public class PmsProductServiceImpl implements PmsProductService {
         return productMapper.selectByExample(productExample);
     }
 
+    @Override
+    public HomeStatistical countLowStockCount() {
+
+        return productDao.selectLowStockCount();
+
+    }
+
+    @Override
+    public HomeStatistical countProductShowStatus() {
+        return productDao.selectProductShowStatusCount();
+    }
+
     /**
      * 建立和插入关系表操作
      *

+ 11 - 0
cooleshow-mall/mall-admin/src/main/resources/config/mybatis/OmsOrderDao.xml

@@ -109,4 +109,15 @@
         </where>
         group by member_id
     </select>
+
+    <select id="selectOrderStatusNum" resultType="com.yonge.cooleshow.admin.dto.HomeStatistical">
+
+        select
+            sum(if(status = 0 or status = 6,1,0)) as waitPayOrder,
+            sum(if(status = 1,1,0)) as waitOutOrder,
+            sum(if(status = 2,1,0)) as outOrder,
+            sum(if(status = 3,1,0)) as successOrder,
+            sum(if(status = 2 and confirm_status = 0,1,0)) as waitReceiptOrder
+        from oms_order
+    </select>
 </mapper>

+ 8 - 0
cooleshow-mall/mall-admin/src/main/resources/config/mybatis/OmsOrderReturnApplyDao.xml

@@ -56,4 +56,12 @@
             LEFT JOIN oms_company_address ca ON ra.company_address_id = ca.id
         WHERE ra.id=#{id};
     </select>
+
+    <select id="selectReturnStatusCount" resultType="com.yonge.cooleshow.admin.dto.HomeStatistical">
+        select
+            sum(if(`status` = 0,1,0)) as waitDisposeRefund,
+            sum(if(`status` = 1,1,0)) as waitDisposeRefundOrder
+        from oms_order_return_apply
+
+    </select>
 </mapper>

+ 23 - 0
cooleshow-mall/mall-admin/src/main/resources/config/mybatis/PmsProductDao.xml

@@ -42,4 +42,27 @@
         select * from cms_prefrence_area_product_relation where product_id=#{productId}
     </select>
 
+    <select id="selectLowStockCount" resultType="com.yonge.cooleshow.admin.dto.HomeStatistical">
+        select DISTINCT count(pp.id) as outStockProduct,
+            count(pp.id) as outStock
+        from
+            pms_product  pp
+                left join
+            (select DISTINCT pss.product_id
+             from  pms_sku_stock pss
+             where pss.stock &lt;= pss.low_stock) b
+        on b.product_id = pp.id
+        where  (pp.stock &lt;= pp.low_stock or b.product_id is not null)
+    </select>
+
+    <select id="selectProductShowStatusCount" resultType="com.yonge.cooleshow.admin.dto.HomeStatistical">
+        select
+
+            sum(if(publish_status = 1,1,0)) as shelves,
+            sum(if(publish_status = 1,0,1)) as delisted,
+            count(0)  as productNum
+
+        from pms_product where delete_status = 0
+
+    </select>
 </mapper>

+ 4 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/mapper/PmsProductAttributeMapper.java

@@ -1,8 +1,12 @@
 package com.yonge.cooleshow.mbg.mapper;
 
+import com.yonge.cooleshow.mbg.model.PmsProduct;
 import com.yonge.cooleshow.mbg.model.PmsProductAttribute;
 import com.yonge.cooleshow.mbg.model.PmsProductAttributeExample;
+
 import java.util.List;
+
+import com.yonge.cooleshow.mbg.model.PmsProductAttributeValue;
 import org.apache.ibatis.annotations.Param;
 
 public interface PmsProductAttributeMapper {

+ 12 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/mapper/PmsSkuStockMapper.java

@@ -2,7 +2,9 @@ package com.yonge.cooleshow.mbg.mapper;
 
 import com.yonge.cooleshow.mbg.model.PmsSkuStock;
 import com.yonge.cooleshow.mbg.model.PmsSkuStockExample;
+
 import java.util.List;
+
 import org.apache.ibatis.annotations.Param;
 
 public interface PmsSkuStockMapper {
@@ -27,4 +29,14 @@ public interface PmsSkuStockMapper {
     int updateByPrimaryKeySelective(PmsSkuStock record);
 
     int updateByPrimaryKey(PmsSkuStock record);
+
+    /**
+     * 锁定库存
+     *
+     * @param productSkuId
+     * @param quantity
+     * @return
+     */
+    int lockStock(@Param("productSkuId") Long productSkuId, @Param("quantity") Integer quantity);
+
 }

+ 11 - 1
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/mapper/UserOrderPaymentMapper.java

@@ -1,6 +1,9 @@
 package com.yonge.cooleshow.mbg.mapper;
 
 import com.yonge.cooleshow.mbg.model.UserOrderPayment;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface UserOrderPaymentMapper {
 
@@ -13,5 +16,12 @@ public interface UserOrderPaymentMapper {
     int updateByPrimaryKeySelective(UserOrderPayment userOrderPayment);
 
 
-    UserOrderPayment selectByOrderNo(String orderSn, String payChannel, String payStaus);
+    List<UserOrderPayment> selectByOrderNo(@Param("orderSn") String orderSn);
+
+    UserOrderPayment selectByOrderNoAndStatus(@Param("orderSn") String orderSn, @Param(
+            "payChannel") String payChannel, @Param("payStatus") String payStatus);
+
+    UserOrderPayment selectByOrderNoAndStatusPaying(@Param("orderSn") String orderSn);
+
+    UserOrderPayment selectByOrderNoAndStatusSucceeded(@Param("orderSn") String orderSn);
 }

+ 11 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrder.java

@@ -16,6 +16,9 @@ public class OmsOrder implements Serializable {
     @ApiModelProperty(value = "订单编号")
     private String orderSn;
 
+    @ApiModelProperty("购物车id(逗号隔开)")
+    private String cartIds;
+
     @ApiModelProperty(value = "提交时间")
     private Date createTime;
 
@@ -544,4 +547,12 @@ public class OmsOrder implements Serializable {
         sb.append("]");
         return sb.toString();
     }
+
+    public String getCartIds() {
+        return cartIds;
+    }
+
+    public void setCartIds(String cartIds) {
+        this.cartIds = cartIds;
+    }
 }

+ 12 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/PmsProduct.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 public class PmsProduct implements Serializable {
     private Long id;
@@ -120,8 +121,19 @@ public class PmsProduct implements Serializable {
     @ApiModelProperty(value = "移动端网页详情")
     private String detailMobileHtml;
 
+    @ApiModelProperty("商品的sku库存信息")
+    private List<PmsSkuStock> skuStockList;
+
     private static final long serialVersionUID = 1L;
 
+    public List<PmsSkuStock> getSkuStockList() {
+        return skuStockList;
+    }
+
+    public void setSkuStockList(List<PmsSkuStock> skuStockList) {
+        this.skuStockList = skuStockList;
+    }
+
     public Long getId() {
         return id;
     }

+ 11 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/PmsProductAttributeValue.java

@@ -10,11 +10,22 @@ public class PmsProductAttributeValue implements Serializable {
 
     private Long productAttributeId;
 
+    @ApiModelProperty("属性名")
+    private String productAttributeName;
+
     @ApiModelProperty(value = "手动添加规格或参数的值,参数单值,规格有多个时以逗号隔开")
     private String value;
 
     private static final long serialVersionUID = 1L;
 
+    public String getProductAttributeName() {
+        return productAttributeName;
+    }
+
+    public void setProductAttributeName(String productAttributeName) {
+        this.productAttributeName = productAttributeName;
+    }
+
     public Long getId() {
         return id;
     }

+ 18 - 3
cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderMapper.xml

@@ -6,6 +6,7 @@
     <result column="member_id" jdbcType="BIGINT" property="memberId" />
     <result column="coupon_id" jdbcType="BIGINT" property="couponId" />
     <result column="order_sn" jdbcType="VARCHAR" property="orderSn" />
+    <result column="cart_ids" jdbcType="VARCHAR" property="cartIds" />
     <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
     <result column="member_username" jdbcType="VARCHAR" property="memberUsername" />
     <result column="total_amount" jdbcType="DECIMAL" property="totalAmount" />
@@ -112,7 +113,7 @@
     integration, growth, promotion_info, bill_type, bill_header, bill_content, bill_receiver_phone, 
     bill_receiver_email, receiver_name, receiver_phone, receiver_post_code, receiver_province, 
     receiver_city, receiver_region, receiver_detail_address, note, confirm_status, delete_status, 
-    use_integration, payment_time, delivery_time, receive_time, comment_time, modify_time
+    use_integration, payment_time, delivery_time, receive_time, comment_time, modify_time,cart_ids
   </sql>
   <select id="selectByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderExample" resultMap="BaseResultMap">
     select
@@ -162,7 +163,7 @@
       receiver_detail_address, note, confirm_status, 
       delete_status, use_integration, payment_time, 
       delivery_time, receive_time, comment_time, 
-      modify_time)
+      modify_time,cart_ids)
     values (#{memberId,jdbcType=BIGINT}, #{couponId,jdbcType=BIGINT}, #{orderSn,jdbcType=VARCHAR}, 
       #{createTime,jdbcType=TIMESTAMP}, #{memberUsername,jdbcType=VARCHAR}, #{totalAmount,jdbcType=DECIMAL}, 
       #{payAmount,jdbcType=DECIMAL}, #{freightAmount,jdbcType=DECIMAL}, #{promotionAmount,jdbcType=DECIMAL}, 
@@ -177,7 +178,7 @@
       #{receiverDetailAddress,jdbcType=VARCHAR}, #{note,jdbcType=VARCHAR}, #{confirmStatus,jdbcType=INTEGER}, 
       #{deleteStatus,jdbcType=INTEGER}, #{useIntegration,jdbcType=INTEGER}, #{paymentTime,jdbcType=TIMESTAMP}, 
       #{deliveryTime,jdbcType=TIMESTAMP}, #{receiveTime,jdbcType=TIMESTAMP}, #{commentTime,jdbcType=TIMESTAMP}, 
-      #{modifyTime,jdbcType=TIMESTAMP})
+      #{modifyTime,jdbcType=TIMESTAMP},#{cartIds})
   </insert>
   <insert id="insertSelective" parameterType="com.yonge.cooleshow.mbg.model.OmsOrder">
     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
@@ -314,6 +315,9 @@
       <if test="modifyTime != null">
         modify_time,
       </if>
+      <if test="cartIds != null">
+        cart_ids,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="memberId != null">
@@ -445,6 +449,9 @@
       <if test="modifyTime != null">
         #{modifyTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="cartIds != null">
+        #{cartIds},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderExample" resultType="java.lang.Long">
@@ -588,6 +595,9 @@
       <if test="record.modifyTime != null">
         modify_time = #{record.modifyTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="record.cartIds != null">
+        cart_ids = #{record.cartIds},
+      </if>
     </set>
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -638,6 +648,7 @@
       delivery_time = #{record.deliveryTime,jdbcType=TIMESTAMP},
       receive_time = #{record.receiveTime,jdbcType=TIMESTAMP},
       comment_time = #{record.commentTime,jdbcType=TIMESTAMP},
+      cart_ids = #{record.cartIds},
       modify_time = #{record.modifyTime,jdbcType=TIMESTAMP}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -775,6 +786,9 @@
       <if test="modifyTime != null">
         modify_time = #{modifyTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="cartIds != null">
+        cart_ids = #{cartIds,jdbcType=TIMESTAMP},
+      </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
@@ -822,6 +836,7 @@
       delivery_time = #{deliveryTime,jdbcType=TIMESTAMP},
       receive_time = #{receiveTime,jdbcType=TIMESTAMP},
       comment_time = #{commentTime,jdbcType=TIMESTAMP},
+      cart_ids = #{cartIds},
       modify_time = #{modifyTime,jdbcType=TIMESTAMP}
     where id = #{id,jdbcType=BIGINT}
   </update>

+ 4 - 0
cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/PmsSkuStockMapper.xml

@@ -303,4 +303,8 @@
       sp_data = #{spData,jdbcType=VARCHAR}
     where id = #{id,jdbcType=BIGINT}
   </update>
+
+  <update id="lockStock">
+    update pms_sku_stock set lock_stock = lock_stock + #{quantity} where  id = #{productSkuId} and stock &gt;= ( lock_stock + #{quantity})
+    </update>
 </mapper>

+ 25 - 0
cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/UserOrderPaymentMapper.xml

@@ -226,4 +226,29 @@
         <include refid="Base_Column_List" />
       from user_order_payment where trans_no_ = #{orderNo} limit 1
     </select>
+
+    <select id="selectByOrderNo" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List" />
+        from user_order_payment where order_no_ = #{orderSn}
+    </select>
+
+    <select id="selectByOrderNoAndStatusPaying" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List" />
+        from user_order_payment where order_no_ = #{orderSn} and status_ = 'paying'
+    </select>
+
+    <select id="selectByOrderNoAndStatus" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List" />
+        from user_order_payment where order_no_ = #{orderSn}
+        and status_ = #{payStatus} and pay_channel_ = #{payChannel}
+    </select>
+
+    <select id="selectByOrderNoAndStatusSucceeded" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List" />
+        from user_order_payment where order_no_ = #{orderSn} and status_ = 'succeeded'
+    </select>
 </mapper>

+ 2 - 1
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/enums/PayChannelEnum.java

@@ -8,7 +8,8 @@ package com.yonge.cooleshow.enums;
  */
 public enum PayChannelEnum {
     alipay("alipay","支付宝APP支付"),
-    wx_lite("wx_lite","微信APP支付")
+    wx_lite("wx_lite","微信小程序支付"),
+    alipay_lite("alipay_lite","支付宝小程序支付")
     ;
     private String code;
     private String msg;

+ 1 - 1
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/adapay/PaymentSdk.java

@@ -221,7 +221,7 @@ public class PaymentSdk {
     /**
      *  查看退款订单
      *
-     * {
+     * @param {
      *     "status": "succeeded",
      *     "prod_mode": "true",
      *     "refunds": [

+ 23 - 32
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/OrderPayReq.java

@@ -21,17 +21,20 @@ public class OrderPayReq {
     @ApiModelProperty(value = "订单号 ", required = true)
     private String orderNo;
     @NotNull(message = "支付渠道不能为空")
-    @ApiModelProperty(value = "支付渠道:  alipay 支付宝  wx_lite 微信 ", required = true)
+    @ApiModelProperty(value = "支付渠道:  alipay 支付宝APP支付 alipay_lite 支付宝小程序支付  wx_lite 微信小程序支付 ", required = true)
     private PayChannelEnum payChannel;
+    @ApiModelProperty(value = "微信用户openId(微信支付必传)")
+    private String openId;
+    @ApiModelProperty(value = "买家的支付宝用户 id(支付宝小程序支付必传)")
+    private String buyerId;
+    @ApiModelProperty(value = "用户说明 ")
+    private String reason;
+
+
     @ApiModelProperty(value = "用户id ")
     private Long userId;
     @ApiModelProperty(value = "用户端公网ip ")
     private String ipAddress;
-    @ApiModelProperty(value = "微信用户openId(微信支付必传)")
-    private String openId;
-
-    @ApiModelProperty(value = "订单状态",hidden = true)
-    private OrderStatusEnum orderStatus;
 
     @ApiModelProperty(value = "订单金额",hidden = true)
     private BigDecimal orderPrice;
@@ -45,32 +48,20 @@ public class OrderPayReq {
     @ApiModelProperty(value = "拉起支付信息",hidden = true)
     private String payInfo;
 
-    public void orderStatus(Integer orderStatus) {
-        if (orderStatus == 0) {
-            this.orderStatus = OrderStatusEnum.PAYING;
-        } else if (orderStatus == 1) {
-            this.orderStatus = OrderStatusEnum.PAID;
-        }else if (orderStatus == 2) {
-            this.orderStatus = OrderStatusEnum.CLOSE;
-        }else if (orderStatus == 3) {
-            this.orderStatus = OrderStatusEnum.CLOSE;
-        }else if (orderStatus == 4) {
-            this.orderStatus = OrderStatusEnum.CLOSE;
-        }else if (orderStatus == 5) {
-            this.orderStatus = OrderStatusEnum.CLOSE;
-        }else if (orderStatus == 6) {
-            this.orderStatus = OrderStatusEnum.WAIT_PAY;
-        } else {
-            this.orderStatus = OrderStatusEnum.CLOSE;
-        }
-    }
-
-    public OrderStatusEnum getOrderStatus() {
-        return orderStatus;
-    }
-
-    public void setOrderStatus(OrderStatusEnum orderStatus) {
-        this.orderStatus = orderStatus;
+    public String getBuyerId() {
+        return buyerId;
+    }
+
+    public void setBuyerId(String buyerId) {
+        this.buyerId = buyerId;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
     }
 
     public BigDecimal getOrderPrice() {

+ 7 - 3
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/service/PaymentService.java

@@ -23,10 +23,14 @@ public interface PaymentService {
      */
     OrderPayRes orderPay(OrderPayReq payReq);
 
-    OrderPayRes orderPayWaitPay(OrderPayReq payReq);
 
-
-    OrderPayRes orderPayPaying(OrderPayReq payReq);
+    /**
+     * 拉起原有支付信息,继续支付
+     *
+     * @param payReq
+     * @return
+     */
+    OrderPayRes orderContinue(OrderPayReq payReq);
 
     /**
      * 退款

+ 9 - 24
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/service/impl/AdapayPaymentServiceImpl.java

@@ -39,21 +39,6 @@ public class AdapayPaymentServiceImpl implements PaymentService {
 
     @Override
     public OrderPayRes orderPay(OrderPayReq payReq) {
-        if (OrderStatusEnum.WAIT_PAY.equals(payReq.getOrderStatus())) {
-            //处于待支付状态,需要调用汇付发起付款请求接口
-            return orderPayWaitPay(payReq);
-        } else if (OrderStatusEnum.PAYING.equals(payReq.getOrderStatus())) {
-            //处于付款中状态,需要拉起付款接口返回信息,并且去到汇付
-            return orderPayPaying(payReq);
-        }
-        OrderPayRes orderPayRes = new OrderPayRes();
-        orderPayRes.setStatus(false);
-        orderPayRes.setMessage("订单状态异常");
-        return orderPayRes;
-    }
-
-    @Override
-    public OrderPayRes orderPayWaitPay(OrderPayReq payReq) {
         PaymentReq paymentReq = new PaymentReq();
         paymentReq.setOrder_no(payReq.getOrderNo());
         paymentReq.setPay_channel(payReq.getPayChannel().getCode());
@@ -68,7 +53,11 @@ public class AdapayPaymentServiceImpl implements PaymentService {
         //异步通知地址
         paymentReq.setNotify_url(HuifuConfiguration.getHuifuProperties().getNotifyUrl());
 
-        if (PayChannelEnum.wx_lite.equals(payReq.getPayChannel())) {
+        if (PayChannelEnum.alipay_lite.equals(payReq.getPayChannel())) {
+            Map<String, Object> expend = new HashMap<>();
+            expend.put("buyer_id", payReq.getBuyerId());
+            paymentReq.setExpend(expend);
+        } else if (PayChannelEnum.wx_lite.equals(payReq.getPayChannel())) {
             Map<String, Object> expend = new HashMap<>();
             expend.put("open_id", payReq.getOpenId());
             paymentReq.setExpend(expend);
@@ -99,15 +88,11 @@ public class AdapayPaymentServiceImpl implements PaymentService {
     }
 
     @Override
-    public OrderPayRes orderPayPaying(OrderPayReq payReq) {
+    public OrderPayRes orderContinue(OrderPayReq payReq) {
         OrderPayRes orderPayRes = new OrderPayRes();
-        if (OrderStatusEnum.PAYING.getCode().equals(payReq.getOrderStatus().getCode())) {
-            orderPayRes.setPay_info(payReq.getPayInfo());
-            orderPayRes.setPay_amt(payReq.getOrderPrice().toString());
-        } else {
-            orderPayRes.setStatus(false);
-            orderPayRes.setMessage("订单不处于支付状态中");
-        }
+        orderPayRes.setPay_info(payReq.getPayInfo());
+        orderPayRes.setPayChannel(payReq.getPayChannel().getCode());
+        orderPayRes.setPay_amt(payReq.getOrderPrice().setScale(2, RoundingMode.HALF_UP).toString());
         return orderPayRes;
     }
 

+ 2 - 1
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsCartItemController.java

@@ -52,7 +52,8 @@ public class OmsCartItemController {
     @ResponseBody
     public CommonResult<List<CartPromotionItem>> listPromotion(@RequestParam(required = false) String cartIds) {
         List<Long> list = StringUtil.toLongList(cartIds);
-        List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(memberService.getCurrentMember().getId(), list);
+        List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(memberService.getCurrentMember().getId(), list,
+                                                                                      false);
         return CommonResult.success(cartPromotionItemList);
     }
 

+ 18 - 2
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.portal.controller;
 
 import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
+import com.yonge.cooleshow.mbg.model.OmsOrder;
 import com.yonge.cooleshow.portal.domain.ConfirmOrderResult;
 import com.yonge.cooleshow.portal.domain.OmsOrderDetail;
 import com.yonge.cooleshow.portal.domain.OrderParam;
@@ -12,6 +13,7 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -37,6 +39,20 @@ public class OmsPortalOrderController {
         return CommonResult.success(confirmOrderResult);
     }
 
+
+    @ApiOperation("再来一单")
+    @RequestMapping(value = "/oneOrder", method = RequestMethod.POST)
+    @ResponseBody
+    public CommonResult<ConfirmOrderResult> anotherList(@RequestParam Long orderId) {
+        OmsOrder order = portalOrderService.getOrderById(orderId);
+        List<Long> list = StringUtil.toLongList(order.getCartIds());
+        if (CollectionUtils.isEmpty(list)) {
+            return CommonResult.failed("库存不足");
+        }
+        ConfirmOrderResult confirmOrderResult = portalOrderService.generateConfirmOrder(list);
+        return CommonResult.success(confirmOrderResult);
+    }
+
     @ApiOperation("根据购物车信息生成订单")
     @RequestMapping(value = "/generateOrder", method = RequestMethod.POST)
     @ResponseBody
@@ -71,10 +87,10 @@ public class OmsPortalOrderController {
 
     @ApiOperation("按状态分页获取用户订单列表")
     @ApiImplicitParam(name = "status", value = "订单状态:-1->全部;0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭",
-            defaultValue = "-1", allowableValues = "-1,0,1,2,3,4", paramType = "query", dataType = "int")
+            defaultValue = "-1", allowableValues = "-1,0,1,2,3,4", paramType = "query", dataType = "string")
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     @ResponseBody
-    public CommonResult<CommonPage<OmsOrderDetail>> list(@RequestParam Integer status,
+    public CommonResult<CommonPage<OmsOrderDetail>> list(@RequestParam String status,
                                                    @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                                                    @RequestParam(required = false, defaultValue = "5") Integer pageSize) {
         CommonPage<OmsOrderDetail> orderPage = portalOrderService.list(status,pageNum,pageSize);

+ 14 - 12
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/PaymentController.java

@@ -9,7 +9,6 @@ import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.enums.OrdeerCacherEnmu;
 import com.yonge.cooleshow.portal.service.OmsPortalOrderService;
-import com.yonge.cooleshow.util.DistributedLock;
 import com.yonge.cooleshow.sdk.adapay.PaymentSdk;
 import com.yonge.cooleshow.sdk.req.OrderPayReq;
 import com.yonge.cooleshow.sdk.res.OrderPayRes;
@@ -17,6 +16,7 @@ import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.utils.web.WebUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -27,7 +27,6 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import java.util.Map;
-import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -112,22 +111,25 @@ public class PaymentController extends BaseController {
         payReq.setUserId(user.getId());
         payReq.setIpAddress(WebUtil.getRemoteIp(request));
 
-        Future<OrderPayRes> orderPayResFuture = DistributedLock.of(redissonClient)
-              .callIfLockCanGet(OrdeerCacherEnmu.LOCK_PAY_ORDER.getRedisKey(user.getId()),
-                                () -> portalOrderService.orderPay(payReq), 60L, TimeUnit.SECONDS);
-
+        RLock lock = redissonClient.getLock(OrdeerCacherEnmu.LOCK_PAY_ORDER.getRedisKey(user.getId()));
         try {
-            OrderPayRes orderPayRes = orderPayResFuture.get();
-            if (orderPayRes.isStatus()) {
-                return succeed(orderPayRes);
-            }  else {
-                return failed(orderPayRes.getMessage());
+            boolean b = lock.tryLock(60, TimeUnit.SECONDS);
+            if (b) {
+                OrderPayRes orderPayRes = portalOrderService.orderPay(payReq);
+                if (orderPayRes.isStatus()) {
+                    return succeed(orderPayRes);
+                }  else {
+                    return failed(orderPayRes.getMessage());
+                }
             }
+            return failed("请求超时");
         }catch (BizException e) {
             return failed(e.getMessage());
-        }catch (Exception e) {
+        } catch (Exception e) {
             e.printStackTrace();
             return HttpResponseResult.failed("付款失败");
+        }finally {
+            lock.unlock();
         }
     }
 }

+ 2 - 2
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/UmsMemberCouponController.java

@@ -12,7 +12,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -66,7 +65,8 @@ public class UmsMemberCouponController {
     @RequestMapping(value = "/list/cart/{type}", method = RequestMethod.GET)
     @ResponseBody
     public CommonResult<List<SmsCouponHistoryDetail>> listCart(@PathVariable Integer type) {
-        List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(memberService.getCurrentMember().getId(), null);
+        List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(memberService.getCurrentMember().getId(), null,
+                                                                                      false);
         List<SmsCouponHistoryDetail> couponHistoryList = memberCouponService.listCart(cartPromotionItemList, type);
         return CommonResult.success(couponHistoryList);
     }

+ 1 - 1
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/domain/OrderParam.java

@@ -16,7 +16,7 @@ public class OrderParam {
     private Long couponId;
     @ApiModelProperty("使用的积分数")
     private Integer useIntegration;
-    @ApiModelProperty("支付方式")
+    @ApiModelProperty("支付方式 :0->未支付;1->支付宝;2->微信")
     private Integer payType;
     @ApiModelProperty("被选中的购物车商品ID")
     private List<Long> cartIds;

+ 11 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/OmsReturnApplyQueryParam.java

@@ -22,6 +22,9 @@ public class OmsReturnApplyQueryParam {
     @ApiModelProperty(value = "处理时间")
     private String handleTime;
 
+    @ApiModelProperty(hidden = true)
+    private Long memberId;
+
 
     private Integer pageSize;
     private Integer pageNum;
@@ -89,4 +92,12 @@ public class OmsReturnApplyQueryParam {
     public void setHandleTime(String handleTime) {
         this.handleTime = handleTime;
     }
+
+    public Long getMemberId() {
+        return memberId;
+    }
+
+    public void setMemberId(Long memberId) {
+        this.memberId = memberId;
+    }
 }

+ 2 - 2
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/ProductSearch.java

@@ -24,12 +24,12 @@ public class ProductSearch {
     private Long productAttributeCategoryId;
 
     @ApiModelProperty("")
-    private Integer pageNum = 0;
+    private Integer pageNum = 1;
 
     @ApiModelProperty("")
     private Integer pageSize= 5;
 
-    @ApiModelProperty("")
+    @ApiModelProperty("1->按新品;2->按销量;3->价格从低到高;4->价格从高到低")
     private Integer sort = 0;
 
     public String getKeyword() {

+ 1 - 1
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsCartItemService.java

@@ -26,7 +26,7 @@ public interface OmsCartItemService {
     /**
      * 获取包含促销活动信息的购物车列表
      */
-    List<CartPromotionItem> listPromotion(Long memberId, List<Long> cartIds);
+    List<CartPromotionItem> listPromotion(Long memberId, List<Long> cartIds, boolean del);
 
     /**
      * 修改某个购物车商品的数量

+ 11 - 8
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.portal.service;
 
 import com.yonge.cooleshow.mall.common.api.CommonPage;
+import com.yonge.cooleshow.mbg.model.OmsOrder;
 import com.yonge.cooleshow.portal.domain.ConfirmOrderResult;
 import com.yonge.cooleshow.portal.domain.OmsOrderDetail;
 import com.yonge.cooleshow.portal.domain.OrderParam;
@@ -44,7 +45,7 @@ public interface OmsPortalOrderService {
      * 取消单个超时订单
      */
     @Transactional
-    void cancelOrder(Long orderId, String message);
+    void cancelOrder(Long orderId,  String message);
 
     /**
      * 发送延迟消息取消订单
@@ -61,7 +62,7 @@ public interface OmsPortalOrderService {
     /**
      * 分页获取用户订单
      */
-    CommonPage<OmsOrderDetail> list(Integer status, Integer pageNum, Integer pageSize);
+    CommonPage<OmsOrderDetail> list(String status, Integer pageNum, Integer pageSize);
 
     /**
      * 根据订单ID获取订单详情
@@ -75,14 +76,8 @@ public interface OmsPortalOrderService {
     void deleteOrder(Long orderId);
 
     /**
-     *
-     * @param data
-     * @param type
-     */    /**
      * 订单拉起支付
      *
-     * @param payReq 支付信息
-     * @return
      */
     @Transactional
     void orderCallback(String data, String type);
@@ -95,4 +90,12 @@ public interface OmsPortalOrderService {
      */
     @Transactional
     OrderPayRes orderPay(OrderPayReq payReq);
+
+    /**
+     * 获取订单信息
+     *
+     * @param orderId 订单号
+     * @return
+     */
+    OmsOrder getOrderById(Long orderId);
 }

+ 34 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/UserOrderPaymentService.java

@@ -4,6 +4,8 @@ import com.yonge.cooleshow.enums.PayChannelEnum;
 import com.yonge.cooleshow.enums.PayStatusEnum;
 import com.yonge.cooleshow.mbg.model.UserOrderPayment;
 
+import java.util.List;
+
 /**
  * Description
  *
@@ -31,4 +33,36 @@ public interface UserOrderPaymentService {
 
     UserOrderPayment getByOrderNo(String orderSn, PayChannelEnum payChannel, PayStatusEnum pending);
 
+    /**
+     * 根据订单查询 订单支付信息
+     *
+     * @param orderSn 订单号
+     * @return
+     */
+    List<UserOrderPayment> getByOrderNo(String orderSn);
+
+    /**
+     * 关单
+     *
+     * @param orderSn 订单号
+     * @param message 信息
+     */
+    void closePayment(String orderSn, String message);
+
+    /**
+     * 查询支付中的订单, 最多只有一个
+     *
+     * @param orderSn
+     * @return
+     */
+    UserOrderPayment getByOrderNoAndStatusPaying(String orderSn);
+
+
+    /**
+     * 查询支付成功的订单, 最多只有一个
+     *
+     * @param orderSn
+     * @return
+     */
+    UserOrderPayment getByOrderNoAndStatusSucceeded(String orderSn);
 }

+ 12 - 6
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/HomeServiceImpl.java

@@ -9,7 +9,9 @@ import com.yonge.cooleshow.portal.domain.HomeContentResult;
 import com.yonge.cooleshow.portal.domain.HomeFlashPromotion;
 import com.yonge.cooleshow.portal.dto.ProductCategorySmallVo;
 import com.yonge.cooleshow.portal.service.HomeService;
+import com.yonge.cooleshow.portal.service.UmsMemberService;
 import com.yonge.cooleshow.portal.util.DateUtil;
+import com.yonge.toolset.base.exception.BizException;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -43,7 +45,8 @@ public class HomeServiceImpl implements HomeService {
 
     @Autowired
     private OmsCartItemMapper cartItemMapper;
-
+    @Autowired
+    private UmsMemberService memberService;
     @Autowired
     private PmsProductAttributeCategoryMapper productAttributeCategoryMapper;
 
@@ -77,6 +80,7 @@ public class HomeServiceImpl implements HomeService {
     }
 
     private List<PmsProduct> getHotProductList() {
+        PageHelper.startPage(1, 3);
         PmsProductExample example = new PmsProductExample();
         example.setOrderByClause("sort desc");
         example.createCriteria().andDeleteStatusEqualTo(0)
@@ -88,14 +92,16 @@ public class HomeServiceImpl implements HomeService {
 
     private long getHomeCartItemCount() {
         OmsCartItemExample example = new OmsCartItemExample();
-        // todo 用户id
-        // example.createCriteria().andDeleteStatusEqualTo(0).andMemberIdEqualTo(memberId);
-        example.createCriteria().andDeleteStatusEqualTo(0);
+        UmsMember currentMember = memberService.getCurrentMember();
+        if (currentMember == null) {
+            throw new BizException("请重新登录");
+        }
+        example.createCriteria().andDeleteStatusEqualTo(0).andMemberIdEqualTo(currentMember.getId());
         return cartItemMapper.countByExample(example);
     }
 
     private  List<PmsProductAttributeCategory>  getHomeProductAttributeCategory() {
-        PageHelper.startPage(1, 4);
+        PageHelper.startPage(1, 10);
         PmsProductAttributeCategoryExample example = new PmsProductAttributeCategoryExample();
         example.setOrderByClause("id desc");
         List<PmsProductAttributeCategory> pmsProductCategories = productAttributeCategoryMapper.selectByExample(example);
@@ -107,7 +113,7 @@ public class HomeServiceImpl implements HomeService {
 
 
     private List<ProductCategorySmallVo> getHomeProductCategoryList() {
-        PageHelper.startPage(1, 4);
+        PageHelper.startPage(1, 10);
         PmsProductCategoryExample example = new PmsProductCategoryExample();
         example.setOrderByClause("sort desc");
         example.createCriteria().andParentIdEqualTo(0L)

+ 11 - 4
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsCartItemServiceImpl.java

@@ -80,10 +80,17 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
     }
 
     @Override
-    public List<CartPromotionItem> listPromotion(Long memberId, List<Long> cartIds) {
-        List<OmsCartItem> cartItemList = list(memberId);
-        if(CollUtil.isNotEmpty(cartIds)){
-            cartItemList = cartItemList.stream().filter(item->cartIds.contains(item.getId())).collect(Collectors.toList());
+    public List<CartPromotionItem> listPromotion(Long memberId, List<Long> cartIds, boolean del) {
+        List<OmsCartItem> cartItemList = new ArrayList<>();
+        if (!del) {
+            cartItemList = list(memberId);
+            if (CollUtil.isNotEmpty(cartIds)) {
+                cartItemList = cartItemList.stream().filter(item -> cartIds.contains(item.getId())).collect(Collectors.toList());
+            }
+        } else {
+            OmsCartItemExample example = new OmsCartItemExample();
+            example.createCriteria().andMemberIdEqualTo(memberId).andIdIn(cartIds);
+            cartItemList  = cartItemMapper.selectByExample(example);
         }
         List<CartPromotionItem> cartPromotionItemList = new ArrayList<>();
         if(!CollectionUtils.isEmpty(cartItemList)){

+ 11 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderReturnApplyServiceImpl.java

@@ -4,12 +4,15 @@ import com.github.pagehelper.PageHelper;
 import com.yonge.cooleshow.mbg.mapper.OmsOrderReturnApplyMapper;
 import com.yonge.cooleshow.mbg.model.OmsOrderReturnApply;
 import com.yonge.cooleshow.mbg.model.OmsOrderReturnApplyExample;
+import com.yonge.cooleshow.mbg.model.UmsMember;
 import com.yonge.cooleshow.portal.dao.OmsOrderReturnApplyDao;
 import com.yonge.cooleshow.portal.domain.OmsOrderReturnApplyParam;
 import com.yonge.cooleshow.portal.dto.OmsOrderReturnApplyResult;
 import com.yonge.cooleshow.portal.dto.OmsReturnApplyDto;
 import com.yonge.cooleshow.portal.dto.OmsReturnApplyQueryParam;
 import com.yonge.cooleshow.portal.service.OmsPortalOrderReturnApplyService;
+import com.yonge.cooleshow.portal.service.UmsMemberService;
+import com.yonge.toolset.base.exception.BizException;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -30,6 +33,9 @@ public class OmsPortalOrderReturnApplyServiceImpl implements OmsPortalOrderRetur
     @Autowired
     private OmsOrderReturnApplyDao returnApplyDao;
 
+    @Autowired
+    private UmsMemberService memberService;
+
     @Override
     public int create(OmsOrderReturnApplyParam returnApply) {
         OmsOrderReturnApply realApply = new OmsOrderReturnApply();
@@ -58,6 +64,11 @@ public class OmsPortalOrderReturnApplyServiceImpl implements OmsPortalOrderRetur
     @Override
     public List<OmsOrderReturnApply> list(OmsReturnApplyQueryParam queryParam, Integer pageSize, Integer pageNum) {
         PageHelper.startPage(pageNum, pageSize);
+        UmsMember currentMember = memberService.getCurrentMember();
+        if (currentMember == null) {
+            throw  new BizException("请重新登录");
+        }
+        queryParam.setMemberId(currentMember.getId());
         return returnApplyDao.getList(queryParam);
     }
 

+ 43 - 52
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.yonge.toolset.base.exception.BizException;
-import com.yonge.cooleshow.enums.OrderStatusEnum;
 import com.yonge.cooleshow.enums.PayStatusEnum;
 import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.exception.Asserts;
@@ -19,11 +18,10 @@ import com.yonge.cooleshow.portal.dao.SmsCouponHistoryDao;
 import com.yonge.cooleshow.portal.domain.*;
 import com.yonge.cooleshow.portal.service.*;
 import com.yonge.cooleshow.sdk.adapay.PaymentSdk;
-import com.yonge.cooleshow.sdk.req.OrderCloseReq;
 import com.yonge.cooleshow.sdk.req.OrderPayReq;
-import com.yonge.cooleshow.sdk.res.OrderCloseRes;
 import com.yonge.cooleshow.sdk.res.OrderPayRes;
 import com.yonge.cooleshow.service.PaymentService;
+import com.yonge.toolset.utils.string.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -92,7 +90,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         ConfirmOrderResult result = new ConfirmOrderResult();
         //获取购物车信息
         UmsMember currentMember = memberService.getCurrentMember();
-        List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId(), cartIds);
+        List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId(), cartIds,true);
         result.setCartPromotionItemList(cartPromotionItemList);
         //获取用户收货地址列表
         List<UmsMemberReceiveAddress> memberReceiveAddressList = memberReceiveAddressService.list();
@@ -116,7 +114,8 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         List<OmsOrderItem> orderItemList = new ArrayList<>();
         //获取购物车及优惠信息
         UmsMember currentMember = memberService.getCurrentMember();
-        List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId(), orderParam.getCartIds());
+        List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId(), orderParam.getCartIds(),
+                                                                                      true);
         for (CartPromotionItem cartPromotionItem : cartPromotionItemList) {
             //生成下单商品信息
             OmsOrderItem orderItem = new OmsOrderItem();
@@ -182,6 +181,11 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         lockStock(cartPromotionItemList);
         //根据商品合计、运费、活动优惠、优惠券、积分计算应付金额
         OmsOrder order = new OmsOrder();
+        StringBuilder cartIds = new StringBuilder();
+        for (Long cartId : orderParam.getCartIds()) {
+            cartIds.append(cartId.toString());
+        }
+        order.setCartIds(cartIds.toString());
         order.setDiscountAmount(new BigDecimal(0));
         order.setTotalAmount(calcTotalAmount(orderItemList));
         order.setFreightAmount(new BigDecimal(0));
@@ -327,26 +331,9 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
                 UmsMember member = memberService.getById(cancelOrder.getMemberId());
                 memberService.updateIntegration(cancelOrder.getMemberId(), member.getIntegration() + cancelOrder.getUseIntegration());
             }
-            UserOrderPayment orderPayment = userOrderPaymentService.getByTranNo(cancelOrder.getOrderSn());
-            if (null != orderPayment) {
-                // 发起关单
-                OrderCloseReq orderCloseReq = new OrderCloseReq();
-                orderCloseReq.setPaymentId(orderPayment.getTransNo());
-                orderCloseReq.setReason(message);
-                OrderCloseRes closeRes = adapayPaymentService.orderClose(orderCloseReq);
-                if (closeRes.isStatus()) {
-                    orderPayment.setCloseStatus(PayStatusEnum.pending.getCode());
-                } else {
-                    orderPayment.setCloseStatus(PayStatusEnum.failed.getCode());
-                    orderPayment.setCloseFailMsg(closeRes.getFailMsg());
-                }
+            // 发起关单
+            userOrderPaymentService.closePayment(cancelOrder.getOrderSn(),message);
 
-                //更新付款单
-                orderPayment.setStatus(PayStatusEnum.failed.getCode());
-                orderPayment.setPayFailMsg(message);
-                orderPayment.setUpdateTime(new Date());
-                userOrderPaymentService.saveOrUpdate(orderPayment);
-            }
         }
     }
 
@@ -376,8 +363,8 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     }
 
     @Override
-    public CommonPage<OmsOrderDetail> list(Integer status, Integer pageNum, Integer pageSize) {
-        if(status==-1){
+    public CommonPage<OmsOrderDetail> list(String status, Integer pageNum, Integer pageSize) {
+        if(status.equals("-1")){
             status = null;
         }
         UmsMember member = memberService.getCurrentMember();
@@ -386,8 +373,10 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         OmsOrderExample.Criteria criteria = orderExample.createCriteria();
         criteria.andDeleteStatusEqualTo(0)
                 .andMemberIdEqualTo(member.getId());
-        if(status!=null){
-            criteria.andStatusEqualTo(status);
+        if(status != null && !StringUtil.isEmpty(status)) {
+            List<Long> list = StringUtil.toLongList(status);
+            List<Integer> collect = list.stream().map(Long::intValue).collect(Collectors.toList());
+            criteria.andStatusIn(collect);
         }
         orderExample.setOrderByClause("create_time desc");
         List<OmsOrder> orderList = orderMapper.selectByExample(orderExample);
@@ -479,16 +468,20 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             orderPayRes.setMessage("订单已付款或已关闭");
             return orderPayRes;
         }
+        payReq.setOrderPrice(detail.getPayAmount());
         UserOrderPayment userOrderPayment = userOrderPaymentService
                 .getByOrderNo(detail.getOrderSn(), payReq.getPayChannel(), PayStatusEnum.pending);
-        payReq.orderStatus(detail.getStatus());
-        payReq.setOrderNo(detail.getOrderSn());
-        payReq.setOrderPrice(detail.getPayAmount());
-        payReq.setGoodTitle("");
-        payReq.setGoodDesc("");
-        if (userOrderPayment != null) {
+
+        if (userOrderPayment == null) {
+            // 支付订单号
+            payReq.setOrderNo(generateOrderSn(detail));
+        }else {
+            // 拉起原有的支付
             payReq.setPayInfo(userOrderPayment.getPayInfo());
+            return adapayPaymentService.orderContinue(payReq);
         }
+        payReq.setGoodTitle("酷乐秀商城订单编号-" + detail.getOrderSn());
+        payReq.setGoodDesc("酷乐秀商城订单编号-" + detail.getOrderSn());
         // 支付中的返回拉起信息
         orderPayRes = adapayPaymentService.orderPay(payReq);
         if (!orderPayRes.isStatus()) {
@@ -500,23 +493,16 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             cancelOrder(detail.getId(),"订单金额和实际支付金额不符");
             throw new BizException("订单金额和实际支付金额不符");
         }
-        // 订单状态和付款状态都是付款中,直接返回付款拉起信息
-        if (OrderStatusEnum.PAYING.getCode().equals(payReq.getOrderStatus().getCode())
-                && PayStatusEnum.pending.getCode().equals(orderPayRes.getPayStatus().getCode())) {
-            return orderPayRes;
-        }
-
 
         OmsOrder omsOrder = new OmsOrder();
         omsOrder.setId(detail.getId());
-        if (orderPayRes.getPayStatus().getCode().equals(OrderStatusEnum.PAYING.getCode())) {
+        if (orderPayRes.getPayStatus().getCode().equals(PayStatusEnum.pending.getCode())) {
             omsOrder.setStatus(0);
             orderMapper.updateByPrimaryKeySelective(omsOrder);
             // 保存订单支付表
-            if (userOrderPayment == null) {
-                userOrderPayment = new UserOrderPayment();
-            }
-            userOrderPayment.setOrderNo(orderPayRes.getOrderNo());
+            userOrderPayment = new UserOrderPayment();
+            userOrderPayment.setOrderNo(detail.getOrderSn());
+            userOrderPayment.setAdapayNo(orderPayRes.getOrderNo());
             userOrderPayment.setPayChannel(orderPayRes.getPayChannel());
             userOrderPayment.setTransNo(orderPayRes.getTransNo());
             userOrderPayment.setPayAmt(new BigDecimal(orderPayRes.getPay_amt()));
@@ -535,6 +521,11 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     }
 
     @Override
+    public OmsOrder getOrderById(Long orderId) {
+        return orderMapper.selectByPrimaryKey(orderId);
+    }
+
+    @Override
     public void orderCallback(String data, String type) {
         JSONObject hfRes = JSONObject.parseObject(data);
 
@@ -635,9 +626,9 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     @Transactional(rollbackFor = Exception.class)
     void payingOrderHandle(OmsOrder userOrder) {
         //判断汇付订单状态
-        UserOrderPayment orderPayment = userOrderPaymentService.getByTranNo(userOrder.getOrderSn());
+        UserOrderPayment orderPayment = userOrderPaymentService.getByOrderNoAndStatusPaying(userOrder.getOrderSn());
         if (null == orderPayment) {
-            return;
+            cancelOrder(userOrder.getId(), "支付超时");
         }
         try {
             Map<String, Object> resMap = paymentSdk.queryPayment(orderPayment.getTransNo());
@@ -659,14 +650,13 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     /**
      * 订单完成
      *
-     * @author liweifan
      * @param: detail
      * @updateTime 2022/4/13 17:17
      */
     @Transactional(rollbackFor = Exception.class)
     void orderSuccess(OmsOrder detail, JSONObject hfRes) {
         //更新订单
-        UserOrderPayment orderPayment = userOrderPaymentService.getByTranNo(detail.getOrderSn());
+        UserOrderPayment orderPayment = userOrderPaymentService.getByOrderNoAndStatusPaying(detail.getOrderSn());
         if (orderPayment.getPayChannel().equals("alipay")) {
             paySuccess(detail.getId(),1);
         } else if (orderPayment.getPayChannel().equals("wx_lite")) {
@@ -984,9 +974,10 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
      */
     private void lockStock(List<CartPromotionItem> cartPromotionItemList) {
         for (CartPromotionItem cartPromotionItem : cartPromotionItemList) {
-            PmsSkuStock skuStock = skuStockMapper.selectByPrimaryKey(cartPromotionItem.getProductSkuId());
-            skuStock.setLockStock(skuStock.getLockStock() + cartPromotionItem.getQuantity());
-            skuStockMapper.updateByPrimaryKeySelective(skuStock);
+            int i = skuStockMapper.lockStock(cartPromotionItem.getProductSkuId(),cartPromotionItem.getQuantity());
+            if (i == 0) {
+                Asserts.fail("库存不足,无法下单");
+            }
         }
     }
 

+ 17 - 1
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/PmsPortalProductServiceImpl.java

@@ -18,6 +18,7 @@ import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -54,6 +55,7 @@ public class PmsPortalProductServiceImpl implements PmsPortalProductService {
         PmsProductExample example = new PmsProductExample();
         PmsProductExample.Criteria criteria = example.createCriteria();
         criteria.andDeleteStatusEqualTo(0);
+        criteria.andPublishStatusEqualTo(1);
         if (StrUtil.isNotEmpty(keyword)) {
             criteria.andNameLike("%" + keyword + "%");
         }
@@ -76,7 +78,21 @@ public class PmsPortalProductServiceImpl implements PmsPortalProductService {
         } else if (sort == 4) {
             example.setOrderByClause("price desc");
         }
-        return productMapper.selectByExample(example);
+        List<PmsProduct> pmsProducts = productMapper.selectByExample(example);
+        List<Long> productIdList = pmsProducts.stream().map(PmsProduct::getId).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(productIdList)) {
+            return pmsProducts;
+        }
+        PmsSkuStockExample skuExample = new PmsSkuStockExample();
+        skuExample.createCriteria().andProductIdIn(productIdList);
+        List<PmsSkuStock> skuStockList = skuStockMapper.selectByExample(skuExample);
+        Map<Long, List<PmsSkuStock>> collect = skuStockList.stream()
+                                                           .collect(Collectors.groupingBy(PmsSkuStock::getProductId));
+        for (PmsProduct pmsProduct : pmsProducts) {
+            pmsProduct.setSkuStockList(collect.get(pmsProduct.getId()));
+        }
+        return pmsProducts;
+
     }
 
     @Override

+ 53 - 1
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/UserOrderPaymentServiceImpl.java

@@ -5,9 +5,16 @@ import com.yonge.cooleshow.enums.PayStatusEnum;
 import com.yonge.cooleshow.mbg.mapper.UserOrderPaymentMapper;
 import com.yonge.cooleshow.mbg.model.UserOrderPayment;
 import com.yonge.cooleshow.portal.service.UserOrderPaymentService;
+import com.yonge.cooleshow.sdk.req.OrderCloseReq;
+import com.yonge.cooleshow.sdk.res.OrderCloseRes;
+import com.yonge.cooleshow.service.PaymentService;
+import com.yonge.toolset.utils.string.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * Description
  *
@@ -20,6 +27,9 @@ public class UserOrderPaymentServiceImpl implements UserOrderPaymentService {
     @Autowired
     private UserOrderPaymentMapper userOrderPaymentMapper;
 
+    @Autowired
+    private PaymentService adapayPaymentService;
+
     @Override
     public UserOrderPayment getByTranNo(String orderNo) {
         return userOrderPaymentMapper.selectByTranNo(orderNo);
@@ -42,6 +52,48 @@ public class UserOrderPaymentServiceImpl implements UserOrderPaymentService {
     @Override
     public UserOrderPayment getByOrderNo(String orderSn, PayChannelEnum payChannel, PayStatusEnum payStatus) {
 
-        return userOrderPaymentMapper.selectByOrderNo(orderSn,payChannel.getCode(),payStatus.getCode());
+        return userOrderPaymentMapper.selectByOrderNoAndStatus(orderSn,payChannel.getCode(),payStatus.getCode());
+    }
+
+    @Override
+    public List<UserOrderPayment> getByOrderNo(String orderSn) {
+        return userOrderPaymentMapper.selectByOrderNo(orderSn);
+    }
+
+    @Override
+    public void closePayment(String orderSn, String message) {
+        UserOrderPayment orderPayment = userOrderPaymentMapper.selectByOrderNoAndStatusPaying(orderSn);
+
+        if (orderPayment != null) {
+            //更新付款单
+            orderPayment.setStatus(PayStatusEnum.failed.getCode());
+            orderPayment.setPayFailMsg(StringUtil.isEmpty(message) ? "交易取消" : message);
+            orderPayment.setUpdateTime(new Date());
+
+            //发送支付关单请求
+            if (!StringUtil.isEmpty(orderPayment.getTransNo())) {
+                OrderCloseReq orderCloseReq = new OrderCloseReq();
+                orderCloseReq.setPaymentId(orderPayment.getTransNo());
+                orderCloseReq.setReason(message);
+                OrderCloseRes closeRes = adapayPaymentService.orderClose(orderCloseReq);
+                if (!closeRes.isStatus()) {
+                    orderPayment.setCloseStatus(PayStatusEnum.failed.getCode());
+                    orderPayment.setCloseFailMsg(closeRes.getFailMsg());
+                } else {
+                    orderPayment.setCloseStatus(PayStatusEnum.pending.getCode());
+                }
+            }
+            userOrderPaymentMapper.updateByPrimaryKeySelective(orderPayment);
+        }
+    }
+
+    @Override
+    public UserOrderPayment getByOrderNoAndStatusPaying(String orderSn) {
+        return userOrderPaymentMapper.selectByOrderNoAndStatusPaying(orderSn);
+    }
+
+    @Override
+    public UserOrderPayment getByOrderNoAndStatusSucceeded(String orderSn) {
+        return userOrderPaymentMapper.selectByOrderNoAndStatusSucceeded(orderSn);
     }
 }

+ 22 - 17
cooleshow-mall/mall-portal/src/main/resources/config/mybatis/OmsOrderReturnApplyDao.xml

@@ -6,40 +6,45 @@
     </resultMap>
     <select id="getList" resultMap="com.yonge.cooleshow.mbg.mapper.OmsOrderReturnApplyMapper.BaseResultMap">
         SELECT
-        id,
-        create_time,
-        member_username,
-        product_real_price,
-        product_count,
-        return_name,
-        status,
-        handle_time
+        oora.id,
+        oora.create_time,
+        oora.member_username,
+        oora.product_real_price,
+        oora.product_count,
+        oora.return_name,
+        oora.status,
+        oora.handle_time
         FROM
-        oms_order_return_apply
+        oms_order_return_apply oora
+        left join oms_order oo on oo.id = order_id
         WHERE
         1 = 1
         <if test="queryParam.id!=null">
-            AND id = #{queryParam.id}
+            AND oora.id = #{queryParam.id}
         </if>
         <if test="queryParam.status!=null">
-            AND status = #{queryParam.status}
+            AND oora.status = #{queryParam.status}
         </if>
         <if test="queryParam.status!=null">
-            AND status = #{queryParam.status}
+            AND oora.status = #{queryParam.status}
         </if>
         <if test="queryParam.handleMan!=null and queryParam.handleMan!=''">
-            AND handle_man = #{queryParam.handleMan}
+            AND oora.handle_man = #{queryParam.handleMan}
         </if>
         <if test="queryParam.createTime!=null and queryParam.createTime!=''">
-            AND create_time LIKE CONCAT(#{queryParam.createTime}, '%')
+            AND oora.create_time LIKE CONCAT(#{queryParam.createTime}, '%')
         </if>
         <if test="queryParam.handleTime!=null and queryParam.handleTime!=''">
-            AND handle_time LIKE CONCAT(#{queryParam.handleTime}, '%')
+            AND oora.handle_time LIKE CONCAT(#{queryParam.handleTime}, '%')
         </if>
         <if test="queryParam.receiverKeyword!=null and queryParam.receiverKeyword!=''">
-            AND (return_name LIKE concat("%",#{queryParam.receiverKeyword},"%")
-            OR return_phone LIKE concat("%",#{queryParam.receiverKeyword},"%"))
+            AND (oora.return_name LIKE concat("%",#{queryParam.receiverKeyword},"%")
+            OR oora.return_phone LIKE concat("%",#{queryParam.receiverKeyword},"%"))
         </if>
+        <if test="queryParam.memberId != null">
+            and oo.member_id = #{queryParam.memberId}
+        </if>
+        order by oora.create_time desc
     </select>
     <select id="getDetail" resultMap="returnApplyDetailResultMap">
         SELECT

+ 4 - 2
cooleshow-mall/mall-portal/src/main/resources/config/mybatis/PortalOrderDao.xml

@@ -18,7 +18,8 @@
             ot.product_name ot_product_name,
             ot.product_sku_id ot_product_sku_id,
             ot.product_sku_code ot_product_sku_code,
-            ot.product_quantity ot_product_quantity
+            ot.product_quantity ot_product_quantity,
+        o.status
         FROM
             oms_order o
             LEFT JOIN oms_order_item ot ON o.id = ot.order_id
@@ -38,7 +39,8 @@
             ot.product_name     ot_product_name,
             ot.product_sku_id   ot_product_sku_id,
             ot.product_sku_code ot_product_sku_code,
-            ot.product_quantity ot_product_quantity
+            ot.product_quantity ot_product_quantity,
+            o.status
         FROM
             oms_order o
             LEFT JOIN oms_order_item ot ON o.id = ot.order_id

+ 1 - 1
cooleshow-mall/mall-portal/src/main/resources/config/mybatis/SmsCouponHistoryDao.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.yonbootstrap-dev.propertiesge.cooleshow.portal.dao.SmsCouponHistoryDao">
+<mapper namespace="com.yonge.cooleshow.portal.dao.SmsCouponHistoryDao">
     <resultMap id="couponHistoryDetailMap" type="com.yonge.cooleshow.portal.domain.SmsCouponHistoryDetail"
                extends="com.yonge.cooleshow.mbg.mapper.SmsCouponHistoryMapper.BaseResultMap">
         <association property="coupon" resultMap="com.yonge.cooleshow.mbg.mapper.SmsCouponMapper.BaseResultMap" columnPrefix="c_">

+ 22 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/CourseStatusTask.java

@@ -0,0 +1,22 @@
+package com.yonge.cooleshow.task.jobs;
+
+import com.yonge.cooleshow.api.feign.TeacherFeignService;
+import com.yonge.cooleshow.task.core.BaseTask;
+import com.yonge.cooleshow.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/4/25 10:30
+ */
+@Service
+public class CourseStatusTask extends BaseTask {
+    @Autowired
+    private TeacherFeignService teacherFeignService;
+
+    @Override
+    public void execute() throws TaskException {
+        teacherFeignService.courseStatus();
+    }
+}

+ 24 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherEarningTask.java

@@ -0,0 +1,24 @@
+package com.yonge.cooleshow.task.jobs;
+
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.task.core.BaseTask;
+import com.yonge.cooleshow.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-17
+ */
+public class TeacherEarningTask extends BaseTask {
+
+
+    @Autowired
+    private AdminFeignService adminFeignService;
+
+    @Override
+    public void execute() throws TaskException {
+        adminFeignService.sendTeacherEarning();
+    }
+}

+ 22 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherSalaryTask.java

@@ -0,0 +1,22 @@
+package com.yonge.cooleshow.task.jobs;
+
+import com.yonge.cooleshow.api.feign.TeacherFeignService;
+import com.yonge.cooleshow.task.core.BaseTask;
+import com.yonge.cooleshow.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: cy
+ * @Date: 2022/5/24
+ */
+@Service
+public class TeacherSalaryTask extends BaseTask {
+    @Autowired
+    private TeacherFeignService teacherFeignService;
+
+    @Override
+    public void execute() throws TaskException {
+        teacherFeignService.teacherSalary();
+    }
+}

+ 0 - 1
cooleshow-user/pom.xml

@@ -15,7 +15,6 @@
 	<packaging>pom</packaging>
 
 	<name>cooleshow-user</name>
-	<url>http://maven.apache.org</url>
 
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

+ 11 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/client/AdminFeignClient.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.admin.client;
 
 import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
+import com.yonge.cooleshow.biz.dal.service.UserAccountRecordService;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -22,10 +23,20 @@ public class AdminFeignClient {
     @Autowired
     private CourseScheduleService courseScheduleService;
 
+    @Autowired
+    private UserAccountRecordService userAccountRecordService;
 
+    // 老师作业布置
     @PostMapping(value = "/teacherSend")
     public HttpResponseResult<Object> sendTodayNotRepliedAndNotDecorateHomework() {
         courseScheduleService.sendTodayNotRepliedAndNotDecorateHomework();
         return HttpResponseResult.succeed();
     }
+
+    //老师课酬
+    @PostMapping(value = "/teacherEarning")
+    public HttpResponseResult<Object> sendTeacherEarning() {
+        userAccountRecordService.sendTeacherEarning();
+        return HttpResponseResult.succeed();
+    }
 }

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

@@ -1,18 +1,16 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.biz.dal.enums.ContractTypeEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 
+import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
@@ -53,13 +51,8 @@ public class ContractTemplateController extends BaseController {
 	@ApiOperation("查询最新启用的协议模板")
 	@GetMapping(value = "/queryLatestContractTemplate")
 	@PreAuthorize("@pcs.hasPermissions('contractTemplate/queryLatestContractTemplate')")
-	public HttpResponseResult<ContractTemplate> queryLatestContractTemplate() {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-
-		if (sysUser == null || sysUser.getId() == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		return succeed(contractTemplateService.queryLatestContractTemplate(null, null));
+	public HttpResponseResult<ContractTemplate> queryLatestContractTemplate(@ApiParam(value = "业务类型 REGISTER 注册 COURSES 课程购买 PRODUCT 产品 WITHDRAW 提现", required = true) @RequestParam("contractType") ContractTypeEnum contractType) {
+		return succeed(contractTemplateService.queryLatestContractTemplate(contractType));
 	}
 
 	@ApiOperation("新增")

+ 124 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseGroupController.java

@@ -0,0 +1,124 @@
+package com.yonge.cooleshow.admin.controller;
+
+import com.yonge.cooleshow.biz.dal.dto.search.CourseGroupDetailSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.CourseGroupSearch;
+import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
+import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
+import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Author: cy
+ * @Date: 2022/5/19
+ */
+@RestController
+@RequestMapping("/courseGroup")
+@Api(tags = "课程组")
+@Validated
+public class CourseGroupController extends BaseController {
+    @Autowired
+    private CourseGroupService courseGroupService;
+
+    @ApiOperation(value = "课程组管理-陪练课",notes = "{\n" +
+            "    \"subjectId\":20,\n" +
+            "    \"search\":\"师\",\n" +
+            "    \"status\":\"ING\"\n" +
+            "}")
+    @PostMapping(value = "/practice")
+    public HttpResponseResult<PageInfo<CourseGroupPracticeVo>> selectPracticeGroup(@RequestBody CourseGroupSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectPracticeGroup(PageUtil.getPage(search), search)));
+    }
+
+    @ApiOperation(value = "课程组管理-陪练课-详情",notes = "{\n" +
+            "    \"courseGroupId\": 140,\n" +
+            "    \"teacherSign\": 0,\n" +
+            "    \"studentSign\": 0,\n" +
+            "    \"search\": \"游\",\n" +
+            "    \"status\": \"COMPLETE\",\n" +
+            "    \"salaryStatus\": \"NOT_START\",\n" +
+            "    \"startTime\": \"2022-05-21 08:00:00\",\n" +
+            "    \"endTime\": \"\"\n" +
+            "}")
+    @PostMapping(value = "/practice/detail")
+    public HttpResponseResult<PageInfo<CourseGroupPracticeDetailVo>> selectPracticeGroupDetail(@Validated @RequestBody CourseGroupDetailSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectPracticeGroupDetail(PageUtil.getPage(search), search)));
+    }
+
+    @ApiOperation(value = "课程组管理-直播课",notes = "{\n" +
+            "    \"subjectId\":73,\n" +
+            "    \"search\":\"夏\",\n" +
+            "    \"status\":\"ING\"\n" +
+            "}")
+    @PostMapping(value = "/live")
+    public HttpResponseResult<PageInfo<CourseGroupLiveVo>> selectLiveGroup(@RequestBody CourseGroupSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectLiveGroup(PageUtil.getPage(search), search)));
+    }
+
+    @ApiOperation(value = "课程组管理-直播课-购买学员",notes = "{\n" +
+            "    \"groupId\":140,\n" +
+            "    \"search\":\"游\",\n" +
+            "    \"orderNo\":\"22051615250800001\"\n" +
+            "}")
+    @PostMapping(value = "/live/studentPayment")
+    public HttpResponseResult<PageInfo<CourseSchedulePaymentVo>> selectLiveGroupStudent(@RequestBody CourseGroupSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectLiveGroupStudent(PageUtil.getPage(search), search)));
+    }
+
+    @ApiOperation(value = "课程组管理-直播课-教学计划",notes = "{\n" +
+            "    \"groupId\":140,\n" +
+            "    \"courseId\":\"391\",\n" +
+            "    \"salaryStatus\":\"NOT_START\",\n" +
+            "    \"startTime\":\"2022-05-20 08:00:00\",\n" +
+            "    \"endTime\":null\n" +
+            "}")
+    @PostMapping(value = "/live/plan")
+    public HttpResponseResult<PageInfo<CourseSchedulePlanVo>> selectLiveGroupPlan(@RequestBody CourseGroupSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectLiveGroupPlan(PageUtil.getPage(search), search)));
+    }
+
+    @ApiOperation(value = "课程组管理-视频课",notes = "{\n" +
+            "    \"subjectId\":21,\n" +
+            "    \"search\":\"老\"\n" +
+            "}")
+    @PostMapping(value = "/video")
+    public HttpResponseResult<PageInfo<CourseGroupVideoVo>> selectVideoGroup(@RequestBody CourseGroupSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectVideoGroup(PageUtil.getPage(search), search)));
+    }
+
+    @ApiOperation(value = "课程组管理-视频课-购买学员",notes = "{\n" +
+            "    \"groupId\":51,\n" +
+            "    \"orderNo\":\"22050720002900001\",\n" +
+            "    \"search\":\"1\",\n" +
+            "    \"startTime\":\"2022-05-07 20:00:29\",\n" +
+            "    \"endTime\":null\n" +
+            "}")
+    @PostMapping(value = "/video/studentPayment")
+    public HttpResponseResult<PageInfo<CourseGroupStudentVo>> selectVideoGroupStudent(@RequestBody CourseGroupSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectVideoGroupStudent(PageUtil.getPage(search), search)));
+    }
+
+    @ApiOperation(value = "课程组管理-视频课-教学计划",notes = "{\n" +
+            "    \"groupId\":18\n" +
+            "}")
+    @PostMapping(value = "/video/plan")
+    public HttpResponseResult<PageInfo<VideoLessonGroupDetail>> selectVideoGroupPlan(@RequestBody CourseGroupSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectVideoGroupPlan(PageUtil.getPage(search), search)));
+    }
+
+    @ApiOperation(value = "课程组管理-直播课-课程信息")
+    @GetMapping(value = "/live/info")
+    public HttpResponseResult<CourseGroupInfoVo> selectLiveGroupInfo(@NotNull Long groupId) {
+        return succeed(courseGroupService.selectLiveGroupInfo(groupId));
+    }
+}

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

@@ -5,6 +5,8 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.enums.SysUserType;
 import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
+import com.yonge.cooleshow.biz.dal.dto.MusicSheetExport;
+import com.yonge.cooleshow.biz.dal.dto.excel.UserWithdrawalExport;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherMusicSheetAuditReq;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetOrderSearch;
@@ -19,13 +21,19 @@ import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.utils.easyexcel.ErrMsg;
+import com.yonge.toolset.utils.easyexcel.ExcelDataReader;
+import com.yonge.toolset.utils.easyexcel.ExcelException;
+import com.yonge.toolset.utils.easyexcel.ExcelUtils;
 import com.yonge.toolset.utils.string.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
 import java.util.Date;
@@ -228,4 +236,26 @@ public class MusicSheetController extends BaseController {
         }
         return status(musicSheetService.sendBuyMessage(param.getTeacherId(),param.getStudentId(),param.getMusicSheetId()));
     }
+    /**
+     * 导入
+     */
+    @PostMapping("/importExcel")
+    @ApiOperation(value = "导入", notes = "传入file")
+    public HttpResponseResult<List<ErrMsg>> importExcel(@RequestParam("file") MultipartFile file) {
+        if (null == file) {
+            return HttpResponseResult.failed("请上传文件");
+        }
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        try {
+            ExcelDataReader<MusicSheetExport> reader = ExcelUtils.getReader(MusicSheetExport.class, file);
+            musicSheetService.importExcel(reader.getDataList(), user.getId());
+            return HttpResponseResult.succeed();
+        } catch (ExcelException e) {
+            return HttpResponseResult.failed(BizHttpStatus.IMPORT.getCode(), e.getErrMsgList(), BizHttpStatus.IMPORT.getMsg());
+        }
+    }
+
 }

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -36,10 +37,11 @@ public class SmsCodeController extends BaseController {
     private RedisTemplate<String,String> redisTemplate;
 
     @ApiOperation(value = "发送登录短信验证码")
-    @ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String")
+    @ApiImplicitParams({  @ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String"),
+                          @ApiImplicitParam(name = "type", value = "类型(PASSWD:修改密码,LOGIN:登录,REGISTER:注册,BANK:绑定银行卡)", required = true, dataType = "String") })
     @PostMapping(value = "/sendSmsCode")
-    public Object sendLoginVerifyCode(String mobile) throws Exception {
-        smsCodeService.sendValidCode(mobile);
+    public Object sendLoginVerifyCode(String mobile,String type) throws Exception {
+        smsCodeService.sendValidCode(mobile, type, ClientEnum.SYSTEM);
         return succeed();
     }
 

+ 60 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherStyleVideoController.java

@@ -0,0 +1,60 @@
+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.dto.req.AuthOperaReq;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
+
+import com.yonge.toolset.base.page.PageInfo;
+import io.swagger.annotations.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+
+import com.yonge.cooleshow.biz.dal.vo.TeacherStyleVideoVo;
+import com.yonge.cooleshow.biz.dal.dto.search.TeacherStyleVideoSearch;
+import com.yonge.cooleshow.biz.dal.service.TeacherStyleVideoService;
+
+import javax.validation.Valid;
+
+@RestController
+@RequestMapping("/teacherStyleVideo")
+@Api(value = "教师风采视频表", tags = "教师风采视频表")
+public class TeacherStyleVideoController extends BaseController {
+    @Autowired
+    private TeacherStyleVideoService teacherStyleVideoService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    /**
+     * 查询单条
+     */
+    @GetMapping("/detail/{id}")
+    @ApiOperation(value = "详情", notes = "传入id")
+    public HttpResponseResult<TeacherStyleVideoVo> detail(@PathVariable("id") Long id) {
+        return succeed(teacherStyleVideoService.detail(id));
+    }
+
+    /**
+     * 查询分页
+     */
+    @PostMapping("/page")
+    @ApiOperation(value = "查询分页", notes = "传入teacherStyleVideoSearch")
+    public HttpResponseResult<PageInfo<TeacherStyleVideoVo>> page(@RequestBody TeacherStyleVideoSearch query) {
+        IPage<TeacherStyleVideoVo> pages = teacherStyleVideoService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
+    }
+
+
+    @PostMapping("/doAuth")
+    @ApiOperation(value = "审核", notes = "传入authOperaDto")
+    @PreAuthorize("@pcs.hasPermissions('teacherAuthMusicianRecord/doAuth')")
+    public HttpResponseResult<Boolean> doAuth(@Valid @RequestBody AuthOperaReq authOperaReq) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        return teacherStyleVideoService.doAuth(authOperaReq, sysUser);
+    }
+}

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

@@ -66,9 +66,8 @@ public class UserWithdrawalController extends BaseController {
     @ApiOperation(value = "查询导出", notes = "传入TeacherWithdrawalSearch")
     @PreAuthorize("@pcs.hasPermissions('userWithdrawal/exportExcel')")
     public void exportExcel(@RequestBody TeacherWithdrawalSearch query) {
-        query.setStatus(AuthStatusEnum.DOING);
         List<UserWithdrawalVo> withdrawalVoList = userWithdrawalService.selectList(query);
-        List<UserWithdrawalExport> list = new ArrayList<>();
+        /*List<UserWithdrawalExport> list = new ArrayList<>();
         withdrawalVoList.forEach(o -> {
             UserWithdrawalExport export = new UserWithdrawalExport();
             try {
@@ -86,15 +85,15 @@ public class UserWithdrawalController extends BaseController {
             } catch (InvocationTargetException e) {
                 e.printStackTrace();
             }
-        });
-        ExcelUtils.exportExcel(list, "提现列表数据" + System.currentTimeMillis(),
+        });*/
+        ExcelUtils.exportExcel(withdrawalVoList, "提现列表数据" + System.currentTimeMillis(),
                 "列表数据");
     }
 
     /**
      * 导入
      */
-    @PostMapping("/importExcel")
+    /*@PostMapping("/importExcel")
     @ApiOperation(value = "导入", notes = "传入file")
     @PreAuthorize("@pcs.hasPermissions('userWithdrawal/importExcel')")
     public HttpResponseResult<List<ErrMsg>> importExcel(@RequestParam("file") MultipartFile file) {
@@ -112,5 +111,5 @@ public class UserWithdrawalController extends BaseController {
         } catch (ExcelException e) {
             return HttpResponseResult.failed(BizHttpStatus.IMPORT.getCode(), e.getErrMsgList(), BizHttpStatus.IMPORT.getMsg());
         }
-    }
+    }*/
 }

+ 21 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/constant/WithdrawalConstant.java

@@ -0,0 +1,21 @@
+package com.yonge.cooleshow.biz.dal.constant;
+
+public interface WithdrawalConstant {
+    /**
+     * 提现三方类型:lingxinpay 灵薪付
+     */
+    String openType = "lingxinpay";
+    //第三方url
+    String apiUrl = "http://39.107.15.64:8090";
+    //商户号
+    String memberNo = "1491663782974988288";
+    //第三方公钥
+    String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYT5eCY6r8sGWgbiId/VqSZmS6XkBNGMkzUqTIkpkecOzsFBxFXTQmgDeR991YfgqmyOaHsJ/ons/H+e8l+RmHsOm4eErFU+9qXFq+k195YFV1vAR9O7MIG+FR5vmLDuhgimPsgqscWhUrGinc8RUpi5KwClgx7d+d8ZJ4GmkR0QIDAQAB";
+    //第三方私钥
+    String privateKey = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANf/X1s2raYQAmY5VY929XqOIRESFlpLzWbltA08EI2i0jnJY3/kcCpo1sCHqkyWpDFGRgM1WYE90ayzEpS6EdZpyJ2/N5JFJzx4wMil5KHLdtQUmVv9si+xuYNOKfJW6Xn6zI/Wh81J1+hMlUY4WigU5Qci7DjdOjg5OD6e5DO3AgMBAAECgYEAor9ENhII3SsK48MneKWFaQZWW+po9ThQV8uT0rUDM/UOuYPIeMDC0vGTfhW6d2K57Haqohg8jGjr51g2E+HvNV+fARaBfCwy00DGcxjI6N8gEInj2AppsGV6a0ZtzGBh3BxGhEFV7x3NmTylDk3WkGnkGDqDNyrBUgK0BzCJEmECQQD+gYckYRevVfrZEHDQHRNzzMUlV9/ljA9x8dt0LoCNbd/wFvs0Ekjhas/2lUBkewEd4Kr0jaFcYzlUO/qihcpNAkEA2UP5W44yLuIo8ttPpdsfkH/8Ax64IywQHrXWq+thH7I91VwY2vomTduw8x0PafZtp8xryF3LixTZwQ7gsYbwEwJAQbb8SB5x2SogPVALcREw5qOm+/92pnTFwCws+BDRzLLkMcAdWNKn0tybmhXrrIY+QZKzUbYIRiywrtlV3AUjuQJBAJbnFnfX4NUdchGT79Mjyd2kdxZ3rK+JOD0MUWkhWFkahMX/bKgTXK1xLIr/ISiY53rHigkl1Gzqc4Aa5EeJkI8CQFlzlBOfoVnq3fPMZCCZcZSm97L12MgHho0AzoNj9sw9YYn9WPM7bw2HT8GUheiU3aiZGCyGGpYuVHMiBGa7l9U=";
+    //MD5加密的key
+    String md5Key = "0fd42370bad6485e46718b97f3dd1536";
+    //回调地址
+    String notifyUrl = "http://47.114.1.200:8000/teacher-server/withdraw/callback";
+
+}

+ 54 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/AudioTypeConverter.java

@@ -0,0 +1,54 @@
+package com.yonge.cooleshow.biz.dal.convert;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.yonge.cooleshow.biz.dal.enums.AudioTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-20
+ */
+public class AudioTypeConverter implements Converter<AudioTypeEnum> {
+    @Override
+    public Class supportJavaTypeKey() {
+        return AudioTypeEnum.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public AudioTypeEnum convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        try {
+            if ("MAP".equals(cellData.getStringValue())) {
+                return AudioTypeEnum.MP3;
+            } else if ("MIDI".equals(cellData.getStringValue())){
+                return AudioTypeEnum.MIDI;
+            } else if ("是".equals(cellData.getStringValue())) {
+                return AudioTypeEnum.MP3_METRONOME;
+            } else if ("否".equals(cellData.getStringValue())) {
+                return AudioTypeEnum.MP3;
+            } else {
+                return null;
+            }
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    @Override
+    public CellData convertToExcelData(AudioTypeEnum audioTypeEnum, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        if (null != audioTypeEnum) {
+            return new CellData(audioTypeEnum.getCode());
+        }
+        return new CellData("异常数据");
+    }
+}

+ 45 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/ChargeTypeConverter.java

@@ -0,0 +1,45 @@
+package com.yonge.cooleshow.biz.dal.convert;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.yonge.cooleshow.biz.dal.enums.AudioTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-20
+ */
+public class ChargeTypeConverter implements Converter<ChargeTypeEnum> {
+    @Override
+    public Class supportJavaTypeKey() {
+        return AudioTypeEnum.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public ChargeTypeEnum convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
+        try {
+            return ChargeTypeEnum.valueOf(cellData.getStringValue().trim());
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    @Override
+    public CellData convertToExcelData(ChargeTypeEnum yesOrNoEnum, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        if (null != yesOrNoEnum) {
+            return new CellData(yesOrNoEnum.getCode());
+        }
+        return new CellData("异常数据");
+    }
+}

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/WithdrawalStatusConvert.java

@@ -26,7 +26,7 @@ public class WithdrawalStatusConvert implements Converter<AuthStatusEnum> {
     @Override
     public AuthStatusEnum convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
         try {
-            return AuthStatusEnum.getByName(cellData.getStringValue().trim());
+            return AuthStatusEnum.valueOf(cellData.getStringValue().trim());
         } catch (Exception e) {
             return null;
         }

+ 48 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/YesOrNoConverter.java

@@ -0,0 +1,48 @@
+package com.yonge.cooleshow.biz.dal.convert;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.yonge.cooleshow.biz.dal.enums.AudioTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-20
+ */
+public class YesOrNoConverter implements Converter<YesOrNoEnum> {
+    @Override
+    public Class supportJavaTypeKey() {
+        return AudioTypeEnum.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public YesOrNoEnum convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
+        try {
+            if ("是".equals(cellData.getStringValue())) {
+                return YesOrNoEnum.YES;
+            } else {
+                return YesOrNoEnum.NO;
+            }
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    @Override
+    public CellData convertToExcelData(YesOrNoEnum yesOrNoEnum, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
+        if (null != yesOrNoEnum) {
+            return new CellData(yesOrNoEnum.getCode());
+        }
+        return new CellData("异常数据");
+    }
+}

+ 1 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ContractTemplateDao.java

@@ -13,13 +13,7 @@ public interface ContractTemplateDao extends BaseDAO<Integer, ContractTemplate>
 
 	List<ContractTemplateDto> queryPageList(Map<String, Object> params);
 	
-	/**
-	 * 获取最新协议模板
-	 * @param owner
-	 * @param type
-	 * @return
-	 */
-	ContractTemplate queryLatestContractTemplate(@Param("owner") String owner, @Param("type") String type);
+	ContractTemplate queryLatestContractTemplate( @Param("type") String type);
 	
 	int disableContract(@Param("owner") String owner, @Param("type") String type);
 	

+ 91 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseGroupDao.java

@@ -3,10 +3,9 @@ package com.yonge.cooleshow.biz.dal.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupStudentCourseSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupStudentSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.*;
 import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import org.apache.ibatis.annotations.Param;
 
@@ -73,7 +72,7 @@ public interface CourseGroupDao extends BaseMapper<CourseGroup> {
      *
      * @param id 课程组id
      */
-    int opsPreStudentNum(@Param("id") Long id,@Param("num") Integer num);
+    int opsPreStudentNum(@Param("id") Long id, @Param("num") Integer num);
 
     /**
      * 查询课程组详情
@@ -92,5 +91,93 @@ public interface CourseGroupDao extends BaseMapper<CourseGroup> {
      */
     IPage<LiveCourseGroupStudentCourseVo> selectAdminLiveStudentCoursePage(@Param("page") IPage<LiveCourseGroupStudentCourseVo> page,
                                                                            @Param("param") LiveCourseGroupStudentCourseSearch query);
+
+    /**
+     * 查询陪练课
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPracticeVo> selectPracticeGroup(@Param("page") IPage<CourseGroupPracticeVo> page,
+                                                     @Param("param") CourseGroupSearch search);
+
+    /**
+     * 查询陪练课-详情
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPracticeDetailVo> selectPracticeGroupDetail(@Param("page") IPage<CourseGroupPracticeDetailVo> page,
+                                                                 @Param("param") CourseGroupDetailSearch search);
+
+    /**
+     * 查询直播课
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupLiveVo> selectLiveGroup(@Param("page") IPage<CourseGroupLiveVo> page,
+                                             @Param("param") CourseGroupSearch search);
+
+    /**
+     * 查询直播课购买学员
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseSchedulePaymentVo> selectLiveGroupStudent(@Param("page") IPage<CourseSchedulePaymentVo> page,
+                                                          @Param("param") CourseGroupSearch search);
+
+    /**
+     * 查询直播课教学计划
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseSchedulePlanVo> selectLiveGroupPlan(@Param("page") IPage<CourseSchedulePlanVo> page,
+                                                    @Param("param") CourseGroupSearch search);
+
+    /**
+     * 查询视频课
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupVideoVo> selectVideoGroup(@Param("page") IPage<CourseGroupVideoVo> page,
+                                               @Param("param") CourseGroupSearch search);
+
+    /**
+     * 查询视频课购课学员
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupStudentVo> selectVideoGroupStudent(@Param("page") IPage<CourseGroupStudentVo> page,
+                                                        @Param("param") CourseGroupSearch search);
+
+    /**
+     * 查询视频课教学计划
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<VideoLessonGroupDetail> selectVideoGroupPlan(@Param("page") IPage<VideoLessonGroupDetail> page,
+                                                       @Param("param") CourseGroupSearch search);
+
+    /**
+     * 根据组id查详情
+     *
+     * @param groupId
+     * @return
+     */
+    CourseGroupInfoVo selectGroupInfoVo(Long groupId);
 }
 

+ 23 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java

@@ -31,18 +31,20 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
     /***
      * 查询所有老师课时统计
      * @author liweifan
-     * @updateTime 2022/3/28 10:53
-     * @return: com.yonge.cooleshow.biz.dal.vo.TeacherTotalVo
+     * @param: userId
+     * @updateTime 2022/5/13 17:51
+     * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.TeacherTotalVo>
      */
-    List<TeacherTotalVo> queryTeacherTotal();
+    List<TeacherTotalVo> queryTeacherTotal(@Param("userId") Long userId);
 
     /***
      * 查询所有学生课时统计
      * @author liweifan
-     * @updateTime 2022/3/28 10:53
-     * @return: com.yonge.cooleshow.biz.dal.vo.TeacherTotalVo
+     * @param: userId
+     * @updateTime 2022/5/13 17:51
+     * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.StudentTotalVo>
      */
-    List<StudentTotalVo> queryStudentTotal();
+    List<StudentTotalVo> queryStudentTotal(@Param("userId") Long userId);
 
     /**
      * 根据学生id查询课程
@@ -100,6 +102,8 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
     //学生端-首页-陪练课老师列表
     List<PracticeTeacherVo> teacherList(IPage<PracticeTeacherVo> page, @Param("param") PracticeTeacherSearch search);
 
+    List<Long> teacherIdList();
+
     //学生端-课表-日历-用户
     List<CourseStudent> queryCourseTeacher(@Param("param") MyCourseSearch search);
 
@@ -134,8 +138,11 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
     //学生端-首页-最近一堂课
     StudentHomePage.RecentCourses selectRecentCourses(Long studentId);
 
-    //老师端-首页-最近一堂课
-    StudentHomePage.RecentCourses selectRecentCoursesTeacher(Long teacherId);
+    //老师端-首页-最近一堂课(陪练课)
+    StudentHomePage.RecentCourses selectRecentCoursesPractice(Long teacherId);
+
+    //老师端-首页-最近一堂课(直播课)
+    StudentHomePage.RecentCourses selectRecentCoursesLive(Long teacherId);
 
     /**
      * 本周剩余的课时
@@ -205,4 +212,12 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
     BigDecimal selectPrice(@Param("teacherId") Long teacherId, @Param("subjectId") Long subjectId);
 
     List<CourseSchedule> selectSchedule(Integer courseId);
+
+    void updateStartTime();
+
+    void updateEndTime();
+
+    List<Long> selectIdList(String day);
+
+    void updateTeacherSalary(List<Long> list);
 }

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

@@ -47,6 +47,14 @@ public interface CourseScheduleStudentPaymentDao extends BaseMapper<CourseSchedu
     //根据查询锁定中的课程
     List<CourseScheduleStudentPaymentVo> selectPaymentList(String orderNo);
 
+    /**
+     * 查询购买直播课的订单
+     *
+     * @param courseGroupId 课程组id
+     * @return
+     */
+    List<String> selectOrderNoByGroupId(Long courseGroupId);
+
     //重置节拍器设置
     void cleanPlayMidi(@Param("courseScheduleId") Long courseScheduleId);
 

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupMemberAuditDao.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMemberAudit;
 import com.yonge.cooleshow.biz.dal.queryInfo.ImGroupMemberAuditQueryInfo;
+import com.yonge.cooleshow.biz.dal.vo.AuditUserInfo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -29,5 +30,7 @@ public interface ImGroupMemberAuditDao extends BaseMapper<ImGroupMemberAudit> {
     List<ImGroupMemberAudit> findByIds(@Param("auditIds") String auditIds);
 
     void delByGroupId(@Param("groupId") String groupId);
+
+    List<AuditUserInfo> selectAuditUserInfo(@Param("auditIds") String auditIds);
 }
 

+ 0 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/StudentDao.java

@@ -55,10 +55,4 @@ public interface StudentDao extends BaseMapper<Student> {
      */
     List<MyFollow> queryMyFollow(@Param("page") IPage<MyFollow> page, @Param("studentId") Long studentId);
 
-    /**
-     * 取消关注
-     *
-     * @param map
-     */
-    void unfollow(@Param("param") Map<String, Long> map);
 }

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

@@ -2,9 +2,11 @@ package com.yonge.cooleshow.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.yonge.cooleshow.biz.dal.entity.SysUserContractRecord;
+import com.yonge.cooleshow.biz.dal.enums.ContractTypeEnum;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 用户协议记录表-一个用户一种协议一个版本一条记录(SysUserContractRecord)表数据库访问层
@@ -16,5 +18,11 @@ public interface SysUserContractRecordDao extends BaseMapper<SysUserContractReco
 
     int insertBatch(@Param("entities") List<SysUserContractRecord> entities);
 
+    Boolean checkContractSign(@Param("userId") Long userId, @Param("contractType") String contractType);
+
+    void contractCallbackUpdate(@Param("status") String status,
+                                @Param("serialNo") String serialNo,
+                                @Param("url") String url,
+                                @Param("errMsg") String errMsg);
 }
 

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherFreeTimeDao.java

@@ -58,5 +58,8 @@ public interface TeacherFreeTimeDao extends BaseMapper<TeacherFreeTime> {
 
     //查询老师所有声部配置
     List<TeacherSubjectPrice> selectPriceByTeacherId(Long teacherId);
+
+    //查询过审老师配置默认
+    List<TeacherFreeTime> getTeacherFreeTime();
 }
 

+ 18 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherStyleVideoDao.java

@@ -6,12 +6,30 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherStyleSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.TeacherStyleVideoSearch;
 import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherStyleVideoVo;
 import org.apache.ibatis.annotations.Param;
 
 public interface TeacherStyleVideoDao extends BaseMapper<TeacherStyleVideo> {
+
+    /**
+     * 查询详情
+     * @author liweifan
+     * @date 2022-05-17 11:40:18
+     * @return: com.yonge.cooleshow.biz.dal.vo.TeacherStyleVideoVo
+     */
+    TeacherStyleVideoVo detail(@Param("id") Long id);
+
+    /**
+     * 分页查询
+     * @author liweifan
+     * @date 2022-05-17 11:40:18
+     * @return: com.yonge.cooleshow.biz.dal.vo.TeacherStyleVideoVo
+     */
+    List<TeacherStyleVideoVo> selectPage(@Param("page") IPage page, @Param("param") TeacherStyleVideoSearch teacherStyleVideo);
+
     /***
      * 查询老师风采视频
      * @author liweifan

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

@@ -5,6 +5,7 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.vo.TeacherEarningVo;
 import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.biz.dal.entity.UserAccountRecord;
 import com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo;
@@ -37,4 +38,11 @@ public interface UserAccountRecordDao extends BaseMapper<UserAccountRecord> {
 	 * @return
 	 */
     BigDecimal selectMonthDecimal(@Param("userId") Long userId);
+
+	/**
+	 * 老师当天收入
+	 *
+	 * @return
+	 */
+    List<TeacherEarningVo> selectTodayTeacherEarning();
 }

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderDao.java

@@ -80,4 +80,13 @@ public interface UserOrderDao extends BaseMapper<UserOrder>{
 	 * @return: java.util.List<com.yonge.cooleshow.biz.dal.entity.UserOrder>
 	 */
     List<UserOrder> selectUnRecordTimeOrder(@Param("param") OrderSearch param);
+
+	/**
+	 * 通过付款单号或三方交易号查询对应订单
+	 * @param paymentNo
+	 * @param transNo
+	 * @return
+	 */
+    UserOrderVo getUserOrderByPaymentNoOrTransNo(@Param("paymentNo") String paymentNo,
+												 @Param("transNo") String transNo);
 }

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserOrderDetailDao.java

@@ -32,6 +32,8 @@ public interface UserOrderDetailDao extends BaseMapper<UserOrderDetail>{
      * @return: com.yonge.cooleshow.biz.dal.vo.OrderDetailVo
 	 */
 	List<UserOrderDetailVo> selectPage(@Param("page") IPage page, @Param("param") OrderDetailSearch orderDetail);
+
+	List<UserOrderDetailVo> selectList(@Param("param") OrderDetailSearch orderDetail);
 	/***
 	 * 通过订单号查询订单详情
 	 * @author liweifan

+ 0 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserWithdrawalDao.java

@@ -36,10 +36,4 @@ public interface UserWithdrawalDao extends BaseMapper<UserWithdrawal>{
 	 */
 	List<UserWithdrawalVo> selectList(@Param("param") TeacherWithdrawalSearch teacherWithdrawal);
 
-	/**
-	 * @Description: 提现成功回调
-	 * @Author: cy
-	 * @Date: 2022/5/9
-	 */
-    void withdrawSuccess(Map<String, Object> withdrawRecord);
 }

+ 162 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/MusicSheetExport.java

@@ -0,0 +1,162 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.yonge.cooleshow.biz.dal.convert.AudioTypeConverter;
+import com.yonge.cooleshow.biz.dal.convert.ChargeTypeConverter;
+import com.yonge.cooleshow.biz.dal.convert.YesOrNoConverter;
+import com.yonge.cooleshow.biz.dal.enums.AudioTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-20
+ */
+@ApiModel("曲目导入格式")
+public class MusicSheetExport {
+
+    @ExcelProperty(value = "曲目名称", index = 1)
+    private String musicSheetName;  //曲谱名称
+
+    @ApiModelProperty(value = "曲目音频类型 MP3:mp3, MIDI:midi,")
+    @ExcelProperty(value = "播放类型",converter = AudioTypeConverter.class)
+    private AudioTypeEnum audioType;
+
+    @ApiModelProperty(value = "mp3类型 MP3:mp3, MP3_METRONOME:MP3_METRONOME,")
+    @ExcelProperty(value = "是否含节拍器", index = 0)
+    private AudioTypeEnum mp3Type;
+
+    @ApiModelProperty(value = "XML文件存储路径")
+    @ExcelProperty(value = "XML文件地址", index = 0)
+    private String xmlFileUrl;  //XML文件存储路径
+
+    @ApiModelProperty(value = "midi路径")
+    @ExcelProperty(value = "伴奏文件地址", index = 0)
+    private String midiUrl;  //XML文件存储路径
+
+    @ApiModelProperty(value = "曲谱标签(多个标签用逗号分隔)")
+    @ExcelProperty(value = "曲目标签", index = 0)
+    private String musicTags;  //曲谱标签(多个标签用逗号分隔)
+
+    @ExcelProperty(value = "可用声部", index = 0)
+    private String musicSubjects;  //曲谱声部(适用的乐器,可能是多个,用逗号分隔)
+
+    @ExcelProperty(value = "音乐人", index = 0)
+    private String composer;  //作曲人
+
+    @ExcelProperty(value = "指法是否展示",converter = YesOrNoConverter.class)
+    @ApiModelProperty(value = "是否展示指法(0:否;1:是)")
+    private YesOrNoEnum showFingering;  //是否展示指法(0:否;1:是)
+
+    @ExcelProperty(value = "是否评测",converter = YesOrNoConverter.class)
+    @ApiModelProperty(value = "是否可以评测(0:否;1:是)")
+    private YesOrNoEnum canEvaluate;  //是否可以评测(0:否;1:是)
+
+    @ExcelProperty(value = "收费方式",converter = ChargeTypeConverter.class)
+    @ApiModelProperty(value = "收费类型(FREE:免费;VIP:会员;CHARGE:单曲收费)")
+    private ChargeTypeEnum chargeType;  //收费类型(0:免费;1:会员;2:单曲收费)
+
+    @ExcelProperty(value = "MP3原音", index = 0)
+    @ApiModelProperty(value = "MP3原声音频文件URL")
+    private String audioFileUrls;  //MP3原声音频文件URL
+
+    public String getMusicSheetName() {
+        return musicSheetName;
+    }
+
+    public void setMusicSheetName(String musicSheetName) {
+        this.musicSheetName = musicSheetName;
+    }
+
+    public AudioTypeEnum getAudioType() {
+        return audioType;
+    }
+
+    public void setAudioType(AudioTypeEnum audioType) {
+        this.audioType = audioType;
+    }
+
+    public AudioTypeEnum getMp3Type() {
+        return mp3Type;
+    }
+
+    public void setMp3Type(AudioTypeEnum mp3Type) {
+        this.mp3Type = mp3Type;
+    }
+
+    public String getXmlFileUrl() {
+        return xmlFileUrl;
+    }
+
+    public void setXmlFileUrl(String xmlFileUrl) {
+        this.xmlFileUrl = xmlFileUrl;
+    }
+
+    public String getMidiUrl() {
+        return midiUrl;
+    }
+
+    public void setMidiUrl(String midiUrl) {
+        this.midiUrl = midiUrl;
+    }
+
+    public String getMusicTags() {
+        return musicTags;
+    }
+
+    public void setMusicTags(String musicTags) {
+        this.musicTags = musicTags;
+    }
+
+    public String getMusicSubjects() {
+        return musicSubjects;
+    }
+
+    public void setMusicSubjects(String musicSubjects) {
+        this.musicSubjects = musicSubjects;
+    }
+
+    public String getComposer() {
+        return composer;
+    }
+
+    public void setComposer(String composer) {
+        this.composer = composer;
+    }
+
+    public YesOrNoEnum getShowFingering() {
+        return showFingering;
+    }
+
+    public void setShowFingering(YesOrNoEnum showFingering) {
+        this.showFingering = showFingering;
+    }
+
+    public YesOrNoEnum getCanEvaluate() {
+        return canEvaluate;
+    }
+
+    public void setCanEvaluate(YesOrNoEnum canEvaluate) {
+        this.canEvaluate = canEvaluate;
+    }
+
+    public ChargeTypeEnum getChargeType() {
+        return chargeType;
+    }
+
+    public void setChargeType(ChargeTypeEnum chargeType) {
+        this.chargeType = chargeType;
+    }
+
+    public String getAudioFileUrls() {
+        return audioFileUrls;
+    }
+
+    public void setAudioFileUrls(String audioFileUrls) {
+        this.audioFileUrls = audioFileUrls;
+    }
+}

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

@@ -2,8 +2,10 @@ package com.yonge.cooleshow.biz.dal.dto.req;
 
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import springfox.documentation.annotations.ApiIgnore;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
@@ -18,8 +20,10 @@ import java.util.List;
  */
 @ApiModel(value = "OrderReq对象", description = "下单请求")
 public class OrderReq {
-    @ApiModelProperty(value = "用户id ")
+    @ApiModelProperty(value = "用户id ",hidden = true)
     private Long userId;
+    @ApiModelProperty(value = "订单号", hidden = true)
+    private String orderNo;
     @NotBlank(message = "订单名称不能为空")
     @ApiModelProperty(value = "订单名称 ", required = true)
     private String orderName;
@@ -41,8 +45,12 @@ public class OrderReq {
 
     @ApiModel(value = "OrderReqInfo对象", description = "下单请求业务详情对象")
     public class OrderReqInfo {
+        @ApiModelProperty(value = "y用户id", hidden = true)
         private Long userId;
+        @ApiModelProperty(value = "订单号", hidden = true)
         private String orderNo;
+        @ApiModelProperty(value = "订单详情号", hidden = true)
+        private String subOrderNo;
         @NotNull(message = "商品类型不能为空")
         @ApiModelProperty(value = "商品类型:  VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ", required = true)
         private GoodTypeEnum goodType;
@@ -52,6 +60,8 @@ public class OrderReq {
         private Long couponId;
         @ApiModelProperty(value = "业务内容")
         private Object bizContent;
+        @ApiModelProperty(value = "调用业务创建方法返回", hidden = true)
+        private OrderCreateRes createRes;
 
         public Long getUserId() {
             return userId;
@@ -100,6 +110,22 @@ public class OrderReq {
         public void setCouponId(Long couponId) {
             this.couponId = couponId;
         }
+
+        public String getSubOrderNo() {
+            return subOrderNo;
+        }
+
+        public void setSubOrderNo(String subOrderNo) {
+            this.subOrderNo = subOrderNo;
+        }
+
+        public OrderCreateRes getCreateRes() {
+            return createRes;
+        }
+
+        public void setCreateRes(OrderCreateRes createRes) {
+            this.createRes = createRes;
+        }
     }
 
     public Long getUserId() {
@@ -166,5 +192,11 @@ public class OrderReq {
         this.actualPrice = actualPrice;
     }
 
+    public String getOrderNo() {
+        return orderNo;
+    }
 
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
 }

+ 125 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/CourseGroupDetailSearch.java

@@ -0,0 +1,125 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.toolset.base.page.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * @Author: cy
+ * @Date: 2022/5/19
+ */
+@ApiModel
+public class CourseGroupDetailSearch extends QueryInfo {
+    @ApiModelProperty(value = "课程组id")
+    @NotNull
+    private Long courseGroupId;
+    @ApiModelProperty(value = "课程编号/老师姓名/老师编号/学员姓名/学员编号")
+    private String search;
+    @ApiModelProperty(value = "老师考勤")
+    private Integer teacherSign;
+    @ApiModelProperty(value = "学生考勤")
+    private Integer studentSign;
+    @ApiModelProperty(value = "课程状态")
+    private String status;
+    @ApiModelProperty(value = "结算状态")
+    private String salaryStatus;
+    @ApiModelProperty(value = "开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+    @ApiModelProperty(value = "结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+    @ApiModelProperty(value = "学生id")
+    private Long studentId;
+    @ApiModelProperty(value = "老师id")
+    private Long teacherId;
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Long getCourseGroupId() {
+        return courseGroupId;
+    }
+
+    public void setCourseGroupId(Long courseGroupId) {
+        this.courseGroupId = courseGroupId;
+    }
+
+    @Override
+    public String getSearch() {
+        return search;
+    }
+
+    @Override
+    public void setSearch(String search) {
+        this.search = search;
+    }
+
+    public Integer getTeacherSign() {
+        return teacherSign;
+    }
+
+    public void setTeacherSign(Integer teacherSign) {
+        this.teacherSign = teacherSign;
+    }
+
+    public Integer getStudentSign() {
+        return studentSign;
+    }
+
+    public void setStudentSign(Integer studentSign) {
+        this.studentSign = studentSign;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getSalaryStatus() {
+        return salaryStatus;
+    }
+
+    public void setSalaryStatus(String salaryStatus) {
+        this.salaryStatus = salaryStatus;
+    }
+
+    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;
+    }
+}

+ 143 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/CourseGroupSearch.java

@@ -0,0 +1,143 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.toolset.base.page.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @Author: cy
+ * @Date: 2022/5/19
+ */
+@ApiModel
+public class CourseGroupSearch extends QueryInfo {
+    @ApiModelProperty(value = "课程组、老师、学员编号/名称")
+    private String search;
+
+    @ApiModelProperty("声部id")
+    private Long subjectId;
+
+    @ApiModelProperty("课程组id")
+    private Long groupId;
+
+    @ApiModelProperty("课程id")
+    private Long courseId;
+
+    @ApiModelProperty(value = "课程状态")
+    private String status;
+
+    @ApiModelProperty(value = "结算状态")
+    private String salaryStatus;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNo;
+
+    @ApiModelProperty(value = "开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    @ApiModelProperty(value = "学生id")
+    private Long studentId;
+
+    @ApiModelProperty(value = "老师id")
+    private Long teacherId;
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
+    public String getSalaryStatus() {
+        return salaryStatus;
+    }
+
+    public void setSalaryStatus(String salaryStatus) {
+        this.salaryStatus = salaryStatus;
+    }
+
+    public Long getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(Long groupId) {
+        this.groupId = groupId;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    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;
+    }
+
+    @Override
+    public String getSearch() {
+        return search;
+    }
+
+    @Override
+    public void setSearch(String search) {
+        this.search = search;
+    }
+
+    public Long getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Long subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+}

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicSheetSearch.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.toolset.base.page.QueryInfo;
@@ -50,6 +51,18 @@ public class MusicSheetSearch  extends QueryInfo{
     @ApiModelProperty(value = "假删除 false : 未删除 true:已删除",hidden = true)
     private Boolean delFlag = false;
 
+    @ApiModelProperty(value = "收费类型(FREE:免费;VIP:会员;CHARGE:单曲收费)")
+    private ChargeTypeEnum chargeType;  //收费类型(0:免费;1:会员;2:单曲收费)
+
+
+    public ChargeTypeEnum getChargeType() {
+        return chargeType;
+    }
+
+    public void setChargeType(ChargeTypeEnum chargeType) {
+        this.chargeType = chargeType;
+    }
+
     public String getIdAndName() {
         return idAndName;
     }

+ 22 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/OrderDetailSearch.java

@@ -3,6 +3,8 @@ package com.yonge.cooleshow.biz.dal.dto.search;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 
+import java.util.List;
+
 /**
  * @Author: liweifan
  * @Data: 2022-03-30 13:53:51
@@ -11,4 +13,24 @@ import io.swagger.annotations.ApiModel;
 public class OrderDetailSearch extends QueryInfo{
 	private static final long serialVersionUID = 1L;
 
+	private String orderNo;
+
+	private List<Long> ids;
+
+
+	public String getOrderNo() {
+		return orderNo;
+	}
+
+	public void setOrderNo(String orderNo) {
+		this.orderNo = orderNo;
+	}
+
+	public List<Long> getIds() {
+		return ids;
+	}
+
+	public void setIds(List<Long> ids) {
+		this.ids = ids;
+	}
 }

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است