Browse Source

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

yonge 3 years ago
parent
commit
dde2e7adc9
100 changed files with 1500 additions and 232 deletions
  1. 26 1
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java
  2. 14 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/MallPortalFeignService.java
  3. 19 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java
  4. 11 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/MallPortalFeignServiceFallback.java
  5. 2 2
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserDeviceServiceImpl.java
  6. 5 1
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java
  7. 3 1
      cooleshow-cms/src/main/resources/config/mybatis/HelpCenterContentMapper.xml
  8. 38 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/ContractDto.java
  9. 114 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/MallOrderItemDto.java
  10. 2 2
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/PostStatusEnum.java
  11. 1 1
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/config/ResourceServerConfig.java
  12. 29 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/OmsOrderReturnApplyController.java
  13. 6 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderReturnApplyService.java
  14. 5 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderReturnReasonService.java
  15. 1 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderService.java
  16. 2 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderSettingService.java
  17. 5 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsBrandService.java
  18. 4 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsProductAttributeCategoryService.java
  19. 1 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsProductAttributeService.java
  20. 3 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsProductCategoryService.java
  21. 4 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsProductService.java
  22. 2 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsSkuStockService.java
  23. 2 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsFlashPromotionProductRelationService.java
  24. 5 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsFlashPromotionService.java
  25. 5 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsFlashPromotionSessionService.java
  26. 5 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsHomeAdvertiseService.java
  27. 3 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsHomeBrandService.java
  28. 3 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsHomeNewProductService.java
  29. 3 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsHomeRecommendProductService.java
  30. 3 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsHomeRecommendSubjectService.java
  31. 5 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/UmsMenuService.java
  32. 4 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/UmsResourceCategoryService.java
  33. 4 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/UmsResourceService.java
  34. 3 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/UmsRoleService.java
  35. 56 6
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderReturnApplyServiceImpl.java
  36. 12 0
      cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/api/CommonResult.java
  37. 10 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsCartItem.java
  38. 12 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrder.java
  39. 5 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderExample.java
  40. 23 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderItem.java
  41. 18 3
      cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsCartItemMapper.xml
  42. 33 3
      cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderItemMapper.xml
  43. 18 3
      cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderMapper.xml
  44. 5 0
      cooleshow-mall/mall-portal/pom.xml
  45. 2 2
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/config/ResourceServerConfig.java
  46. 8 1
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java
  47. 3 2
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/open/OpenShareController.java
  48. 4 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/MemberAttentionService.java
  49. 4 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/MemberCollectionService.java
  50. 4 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/MemberReadHistoryService.java
  51. 3 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsCartItemService.java
  52. 5 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderReturnApplyService.java
  53. 15 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java
  54. 2 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/UmsMemberReceiveAddressService.java
  55. 3 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsCartItemServiceImpl.java
  56. 135 5
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java
  57. 21 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/task/OrderTimeOutCancelTask.java
  58. 1 5
      cooleshow-mall/mall-portal/src/main/resources/config/mybatis/PortalOrderDao.xml
  59. 2 2
      cooleshow-mall/mall-portal/src/main/resources/config/mybatis/PortalOrderItemDao.xml
  60. 22 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/MallAutoReceiveTask.java
  61. 22 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/MallShareProfitTask.java
  62. 2 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java
  63. 44 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/PlatformCashAccountRecordController.java
  64. 0 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SysUserContractRecordController.java
  65. 9 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountController.java
  66. 17 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountRecordController.java
  67. 48 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/OpenUserAccountController.java
  68. 19 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserOrderClient.java
  69. 5 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/task/TaskController.java
  70. 19 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/PlatformCashAccountRecordDao.java
  71. 71 59
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserAccountDao.java
  72. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserAccountRecordDao.java
  73. 18 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/UserAccountRecordDto.java
  74. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java
  75. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumSearch.java
  76. 90 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/PlatformCashAccountRecordSearch.java
  77. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/StudentMusicSheetSearch.java
  78. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/SysUserContractRecordSearch.java
  79. 11 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/UserAccountRecordSearch.java
  80. 57 27
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/PlatformCashAccountRecord.java
  81. 25 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserAccountRecord.java
  82. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrder.java
  83. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderDetail.java
  84. 16 19
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccountBizTypeEnum.java
  85. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/GoodTypeEnum.java
  86. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AlbumFavoriteService.java
  87. 3 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  88. 31 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/PlatformCashAccountRecordService.java
  89. 19 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserAccountRecordService.java
  90. 24 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserAccountService.java
  91. 7 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderPaymentService.java
  92. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderRefundService.java
  93. 4 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java
  94. 16 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/AlbumFavoriteServiceImpl.java
  95. 33 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  96. 16 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  97. 4 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MemberPriceSettingsServiceImpl.java
  98. 15 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java
  99. 13 41
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  100. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PianoRoomBuyRecordServiceImpl.java

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

@@ -1,13 +1,17 @@
 package com.yonge.cooleshow.api.feign;
 
 import com.yonge.cooleshow.api.feign.fallback.AdminFeignServiceFallback;
-import com.yonge.cooleshow.api.feign.fallback.MallAdminFeignServiceFallback;
 import com.yonge.cooleshow.common.constant.AppConstant;
+import com.yonge.cooleshow.common.entity.ContractDto;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 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;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
 
 /**
  * Description
@@ -46,6 +50,20 @@ public interface AdminFeignService {
     @PostMapping(value = "/task/teacherEarning")
     HttpResponseResult<Object> sendTeacherEarning();
 
+
+    /**
+     * 设置商城收入分润
+     */
+    @PostMapping("/open/mallRecord")
+    public HttpResponseResult<Boolean> mallRecord(@RequestBody List<MallOrderItemDto> shareDto ) ;
+
+    /**
+     * 设置商城收入状态
+     */
+    @PostMapping("/open/mallRecordState")
+    public HttpResponseResult<Boolean> mallRecordState(@RequestBody  List<MallOrderItemDto> shareDto ) ;
+
+
     //老师课酬
     @PostMapping(value = "/task/refreshBlackList")
     HttpResponseResult refreshBlackList();
@@ -53,4 +71,11 @@ public interface AdminFeignService {
     @GetMapping(value = "/sysConfig/findConfigValue")
     HttpResponseResult<String> findConfigValue(String paramName);
 
+
+    /**
+     * 签协议 商城调用
+     */
+    @GetMapping("/open/userOrder/contractRecord")
+    HttpResponseResult<Boolean> contractRecord(@RequestBody ContractDto contract);
+
 }

+ 14 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/MallPortalFeignService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.api.feign;
 
 import com.yonge.cooleshow.api.feign.fallback.MallPortalFeignServiceFallback;
 import com.yonge.cooleshow.common.constant.AppConstant;
+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;
@@ -15,4 +16,17 @@ public interface MallPortalFeignService {
      */
     @GetMapping("/task/cancelTimeOutOrder")
     Object cancelTimeOutOrder();
+
+    /**
+     * 自动收货
+     */
+    @GetMapping("/task/autoReceive")
+    HttpResponseResult autoReceive();
+
+
+    /**
+     * 收货多少天后分润
+     */
+    @GetMapping("/task/shareProfit")
+    HttpResponseResult shareProfit();
 }

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

@@ -1,7 +1,11 @@
 package com.yonge.cooleshow.api.feign.fallback;
 
 import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.common.entity.ContractDto;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
+
+import java.util.List;
 
 /**
  * Description
@@ -31,14 +35,29 @@ public class AdminFeignServiceFallback implements AdminFeignService {
     }
 
     @Override
+    public HttpResponseResult<Boolean> mallRecord(List<MallOrderItemDto> shareDto) {
+        return null;
+    }
+
+    @Override
+    public HttpResponseResult<Boolean> mallRecordState(List<MallOrderItemDto> shareDto) {
+        return null;
+    }
 
+
+    @Override
     public HttpResponseResult refreshBlackList() {
 
         return null;
     }
 
+    @Override
     public HttpResponseResult<String> findConfigValue(String paramName) {
 
         return null;
     }
+
+    public HttpResponseResult<Boolean> contractRecord(ContractDto contract) {
+        return null;
+    }
 }

+ 11 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/MallPortalFeignServiceFallback.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.api.feign.fallback;
 
 
 import com.yonge.cooleshow.api.feign.MallPortalFeignService;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
 /**
  * Description
@@ -14,4 +15,14 @@ public class MallPortalFeignServiceFallback implements MallPortalFeignService {
     public Object cancelTimeOutOrder() {
         return null;
     }
+
+    @Override
+    public HttpResponseResult autoReceive() {
+        return null;
+    }
+
+    @Override
+    public HttpResponseResult shareProfit() {
+        return null;
+    }
 }

+ 2 - 2
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserDeviceServiceImpl.java

@@ -43,9 +43,9 @@ public class SysUserDeviceServiceImpl extends BaseServiceImpl<Long, SysUserDevic
 	@Override
 	public boolean bindDevice(String clientId, Long userId, String deviceNum) {
 		String paramName;
-		if (StringUtils.equals(clientId, "STUDENT")) {
+		if (StringUtils.equalsIgnoreCase(clientId, "STUDENT")) {
 			paramName = "student_device_acc_num";
-		} else if (StringUtils.equals(clientId, "TEACHER")) {
+		} else if (StringUtils.equalsIgnoreCase(clientId, "TEACHER")) {
 			paramName = "teacher_device_acc_num";
 		}else {
 			return true;

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

@@ -44,7 +44,11 @@ public class NewsController extends BaseController {
 	@ApiOperation(value = "资讯/广告/闪页/轮播图/乐理 列表分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
 	@PostMapping(value = "/page",  consumes="application/json", produces="application/json")
 	public HttpResponseResult<PageInfo<SysNewsInformationDto>> getList(@Valid @RequestBody NewsInformationQueryInfo queryInfo) {
-		
+
+		if (queryInfo.getType() == 2) {
+			queryInfo.setAttribute2(queryInfo.getSubType());
+			queryInfo.setSubType(null);
+		}
 		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
 		return succeed(sysNewsInformationService.selectPage(queryInfo));

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

@@ -28,7 +28,9 @@
 				and content.catalog_id_ in (${catalogIds})
 			</if>
 			<if test="title!= null and title != ''">
-				and content.title_ like '%' #{title} '%'
+				and (content.title_ like '%' #{title} '%'
+					or content.id_ like '%' #{title} '%'
+				)
 			</if>
 			<if test="status!= null">
 			and ((content.status_ = #{status} and content.catalog_id_ = 1)

+ 38 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/ContractDto.java

@@ -0,0 +1,38 @@
+package com.yonge.cooleshow.common.entity;
+
+/**
+ * Description 远程签署协议
+ *
+ * @author liujunchi
+ * @date 2022-07-26
+ */
+public class ContractDto {
+
+    // 用户类型 STUDENT TEACHER
+    private String type;
+
+    // 用户id
+    private Long userId;
+
+
+    public ContractDto(String type, Long userId) {
+        this.type = type;
+        this.userId = userId;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+}

+ 114 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/MallOrderItemDto.java

@@ -0,0 +1,114 @@
+package com.yonge.cooleshow.common.entity;
+
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
+
+import java.math.BigDecimal;
+
+/**
+ * Description 老师分润
+ *
+ * @author liujunchi
+ * @date 2022-07-25
+ */
+public class MallOrderItemDto {
+
+    // 订单详情id
+    private Long id;
+
+    // 订单id
+    private Long orderId;
+
+    // 订单号
+    private String orderSn;
+
+    // 商品id
+    private Long productSkuId;
+
+
+    private String productName;
+
+    // 分享人id
+    private Long promoterId;
+
+    // 购买金额
+    private BigDecimal realAmount;
+
+    // 购买人id
+    private Long userId;
+
+    // 分润状态
+    private PostStatusEnum status;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Long orderId) {
+        this.orderId = orderId;
+    }
+
+    public String getOrderSn() {
+        return orderSn;
+    }
+
+    public void setOrderSn(String orderSn) {
+        this.orderSn = orderSn;
+    }
+
+    public Long getProductSkuId() {
+        return productSkuId;
+    }
+
+    public void setProductSkuId(Long productSkuId) {
+        this.productSkuId = productSkuId;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public Long getPromoterId() {
+        return promoterId;
+    }
+
+    public void setPromoterId(Long promoterId) {
+        this.promoterId = promoterId;
+    }
+
+    public BigDecimal getRealAmount() {
+        return realAmount;
+    }
+
+    public void setRealAmount(BigDecimal realAmount) {
+        this.realAmount = realAmount;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public PostStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(PostStatusEnum status) {
+        this.status = status;
+    }
+}

+ 2 - 2
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/PostStatusEnum.java

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.yonge.toolset.base.enums.BaseEnum;
 
 /**
- * 入账状态 WAIT 待入账 FROZEN 冻结入账 RECORDED 已入账 CANCEL 取消
+ * 入账状态 WAIT 待入账 FROZEN 冻结入账 RECORDED 已入账 CANCEL 退费
  *
  * @Author: liweifan
  * @Data: 2022/4/7 15:48
@@ -14,7 +14,7 @@ public enum PostStatusEnum implements BaseEnum<String, PostStatusEnum> {
     WAIT("待入账"),
     FROZEN("冻结入账"),
     RECORDED("已入账"),
-    CANCEL("取消");
+    CANCEL("退费");
 
     @EnumValue
     private String code;

+ 1 - 1
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/config/ResourceServerConfig.java

@@ -30,7 +30,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                 .permitAll()
             .and()
                 .authorizeRequests()
-                .antMatchers("/wechat/*","/feign-client/**","/v2/api-docs", "/code/*","/payment/callback","/admin/login")
+                .antMatchers("/wechat/*","/feign-client/**","/v2/api-docs", "/code/*","/payment/callback","/admin/login","/returnApply/test/returnApply/**")
             .permitAll().anyRequest().authenticated().and().httpBasic();
     }
 

+ 29 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/OmsOrderReturnApplyController.java

@@ -18,6 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
@@ -91,4 +93,31 @@ public class OmsOrderReturnApplyController {
         return CommonResult.failed();
     }
 
+
+
+    @ApiOperation("完成退货测试接口")
+    @GetMapping(value = "/test/returnApply/{id}")
+    @ResponseBody
+    public CommonResult test(@PathVariable Long id) {
+        RLock lock = redissonClient.getLock(OrderCacheEnum.LOCK_REFUND_ORDER_MALL + ":refundOrder:" + id);
+        try {
+            boolean b = lock.tryLock(60, 60, TimeUnit.SECONDS);
+            if (b) {
+
+                returnApplyService.setTestReturnApply(id);
+                return CommonResult.success(true);
+
+            }
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+            log.warn("");
+        } finally {
+            if (lock.getHoldCount() >0) {
+                lock.unlock();
+            }
+        }
+
+        return CommonResult.failed();
+    }
+
 }

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

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.admin.dto.OmsOrderReturnApplyResult;
 import com.yonge.cooleshow.admin.dto.OmsReturnApplyQueryParam;
 import com.yonge.cooleshow.admin.dto.OmsUpdateStatusParam;
 import com.yonge.cooleshow.mbg.model.OmsOrderReturnApply;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -21,13 +22,18 @@ public interface OmsOrderReturnApplyService {
     /**
      * 批量删除申请
      */
+    @Transactional
     int delete(List<Long> ids);
 
     /**
      * 修改指定申请状态
      */
+    @Transactional
     int updateStatus(Long id, OmsUpdateStatusParam statusParam);
 
+    void setTestReturnApply(Long id);
+
+
     /**
      * 获取指定申请详情
      */

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

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.admin.service;
 
 import com.yonge.cooleshow.mbg.model.OmsOrderReturnReason;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -12,16 +13,19 @@ public interface OmsOrderReturnReasonService {
     /**
      * 添加退货原因
      */
+    @Transactional
     int create(OmsOrderReturnReason returnReason);
 
     /**
      * 修改退货原因
      */
+    @Transactional
     int update(Long id, OmsOrderReturnReason returnReason);
 
     /**
      * 批量删除退货原因
      */
+    @Transactional
     int delete(List<Long> ids);
 
     /**
@@ -32,6 +36,7 @@ public interface OmsOrderReturnReasonService {
     /**
      * 批量修改退货原因状态
      */
+    @Transactional
     int updateStatus(List<Long> ids, Integer status);
 
     /**

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

@@ -34,6 +34,7 @@ public interface OmsOrderService {
     /**
      * 批量删除订单
      */
+    @Transactional
     int delete(List<Long> ids);
 
     /**

+ 2 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderSettingService.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.admin.service;
 
 import com.yonge.cooleshow.mbg.model.OmsOrderSetting;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 订单设置管理Service
@@ -15,5 +16,6 @@ public interface OmsOrderSettingService {
     /**
      * 修改指定订单设置
      */
+    @Transactional
     int update(Long id, OmsOrderSetting orderSetting);
 }

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

@@ -19,6 +19,7 @@ public interface PmsBrandService {
     /**
      * 创建品牌
      */
+    @Transactional
     int createBrand(PmsBrandParam pmsBrandParam);
 
     /**
@@ -30,11 +31,13 @@ public interface PmsBrandService {
     /**
      * 删除品牌
      */
+    @Transactional
     int deleteBrand(Long id);
 
     /**
      * 批量删除品牌
      */
+    @Transactional
     int deleteBrand(List<Long> ids);
 
     /**
@@ -50,10 +53,12 @@ public interface PmsBrandService {
     /**
      * 修改显示状态
      */
+    @Transactional
     int updateShowStatus(List<Long> ids, Integer showStatus);
 
     /**
      * 修改厂家制造商状态
      */
+    @Transactional
     int updateFactoryStatus(List<Long> ids, Integer factoryStatus);
 }

+ 4 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsProductAttributeCategoryService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.admin.service;
 
 import com.yonge.cooleshow.admin.dto.PmsProductAttributeCategoryItem;
 import com.yonge.cooleshow.mbg.model.PmsProductAttributeCategory;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -13,16 +14,19 @@ public interface PmsProductAttributeCategoryService {
     /**
      * 创建属性分类
      */
+    @Transactional
     int create(String name);
 
     /**
      * 修改属性分类
      */
+    @Transactional
     int update(Long id, String name);
 
     /**
      * 删除属性分类
      */
+    @Transactional
     int delete(Long id);
 
     /**

+ 1 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsProductAttributeService.java

@@ -28,6 +28,7 @@ public interface PmsProductAttributeService {
     /**
      * 修改商品属性
      */
+    @Transactional
     int update(Long id, PmsProductAttributeParam productAttributeParam);
 
     /**

+ 3 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsProductCategoryService.java

@@ -32,6 +32,7 @@ public interface PmsProductCategoryService {
     /**
      * 删除商品分类
      */
+    @Transactional
     int delete(Long id);
 
     /**
@@ -42,11 +43,13 @@ public interface PmsProductCategoryService {
     /**
      * 批量修改导航状态
      */
+    @Transactional
     int updateNavStatus(List<Long> ids, Integer navStatus);
 
     /**
      * 批量修改显示状态
      */
+    @Transactional
     int updateShowStatus(List<Long> ids, Integer showStatus);
 
     /**

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

@@ -50,21 +50,25 @@ public interface PmsProductService {
     /**
      * 批量修改商品上架状态
      */
+    @Transactional
     int updatePublishStatus(List<Long> ids, Integer publishStatus);
 
     /**
      * 批量修改商品推荐状态
      */
+    @Transactional
     int updateRecommendStatus(List<Long> ids, Integer recommendStatus);
 
     /**
      * 批量修改新品状态
      */
+    @Transactional
     int updateNewStatus(List<Long> ids, Integer newStatus);
 
     /**
      * 批量删除商品
      */
+    @Transactional
     int updateDeleteStatus(List<Long> ids, Integer deleteStatus);
 
     /**

+ 2 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsSkuStockService.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.admin.service;
 
 import com.yonge.cooleshow.mbg.model.PmsSkuStock;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -17,5 +18,6 @@ public interface PmsSkuStockService {
     /**
      * 批量更新商品库存信息
      */
+    @Transactional
     int update(Long pid, List<PmsSkuStock> skuStockList);
 }

+ 2 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsFlashPromotionProductRelationService.java

@@ -20,11 +20,13 @@ public interface SmsFlashPromotionProductRelationService {
     /**
      * 修改关联信息
      */
+    @Transactional
     int update(Long id, SmsFlashPromotionProductRelation relation);
 
     /**
      * 删除关联
      */
+    @Transactional
     int delete(Long id);
 
     /**

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

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.admin.service;
 
 import com.yonge.cooleshow.mbg.model.SmsFlashPromotion;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -12,21 +13,25 @@ public interface SmsFlashPromotionService {
     /**
      * 添加活动
      */
+    @Transactional
     int create(SmsFlashPromotion flashPromotion);
 
     /**
      * 修改指定活动
      */
+    @Transactional
     int update(Long id, SmsFlashPromotion flashPromotion);
 
     /**
      * 删除单个活动
      */
+    @Transactional
     int delete(Long id);
 
     /**
      * 修改上下线状态
      */
+    @Transactional
     int updateStatus(Long id, Integer status);
 
     /**

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

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.admin.service;
 
 import com.yonge.cooleshow.admin.dto.SmsFlashPromotionSessionDetail;
 import com.yonge.cooleshow.mbg.model.SmsFlashPromotionSession;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -13,21 +14,25 @@ public interface SmsFlashPromotionSessionService {
     /**
      * 添加场次
      */
+    @Transactional
     int create(SmsFlashPromotionSession promotionSession);
 
     /**
      * 修改场次
      */
+    @Transactional
     int update(Long id, SmsFlashPromotionSession promotionSession);
 
     /**
      * 修改场次启用状态
      */
+    @Transactional
     int updateStatus(Long id, Integer status);
 
     /**
      * 删除场次
      */
+    @Transactional
     int delete(Long id);
 
     /**

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

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.admin.service;
 
 import com.yonge.cooleshow.mbg.model.SmsHomeAdvertise;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -12,16 +13,19 @@ public interface SmsHomeAdvertiseService {
     /**
      * 添加广告
      */
+    @Transactional
     int create(SmsHomeAdvertise advertise);
 
     /**
      * 批量删除广告
      */
+    @Transactional
     int delete(List<Long> ids);
 
     /**
      * 修改上、下线状态
      */
+    @Transactional
     int updateStatus(Long id, Integer status);
 
     /**
@@ -32,6 +36,7 @@ public interface SmsHomeAdvertiseService {
     /**
      * 更新广告
      */
+    @Transactional
     int update(Long id, SmsHomeAdvertise advertise);
 
     /**

+ 3 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsHomeBrandService.java

@@ -19,16 +19,19 @@ public interface SmsHomeBrandService {
     /**
      * 修改品牌推荐排序
      */
+    @Transactional
     int updateSort(Long id, Integer sort);
 
     /**
      * 批量删除品牌推荐
      */
+    @Transactional
     int delete(List<Long> ids);
 
     /**
      * 批量更新推荐状态
      */
+    @Transactional
     int updateRecommendStatus(List<Long> ids, Integer recommendStatus);
 
     /**

+ 3 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsHomeNewProductService.java

@@ -19,16 +19,19 @@ public interface SmsHomeNewProductService {
     /**
      * 修改推荐排序
      */
+    @Transactional
     int updateSort(Long id, Integer sort);
 
     /**
      * 批量删除推荐
      */
+    @Transactional
     int delete(List<Long> ids);
 
     /**
      * 批量更新推荐状态
      */
+    @Transactional
     int updateRecommendStatus(List<Long> ids, Integer recommendStatus);
 
     /**

+ 3 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsHomeRecommendProductService.java

@@ -19,16 +19,19 @@ public interface SmsHomeRecommendProductService {
     /**
      * 修改推荐排序
      */
+    @Transactional
     int updateSort(Long id, Integer sort);
 
     /**
      * 批量删除推荐
      */
+    @Transactional
     int delete(List<Long> ids);
 
     /**
      * 批量更新推荐状态
      */
+    @Transactional
     int updateRecommendStatus(List<Long> ids, Integer recommendStatus);
 
     /**

+ 3 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/SmsHomeRecommendSubjectService.java

@@ -19,16 +19,19 @@ public interface SmsHomeRecommendSubjectService {
     /**
      * 修改推荐排序
      */
+    @Transactional
     int updateSort(Long id, Integer sort);
 
     /**
      * 批量删除推荐
      */
+    @Transactional
     int delete(List<Long> ids);
 
     /**
      * 批量更新推荐状态
      */
+    @Transactional
     int updateRecommendStatus(List<Long> ids, Integer recommendStatus);
 
     /**

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

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.admin.service;
 
 import com.yonge.cooleshow.admin.dto.UmsMenuNode;
 import com.yonge.cooleshow.mbg.model.UmsMenu;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -13,11 +14,13 @@ public interface UmsMenuService {
     /**
      * 创建后台菜单
      */
+    @Transactional
     int create(UmsMenu umsMenu);
 
     /**
      * 修改后台菜单
      */
+    @Transactional
     int update(Long id, UmsMenu umsMenu);
 
     /**
@@ -28,6 +31,7 @@ public interface UmsMenuService {
     /**
      * 根据ID删除菜单
      */
+    @Transactional
     int delete(Long id);
 
     /**
@@ -43,5 +47,6 @@ public interface UmsMenuService {
     /**
      * 修改菜单显示状态
      */
+    @Transactional
     int updateHidden(Long id, Integer hidden);
 }

+ 4 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/UmsResourceCategoryService.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.admin.service;
 
 import com.yonge.cooleshow.mbg.model.UmsResourceCategory;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -18,15 +19,18 @@ public interface UmsResourceCategoryService {
     /**
      * 创建资源分类
      */
+    @Transactional
     int create(UmsResourceCategory umsResourceCategory);
 
     /**
      * 修改资源分类
      */
+    @Transactional
     int update(Long id, UmsResourceCategory umsResourceCategory);
 
     /**
      * 删除资源分类
      */
+    @Transactional
     int delete(Long id);
 }

+ 4 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/UmsResourceService.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.admin.service;
 
 import com.yonge.cooleshow.mbg.model.UmsResource;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -12,11 +13,13 @@ public interface UmsResourceService {
     /**
      * 添加资源
      */
+    @Transactional
     int create(UmsResource umsResource);
 
     /**
      * 修改资源
      */
+    @Transactional
     int update(Long id, UmsResource umsResource);
 
     /**
@@ -27,6 +30,7 @@ public interface UmsResourceService {
     /**
      * 删除资源
      */
+    @Transactional
     int delete(Long id);
 
     /**

+ 3 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/UmsRoleService.java

@@ -15,16 +15,19 @@ public interface UmsRoleService {
     /**
      * 添加角色
      */
+    @Transactional
     int create(UmsRole role);
 
     /**
      * 修改角色信息
      */
+    @Transactional
     int update(Long id, UmsRole role);
 
     /**
      * 批量删除角色
      */
+    @Transactional
     int delete(List<Long> ids);
 
     /**

+ 56 - 6
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderReturnApplyServiceImpl.java

@@ -1,14 +1,17 @@
 package com.yonge.cooleshow.admin.service.impl;
 
+import com.alibaba.fastjson.JSON;
 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;
+import com.yonge.cooleshow.admin.dto.*;
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.cooleshow.common.service.IdGeneratorService;
 import com.yonge.cooleshow.mall.common.exception.ApiException;
 import com.yonge.cooleshow.mall.common.service.RedisService;
+import com.yonge.cooleshow.mbg.mapper.OmsOrderItemMapper;
 import com.yonge.cooleshow.mbg.model.*;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.cooleshow.mbg.mapper.OmsOrderReturnApplyMapper;
@@ -24,12 +27,13 @@ import com.yonge.toolset.payment.base.model.RefundBill;
 import com.yonge.toolset.payment.core.service.PaymentClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -48,6 +52,11 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
     private OmsOrderReturnApplyMapper returnApplyMapper;
 
     @Autowired
+    private OmsOrderItemMapper orderItemMapper;
+
+    @Autowired
+    private AdminFeignService adminFeignService;
+    @Autowired
     private RedisService redisService;
     private String REDIS_KEY_ORDER_ID= "redis.key.orderId";
     private String REDIS_DATABASE = "redis.database";
@@ -87,7 +96,7 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
         if (omsOrderReturnApply == null) {
             throw new BizException("退货订单不存在或被撤销");
         }
-        if (omsOrderReturnApply.getProductPrice().compareTo(statusParam.getReturnAmount()) <0) {
+        if (omsOrderReturnApply.getProductRealPrice().multiply(BigDecimal.valueOf(omsOrderReturnApply.getProductCount())).compareTo(statusParam.getReturnAmount()) <0) {
             throw new BizException("退款金额不能大于商品金额");
         }
         if (omsOrderReturnApply.getStatus().equals(statusParam.getStatus())) {
@@ -113,6 +122,10 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
             if (omsOrderReturnApply.getReturnAmount().compareTo(BigDecimal.ZERO) >0) {
                 refundAmount(omsOrderReturnApply);
             }
+
+            // 确认退款 取消平台收入和 分润
+            setRecord(omsOrderReturnApply);
+
         } else if (status.equals(3)) {
             //拒绝退货
             returnApply.setId(id);
@@ -126,6 +139,43 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
         return returnApplyMapper.updateByPrimaryKeySelective(returnApply);
     }
 
+
+    @Override
+    public void setTestReturnApply(Long id) {
+        OmsOrderReturnApply returnApply = returnApplyMapper.selectByPrimaryKey(id);
+        returnApply.setId(id);
+        returnApply.setStatus(2);
+        returnApply.setReceiveTime(new Date());
+        returnApply.setReceiveMan("测试退货");
+        returnApply.setReceiveNote("测试退货");
+
+        // 确认退款 取消平台收入和 分润
+        setRecord(returnApply);
+        returnApplyMapper.updateByPrimaryKeySelective(returnApply);
+    }
+
+    private void setRecord(OmsOrderReturnApply returnApply) {
+        if (returnApply.getOrderItemId() != null) {
+            OmsOrderItem omsOrderItem = orderItemMapper.selectByPrimaryKey(returnApply.getOrderItemId());
+            if (omsOrderItem != null) {
+                MallOrderItemDto teacherShareDto = new MallOrderItemDto();
+                BeanUtils.copyProperties(omsOrderItem, teacherShareDto);
+                teacherShareDto.setRealAmount(omsOrderItem.getRealAmount().multiply(BigDecimal.valueOf(omsOrderItem.getProductQuantity())));
+                teacherShareDto.setProductSkuId(omsOrderItem.getProductSkuId());
+                teacherShareDto.setStatus(PostStatusEnum.CANCEL);
+                List<MallOrderItemDto> list = new ArrayList<>();
+                list.add(teacherShareDto);
+                HttpResponseResult<Boolean> result = adminFeignService.mallRecordState(list);
+
+                if (result.getStatus()) {
+                    log.debug("分润取消写入成功,json: {}", JSON.toJSONString(teacherShareDto));
+                } else {
+                    log.error("分润取消写入失败,json: {}",JSON.toJSONString(teacherShareDto));
+                }
+            }
+        }
+    }
+
     /**
      * 退款处理
      *

+ 12 - 0
cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/api/CommonResult.java

@@ -18,6 +18,8 @@ public class CommonResult<T> {
      */
     private T data;
 
+    private Object err;
+
     protected CommonResult() {
     }
 
@@ -27,6 +29,8 @@ public class CommonResult<T> {
         this.data = data;
     }
 
+
+
     /**
      * 成功返回结果
      *
@@ -130,4 +134,12 @@ public class CommonResult<T> {
     public void setData(T data) {
         this.data = data;
     }
+
+    public Object getErr() {
+        return err;
+    }
+
+    public void setErr(Object err) {
+        this.err = err;
+    }
 }

+ 10 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsCartItem.java

@@ -16,6 +16,9 @@ public class OmsCartItem implements Serializable {
 
     private Long memberId;
 
+    @ApiModelProperty("推广人id")
+    private Long promoterId;
+
     @ApiModelProperty(value = "购买数量")
     private Integer quantity;
 
@@ -66,6 +69,13 @@ public class OmsCartItem implements Serializable {
     @ApiModelProperty(value = "锁定库存")
     private Integer lockStock = 0 ;
 
+    public Long getPromoterId() {
+        return promoterId;
+    }
+
+    public void setPromoterId(Long promoterId) {
+        this.promoterId = promoterId;
+    }
 
     public Integer getStock() {
         return stock;

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

@@ -139,11 +139,23 @@ public class OmsOrder implements Serializable {
     @ApiModelProperty(value = "评价时间")
     private Date commentTime;
 
+    @ApiModelProperty("是否能申请售后 0:是 1:否")
+    private int afterSale;
+
     @ApiModelProperty(value = "修改时间")
     private Date modifyTime;
 
     private static final long serialVersionUID = 1L;
 
+
+    public int getAfterSale() {
+        return afterSale;
+    }
+
+    public void setAfterSale(int afterSale) {
+        this.afterSale = afterSale;
+    }
+
     public String getPlatformType() {
         return platformType;
     }

+ 5 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderExample.java

@@ -2451,6 +2451,11 @@ public class OmsOrderExample {
             return (Criteria) this;
         }
 
+        public Criteria andAfterSaleEqualTo(Integer value) {
+            addCriterion("after_sale =", value, "afterSale");
+            return (Criteria) this;
+        }
+
         public Criteria andConfirmStatusNotEqualTo(Integer value) {
             addCriterion("confirm_status <>", value, "confirmStatus");
             return (Criteria) this;

+ 23 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderItem.java

@@ -23,6 +23,12 @@ public class OmsOrderItem implements Serializable {
 
     private String productSn;
 
+    @ApiModelProperty("推广人id")
+    private Long promoterId;
+
+    @ApiModelProperty("分享比例(%)")
+    private String shareProportion;
+
     @ApiModelProperty(value = "销售价格")
     private BigDecimal productPrice;
 
@@ -65,6 +71,23 @@ public class OmsOrderItem implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+
+    public Long getPromoterId() {
+        return promoterId;
+    }
+
+    public void setPromoterId(Long promoterId) {
+        this.promoterId = promoterId;
+    }
+
+    public String getShareProportion() {
+        return shareProportion;
+    }
+
+    public void setShareProportion(String shareProportion) {
+        this.shareProportion = shareProportion;
+    }
+
     public Long getId() {
         return id;
     }

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

@@ -21,6 +21,7 @@
     <result column="product_sn" jdbcType="VARCHAR" property="productSn" />
     <result column="product_attr" jdbcType="VARCHAR" property="productAttr" />
     <result column="hidden_" jdbcType="VARCHAR" property="hidden" />
+    <result column="promoter_id"  property="promoterId" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -83,7 +84,7 @@
   <sql id="Base_Column_List">
     id, product_id, product_sku_id, member_id, quantity, price, product_pic, product_name, 
     product_sub_title, product_sku_code, member_nickname, create_date, modify_date, delete_status, 
-    product_category_id, product_brand, product_sn, product_attr,hidden_
+    product_category_id, product_brand, product_sn, product_attr,hidden_,promoter_id
   </sql>
   <select id="selectByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsCartItemExample" resultMap="BaseResultMap">
     select
@@ -124,13 +125,13 @@
       product_name, product_sub_title, product_sku_code, 
       member_nickname, create_date, modify_date, 
       delete_status, product_category_id, product_brand, 
-      product_sn, product_attr,hidden_)
+      product_sn, product_attr,hidden_,promoter_id)
     values (#{productId,jdbcType=BIGINT}, #{productSkuId,jdbcType=BIGINT}, #{memberId,jdbcType=BIGINT}, 
       #{quantity,jdbcType=INTEGER}, #{price,jdbcType=DECIMAL}, #{productPic,jdbcType=VARCHAR}, 
       #{productName,jdbcType=VARCHAR}, #{productSubTitle,jdbcType=VARCHAR}, #{productSkuCode,jdbcType=VARCHAR}, 
       #{memberNickname,jdbcType=VARCHAR}, #{createDate,jdbcType=TIMESTAMP}, #{modifyDate,jdbcType=TIMESTAMP}, 
       #{deleteStatus,jdbcType=INTEGER}, #{productCategoryId,jdbcType=BIGINT}, #{productBrand,jdbcType=VARCHAR}, 
-      #{productSn,jdbcType=VARCHAR}, #{productAttr,jdbcType=VARCHAR},#{hidden})
+      #{productSn,jdbcType=VARCHAR}, #{productAttr,jdbcType=VARCHAR},#{hidden},#{promoterId})
   </insert>
   <insert id="insertSelective" parameterType="com.yonge.cooleshow.mbg.model.OmsCartItem">
     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
@@ -192,6 +193,9 @@
       <if test="hidden != null">
         hidden_,
       </if>
+      <if test="promoterId != null">
+        promoter_id,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="productId != null">
@@ -248,6 +252,9 @@
       <if test="hidden != null">
         #{hidden},
       </if>
+      <if test="promoterId != null">
+        #{promoterId},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsCartItemExample" resultType="java.lang.Long">
@@ -316,6 +323,9 @@
       <if test="record.hidden != null">
         hidden_ = #{record.hidden},
       </if>
+      <if test="record.promoterId != null">
+        promoter_id = #{record.promoterId},
+      </if>
     </set>
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -341,6 +351,7 @@
       product_brand = #{record.productBrand,jdbcType=VARCHAR},
       product_sn = #{record.productSn,jdbcType=VARCHAR},
       product_attr = #{record.productAttr,jdbcType=VARCHAR},
+      promoter_id = #{record.promoterId},
       hidden_ = #{record.hidden}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -403,6 +414,9 @@
       <if test="hidden != null">
         hidden_ = #{hidden},
       </if>
+      <if test="promoterId != null">
+        promoter_id = #{promoterId},
+      </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
@@ -425,6 +439,7 @@
       product_brand = #{productBrand,jdbcType=VARCHAR},
       product_sn = #{productSn,jdbcType=VARCHAR},
       product_attr = #{productAttr,jdbcType=VARCHAR},
+      promoter_id = #{promoterId},
       hidden_ = #{hidden}
     where id = #{id,jdbcType=BIGINT}
   </update>

+ 33 - 3
cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderItemMapper.xml

@@ -24,6 +24,8 @@
     <result column="gift_growth" jdbcType="INTEGER" property="giftGrowth" />
     <result column="product_attr" jdbcType="VARCHAR" property="productAttr" />
     <result column="returnStatus" jdbcType="INTEGER" property="returnStatus" />
+    <result column="promoter_id" jdbcType="INTEGER" property="promoterId" />
+    <result column="share_proportion_" jdbcType="INTEGER" property="shareProportion" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -87,7 +89,7 @@
     id, order_id, order_sn, product_id, product_pic, product_name, product_brand, product_sn, 
     product_price, product_quantity, product_sku_id, product_sku_code, product_category_id, 
     promotion_name, promotion_amount, coupon_amount, integration_amount, real_amount, 
-    gift_integration, gift_growth, product_attr
+    gift_integration, gift_growth, product_attr,promoter_id,share_proportion_
   </sql>
   <select id="selectByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderItemExample" resultMap="BaseResultMap">
     select a.*,if(oora.status is null,-1,oora.status) as returnStatus from  (
@@ -131,14 +133,14 @@
       product_sku_id, product_sku_code, product_category_id, 
       promotion_name, promotion_amount, coupon_amount, 
       integration_amount, real_amount, gift_integration, 
-      gift_growth, product_attr)
+      gift_growth, product_attr,promoter_id,share_proportion_)
     values (#{orderId,jdbcType=BIGINT}, #{orderSn,jdbcType=VARCHAR}, #{productId,jdbcType=BIGINT}, 
       #{productPic,jdbcType=VARCHAR}, #{productName,jdbcType=VARCHAR}, #{productBrand,jdbcType=VARCHAR}, 
       #{productSn,jdbcType=VARCHAR}, #{productPrice,jdbcType=DECIMAL}, #{productQuantity,jdbcType=INTEGER}, 
       #{productSkuId,jdbcType=BIGINT}, #{productSkuCode,jdbcType=VARCHAR}, #{productCategoryId,jdbcType=BIGINT}, 
       #{promotionName,jdbcType=VARCHAR}, #{promotionAmount,jdbcType=DECIMAL}, #{couponAmount,jdbcType=DECIMAL}, 
       #{integrationAmount,jdbcType=DECIMAL}, #{realAmount,jdbcType=DECIMAL}, #{giftIntegration,jdbcType=INTEGER}, 
-      #{giftGrowth,jdbcType=INTEGER}, #{productAttr,jdbcType=VARCHAR})
+      #{giftGrowth,jdbcType=INTEGER}, #{productAttr,jdbcType=VARCHAR},#{promoterId},#{shareProportion})
   </insert>
   <insert id="insertSelective" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderItem">
     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
@@ -206,6 +208,12 @@
       <if test="productAttr != null">
         product_attr,
       </if>
+      <if test="promoterId != null">
+        promoter_id,
+      </if>
+      <if test="shareProportion != null">
+        share_proportion_,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="orderId != null">
@@ -268,6 +276,12 @@
       <if test="productAttr != null">
         #{productAttr,jdbcType=VARCHAR},
       </if>
+      <if test="promoterId != null">
+        #{promoterId,jdbcType=BIGINT},
+      </if>
+      <if test="shareProportion != null">
+        #{shareProportion,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderItemExample" resultType="java.lang.Long">
@@ -342,6 +356,12 @@
       <if test="record.productAttr != null">
         product_attr = #{record.productAttr,jdbcType=VARCHAR},
       </if>
+      <if test="record.promoterId != null">
+        promoter_id = #{record.promoterId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.shareProportion != null">
+        share_proportion_ = #{record.shareProportion,jdbcType=VARCHAR},
+      </if>
     </set>
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -369,6 +389,8 @@
       real_amount = #{record.realAmount,jdbcType=DECIMAL},
       gift_integration = #{record.giftIntegration,jdbcType=INTEGER},
       gift_growth = #{record.giftGrowth,jdbcType=INTEGER},
+      promoter_id = #{record.promoterId,jdbcType=INTEGER},
+      share_proportion_ = #{record.shareProportion},
       product_attr = #{record.productAttr,jdbcType=VARCHAR}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -437,6 +459,12 @@
       <if test="productAttr != null">
         product_attr = #{productAttr,jdbcType=VARCHAR},
       </if>
+      <if test="promoterId != null">
+        promoter_id = #{promoterId,jdbcType=VARCHAR},
+      </if>
+      <if test="shareProportion != null">
+        share_proportion_ = #{shareProportion,jdbcType=VARCHAR},
+      </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
@@ -461,6 +489,8 @@
       real_amount = #{realAmount,jdbcType=DECIMAL},
       gift_integration = #{giftIntegration,jdbcType=INTEGER},
       gift_growth = #{giftGrowth,jdbcType=INTEGER},
+      promoter_id = #{promoterId,jdbcType=INTEGER},
+    share_proportion_ = #{shareProportion},
       product_attr = #{productAttr,jdbcType=VARCHAR}
     where id = #{id,jdbcType=BIGINT}
   </update>

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

@@ -48,6 +48,7 @@
     <result column="comment_time" jdbcType="TIMESTAMP" property="commentTime" />
     <result column="modify_time" jdbcType="TIMESTAMP" property="modifyTime" />
     <result column="platform_type" jdbcType="TIMESTAMP" property="platformType" />
+    <result column="after_sale"  property="afterSale" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -114,7 +115,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,cart_ids,platform_type
+    use_integration, payment_time, delivery_time, receive_time, comment_time, modify_time,cart_ids,platform_type,after_sale
   </sql>
   <select id="selectByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderExample" resultMap="BaseResultMap">
     select
@@ -164,7 +165,7 @@
       receiver_detail_address, note, confirm_status, 
       delete_status, use_integration, payment_time, 
       delivery_time, receive_time, comment_time, 
-      modify_time,cart_ids,platform_type)
+      modify_time,cart_ids,platform_type,after_sale)
     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}, 
@@ -179,7 +180,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},#{cartIds},#{platformType})
+      #{modifyTime,jdbcType=TIMESTAMP},#{cartIds},#{platformType},#{afterSale})
   </insert>
   <insert id="insertSelective" parameterType="com.yonge.cooleshow.mbg.model.OmsOrder">
     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
@@ -322,6 +323,9 @@
       <if test="platformType != null">
         platform_type,
       </if>
+      <if test="afterSale != null">
+        after_sale,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="memberId != null">
@@ -459,6 +463,9 @@
       <if test="platformType != null">
         #{platformType},
       </if>
+      <if test="afterSale != null">
+        #{afterSale},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderExample" resultType="java.lang.Long">
@@ -608,6 +615,9 @@
       <if test="record.platformType != null">
         platform_type = #{record.platformType},
       </if>
+      <if test="record.afterSale != null">
+        after_sale = #{record.afterSale},
+      </if>
     </set>
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -660,6 +670,7 @@
       comment_time = #{record.commentTime,jdbcType=TIMESTAMP},
       cart_ids = #{record.cartIds},
       platform_type = #{record.platformType},
+      after_sale = #{record.afterSale},
       modify_time = #{record.modifyTime,jdbcType=TIMESTAMP}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -803,6 +814,9 @@
       <if test="platformType != null">
         platform_type = #{platformType},
       </if>
+      <if test="afterSale != null">
+        after_sale = #{afterSale},
+      </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
@@ -852,6 +866,7 @@
       comment_time = #{commentTime,jdbcType=TIMESTAMP},
       cart_ids = #{cartIds},
       platform_type = #{platformType},
+      after_sale = #{afterSale},
       modify_time = #{modifyTime,jdbcType=TIMESTAMP}
     where id = #{id,jdbcType=BIGINT}
   </update>

+ 5 - 0
cooleshow-mall/mall-portal/pom.xml

@@ -85,6 +85,11 @@
             <version>1.0</version>
         </dependency>
         <dependency>
+            <groupId>com.yonge.cooleshow</groupId>
+            <artifactId>cooleshow-api</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
             <groupId>com.yonge.toolset</groupId>
             <artifactId>toolset-payment</artifactId>
             <version>${project.toolset.version}</version>

+ 2 - 2
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/config/ResourceServerConfig.java

@@ -27,8 +27,8 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
             .authorizeRequests().antMatchers("/task/**").hasIpAddress("0.0.0.0/0")
                 .and()
                 .authorizeRequests().antMatchers("/wechat/*","/v2/api-docs", "/code/*","/payment/callback/**",
-                 "/order/paySuccess/test","/order/cancelUserOrder/test")
-            .permitAll().anyRequest().permitAll().and().httpBasic();
+                 "/order/paySuccess/test","/order/cancelUserOrder/test","/open/**","/task/**")
+            .permitAll().anyRequest().authenticated().and().httpBasic();
     }
 
     @Override

+ 8 - 1
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java

@@ -144,7 +144,14 @@ public class OmsPortalOrderController {
     @RequestMapping(value = "/confirmReceiveOrder", method = RequestMethod.POST)
     @ResponseBody
     public CommonResult confirmReceiveOrder(Long orderId) {
-        portalOrderService.confirmReceiveOrder(orderId);
+        OmsOrder omsOrder = portalOrderService.getOrderById(orderId);
+        if (omsOrder == null) {
+            return CommonResult.failed("未找到订单");
+        }
+
+        DistributedLock.of(redissonClient)
+                       .runIfLockCanGet(OrderCacheEnum.LOCK_ORDER_NO_MALL.getRedisKey(omsOrder.getOrderSn())
+                               , () -> portalOrderService.confirmReceiveOrder(orderId), 60L, TimeUnit.SECONDS);
         return CommonResult.success(null);
     }
 

+ 3 - 2
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/open/OpenShareController.java

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
+import com.yonge.cooleshow.portal.dto.ShareProductVo;
 import com.yonge.cooleshow.portal.dto.ShareProfitParam;
 import com.yonge.cooleshow.portal.service.PmsPortalProductService;
 import com.yonge.toolset.base.util.StringUtil;
@@ -19,7 +20,7 @@ import javax.annotation.Resource;
 
 @RestController
 @RequestMapping("/open")
-@Api(value = "开放权限接口-分享", hidden = true)
+@Api(tags = "开放权限接口-分享")
 public class OpenShareController extends BaseController {
     private final static Logger log = LoggerFactory.getLogger(OpenShareController.class);
 
@@ -33,7 +34,7 @@ public class OpenShareController extends BaseController {
     @ApiOperation(value = "老师商品分享分润")
     @PostMapping(value="/productProfit")
     @ResponseBody
-    public CommonResult shareProductProfit(@RequestBody ShareProfitParam param) {
+    public CommonResult<ShareProductVo> shareProductProfit(@RequestBody ShareProfitParam param) {
         SysUser sysUser = sysUserFeignService.queryUserById(param.getUserId());
         if (sysUser == null  || sysUser.getId() == null) {
             return CommonResult.failed("用户信息获取失败");

+ 4 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/MemberAttentionService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.portal.service;
 
 import com.yonge.cooleshow.portal.domain.MemberBrandAttention;
 import org.springframework.data.domain.Page;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 会员品牌关注管理Service
@@ -11,11 +12,13 @@ public interface MemberAttentionService {
     /**
      * 添加关注
      */
+    @Transactional
     int add(MemberBrandAttention memberBrandAttention);
 
     /**
      * 取消关注
      */
+    @Transactional
     int delete(Long brandId);
 
     /**
@@ -31,5 +34,6 @@ public interface MemberAttentionService {
     /**
      * 清空关注列表
      */
+    @Transactional
     void clear();
 }

+ 4 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/MemberCollectionService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.portal.service;
 
 import com.yonge.cooleshow.portal.domain.MemberProductCollection;
 import org.springframework.data.domain.Page;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 会员商品收藏管理Service
@@ -11,11 +12,13 @@ public interface MemberCollectionService {
     /**
      * 添加收藏
      */
+    @Transactional
     int add(MemberProductCollection productCollection);
 
     /**
      * 删除收藏
      */
+    @Transactional
     int delete(Long productId);
 
     /**
@@ -31,5 +34,6 @@ public interface MemberCollectionService {
     /**
      * 清空收藏
      */
+    @Transactional
     void clear();
 }

+ 4 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/MemberReadHistoryService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.portal.service;
 
 import com.yonge.cooleshow.portal.domain.MemberReadHistory;
 import org.springframework.data.domain.Page;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -13,11 +14,13 @@ public interface MemberReadHistoryService {
     /**
      * 生成浏览记录
      */
+    @Transactional
     int create(MemberReadHistory memberReadHistory);
 
     /**
      * 批量删除浏览记录
      */
+    @Transactional
     int delete(List<String> ids);
 
     /**
@@ -28,5 +31,6 @@ public interface MemberReadHistoryService {
     /**
      * 清空浏览记录
      */
+    @Transactional
     void clear();
 }

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

@@ -32,11 +32,13 @@ public interface OmsCartItemService {
     /**
      * 修改某个购物车商品的数量
      */
+    @Transactional
     int updateQuantity(Long id, Long memberId, Integer quantity);
 
     /**
      * 批量删除购物车中的商品
      */
+    @Transactional
     int delete(Long memberId,List<Long> ids);
 
     /**
@@ -53,6 +55,7 @@ public interface OmsCartItemService {
     /**
      * 清空购物车
      */
+    @Transactional
     int clear(Long memberId);
 
     OmsCartItem get(Long id);

+ 5 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderReturnApplyService.java

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.portal.dto.OmsOrderReturnApplyVo;
 import com.yonge.cooleshow.portal.dto.OmsReturnApplyDto;
 import com.yonge.cooleshow.portal.dto.OmsReturnApplyQueryParam;
 import com.yonge.toolset.payment.base.model.callback.PaymentCallBack;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -17,12 +18,14 @@ public interface OmsPortalOrderReturnApplyService {
     /**
      * 提交申请
      */
+    @Transactional
     int create(OmsOrderReturnApplyParam returnApply);
 
     /**
      * 取消申请
      *
      */
+    @Transactional
     int delete(Long id);
 
     OmsOrderReturnApplyResult getItem(Long id);
@@ -30,7 +33,9 @@ public interface OmsPortalOrderReturnApplyService {
     List<OmsOrderReturnApplyVo> list(OmsReturnApplyQueryParam queryParam, Integer pageSize, Integer pageNum);
 
     /** 设置退货单号 */
+    @Transactional
     void setDeliverySn(OmsReturnApplyDto applyDto);
 
+    @Transactional
     void refundPaymentCallBack(PaymentCallBack data);
 }

+ 15 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java

@@ -111,4 +111,19 @@ public interface OmsPortalOrderService {
     void closePaymentCallBack(PaymentCallBack data);
 
 
+    /**
+     * 设置自动收货
+     *
+     * @return
+     */
+    @Transactional
+    Integer autoReceive();
+
+    /**
+     * 设置分润,不可申请售后
+     *
+     * @return
+     */
+    @Transactional
+    Integer shareProfit();
 }

+ 2 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/UmsMemberReceiveAddressService.java

@@ -13,12 +13,14 @@ public interface UmsMemberReceiveAddressService {
     /**
      * 添加收货地址
      */
+    @Transactional
     int add(UmsMemberReceiveAddress address);
 
     /**
      * 删除收货地址
      * @param id 地址表的id
      */
+    @Transactional
     int delete(Long id);
 
     /**

+ 3 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsCartItemServiceImpl.java

@@ -87,6 +87,9 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
             cartItemMapper.insert(cartItem);
             return cartItem;
         } else {
+            if (cartItem.getPromoterId() != null) {
+                existCartItem.setPromoterId(cartItem.getPromoterId());
+            }
             if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < existCartItem.getQuantity() + cartItem.getQuantity()) {
                 throw new BizException("库存不足");
             }

+ 135 - 5
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -4,6 +4,11 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.github.pagehelper.PageHelper;
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
+import com.yonge.cooleshow.common.entity.ContractDto;
 import com.yonge.cooleshow.common.service.IdGeneratorService;
 import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
@@ -34,6 +39,7 @@ import com.yonge.toolset.payment.util.DistributedLock;
 import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -41,7 +47,8 @@ import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -91,6 +98,8 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     private CancelOrderSender cancelOrderSender;
 
     @Autowired
+    private AdminFeignService adminFeignService;
+    @Autowired
     private UserOrderPaymentService userOrderPaymentService;
 
     @Autowired(required = true)
@@ -108,6 +117,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     @Autowired
     private RedissonClient redissonClient;
 
+
     @Autowired
     private PortalProductDao productDao;
 
@@ -161,6 +171,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             orderItem.setPromotionName(cartPromotionItem.getPromotionMessage());
             orderItem.setGiftIntegration(cartPromotionItem.getIntegration());
             orderItem.setGiftGrowth(cartPromotionItem.getGrowth());
+            orderItem.setPromoterId(cartPromotionItem.getPromoterId());
             orderItemList.add(orderItem);
         }
         //判断购物车中商品是否都有库存
@@ -320,9 +331,55 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         // 减商品库存
         updateProductStock(orderDetail);
 
+        // 查询订单
+        OmsOrderDetail detail = detail(orderId);
+
+        // 设置平台收入和分润
+        setPromoterRecord(detail,PostStatusEnum.WAIT);
+
+        // 签协议
+        adminFeignService.contractRecord(new ContractDto(orderDetail.getPlatformType(),orderDetail.getMemberId()));
+
         return count;
     }
 
+    private void setPromoterRecord(OmsOrderDetail detail,PostStatusEnum status) {
+
+        List<OmsOrderItem> orderItemList = detail.getOrderItemList();
+
+        // orderItemList = orderItemList.stream().filter(omsOrderItem -> omsOrderItem.getPromoterId() != null).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(orderItemList) ) {
+            return;
+        }
+
+        List<MallOrderItemDto> list = new ArrayList<>();
+        for (OmsOrderItem omsOrderItem : orderItemList) {
+            if (omsOrderItem.getReturnStatus() != -1) {
+                continue;
+            }
+            MallOrderItemDto teacherShareDto = new MallOrderItemDto();
+            BeanUtils.copyProperties(omsOrderItem,teacherShareDto);
+            teacherShareDto.setRealAmount(omsOrderItem.getRealAmount().multiply(BigDecimal.valueOf(omsOrderItem.getProductQuantity())));
+            teacherShareDto.setStatus(status);
+            teacherShareDto.setUserId(detail.getMemberId());
+            list.add(teacherShareDto);
+        }
+        if (CollectionUtils.isEmpty(list)) {
+            return;
+        }
+        HttpResponseResult<Boolean> result;
+        if (status.equals(PostStatusEnum.WAIT)) {
+            result = adminFeignService.mallRecord(list);
+        } else {
+            result = adminFeignService.mallRecordState(list);
+        }
+        if (result.getStatus()) {
+            LOG.debug("分润记录写入成功,json: {}",JSON.toJSONString(list));
+        } else {
+            LOG.error("分润记录写入失败,json: {}",JSON.toJSONString(list));
+        }
+    }
+
     /**
      * 减商品库存
      */
@@ -439,18 +496,21 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
 
     @Override
     public void confirmReceiveOrder(Long orderId) {
-        UmsMember member = memberService.getCurrentMember();
+        // UmsMember member = memberService.getCurrentMember();
         OmsOrder order = orderMapper.selectByPrimaryKey(orderId);
-        if (!member.getId().equals(order.getMemberId())) {
-            Asserts.fail("不能确认他人订单!");
-        }
+        // if (!member.getId().equals(order.getMemberId())) {
+        //     Asserts.fail("不能确认他人订单!");
+        // }
         if (order.getStatus() != 2) {
             Asserts.fail("该订单还未发货!");
+        }else if (order.getStatus() == 3) {
+            Asserts.fail("已确认收货!");
         }
         order.setStatus(3);
         order.setConfirmStatus(1);
         order.setReceiveTime(new Date());
         orderMapper.updateByPrimaryKey(order);
+
     }
 
     @Override
@@ -713,6 +773,75 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         }
     }
 
+    @Override
+    public Integer autoReceive() {
+        OmsOrderSetting omsOrderSetting = orderSettingMapper.selectByPrimaryKey(1L);
+        Integer confirmOvertime = omsOrderSetting.getConfirmOvertime();
+        LocalDateTime localDateTime = LocalDateTime.now().plusDays(-confirmOvertime);
+        OmsOrderExample orderExample = new OmsOrderExample();
+        orderExample.createCriteria().andStatusEqualTo(2).andDeleteStatusEqualTo(0).andConfirmStatusEqualTo(0)
+                .andDeliveryTimeLessThanOrEqualTo(Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()));
+
+        List<OmsOrder> omsOrders = orderMapper.selectByExample(orderExample);
+        if (CollectionUtils.isEmpty(omsOrders)) {
+            return 0;
+        }
+        for (OmsOrder omsOrder : omsOrders) {
+
+            DistributedLock.of(redissonClient)
+                           .runIfLockCanGet(OrderCacheEnum.LOCK_ORDER_NO_MALL.getRedisKey(omsOrder.getOrderSn())
+                                   , () -> {
+                                       this.confirmReceiveOrder(omsOrder.getId());
+                                   }, 60L, TimeUnit.SECONDS);
+        }
+        return omsOrders.size();
+
+    }
+
+    @Override
+    public Integer shareProfit() {
+        OmsOrderSetting omsOrderSetting = orderSettingMapper.selectByPrimaryKey(1L);
+        Integer finishOvertime = omsOrderSetting.getFinishOvertime();
+        LocalDateTime localDateTime = LocalDateTime.now().plusDays(-finishOvertime);
+        OmsOrderExample orderExample = new OmsOrderExample();
+        orderExample.createCriteria().andStatusEqualTo(3).andDeleteStatusEqualTo(0).andConfirmStatusEqualTo(1)
+                .andAfterSaleEqualTo(0)
+                .andReceiverCityIsNotNull()
+                    .andReceiveTimeLessThan(Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()));
+
+        List<OmsOrder> omsOrders = orderMapper.selectByExample(orderExample);
+        if (CollectionUtils.isEmpty(omsOrders)) {
+            return 0;
+        }
+        for (OmsOrder omsOrder : omsOrders) {
+
+            DistributedLock.of(redissonClient)
+                           .runIfLockCanGet(OrderCacheEnum.LOCK_ORDER_NO_MALL.getRedisKey(omsOrder.getOrderSn())
+                                   , () -> {
+                                       this.FinishReceiveOrder(omsOrder.getId());
+                                   }, 60L, TimeUnit.SECONDS);
+        }
+        return omsOrders.size();
+    }
+
+    private void FinishReceiveOrder(Long orderId) {
+
+        // UmsMember member = memberService.getCurrentMember();
+        OmsOrder order = orderMapper.selectByPrimaryKey(orderId);
+        // if (!member.getId().equals(order.getMemberId())) {
+        //     Asserts.fail("不能确认他人订单!");
+        // }
+         if (order.getStatus() != 3) {
+            Asserts.fail("未确认收货!");
+        }
+        order.setAfterSale(1);
+        orderMapper.updateByPrimaryKey(order);
+
+
+        // 设置平台收入和分润 实际收款
+        setPromoterRecord(detail(orderId), PostStatusEnum.RECORDED);
+    }
+
 
     /***
      * 处理回调-支付成功
@@ -925,6 +1054,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             }
         }
         userOrderPaymentService.saveOrUpdate(orderPayment);
+
     }
 
 

+ 21 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/task/OrderTimeOutCancelTask.java

@@ -31,4 +31,25 @@ public class OrderTimeOutCancelTask {
         LOGGER.info("取消订单,并根据sku编号释放锁定库存,取消订单数量:{}",count);
         return HttpResponseResult.succeed();
     }
+
+    /**
+     * 发货多少天后自动收货
+     */
+    @GetMapping("/autoReceive")
+    public HttpResponseResult autoReceive(){
+        Integer count = portalOrderService.autoReceive();
+        LOGGER.info("自动收货:{}",count);
+        return HttpResponseResult.succeed();
+    }
+
+
+    /**
+     * 收货多少天后分润
+     */
+    @GetMapping("/shareProfit")
+    public HttpResponseResult shareProfit(){
+        Integer count = portalOrderService.shareProfit();
+        LOGGER.info("自动分润:{}",count);
+        return HttpResponseResult.succeed();
+    }
 }

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

@@ -9,11 +9,7 @@
     </resultMap>
     <select id="getDetail" resultMap="orderDetailMap">
         SELECT
-            o.id,
-            o.order_sn,
-            o.coupon_id,
-            o.integration,
-            o.member_id,
+            o.*,
             ot.id ot_id,
         ot.product_id ot_product_id,
             ot.product_name ot_product_name,

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

@@ -7,7 +7,7 @@
         product_sn, product_price, product_quantity,
         product_sku_id, product_category_id, product_sku_code,promotion_name,
         promotion_amount, coupon_amount, integration_amount,
-        real_amount,product_attr) values
+        real_amount,product_attr,promoter_id,share_proportion_) values
         <foreach collection="list" item="item" separator="," index="index">
             (#{item.orderId,jdbcType=BIGINT}, #{item.orderSn,jdbcType=VARCHAR}, #{item.productId,jdbcType=BIGINT},
             #{item.productPic,jdbcType=VARCHAR}, #{item.productName,jdbcType=VARCHAR}, #{item.productBrand,jdbcType=VARCHAR},
@@ -16,7 +16,7 @@
             #{item.promotionName,jdbcType=VARCHAR},
             #{item.promotionAmount,jdbcType=DECIMAL}, #{item.couponAmount,jdbcType=DECIMAL},
             #{item.integrationAmount,jdbcType=DECIMAL},
-            #{item.realAmount,jdbcType=DECIMAL},#{item.productAttr,jdbcType=VARCHAR})
+            #{item.realAmount,jdbcType=DECIMAL},#{item.productAttr,jdbcType=VARCHAR},#{item.promoterId},#{item.shareProportion})
         </foreach>
     </insert>
 </mapper>

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

@@ -0,0 +1,22 @@
+package com.yonge.cooleshow.task.jobs;
+
+import com.yonge.cooleshow.api.feign.MallPortalFeignService;
+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;
+
+/**
+ * 自动收货
+ */
+@Service
+public class MallAutoReceiveTask extends BaseTask {
+
+    @Autowired
+    private MallPortalFeignService mallPortalFeignService;
+
+    @Override
+    public void execute() throws TaskException {
+        Object o = mallPortalFeignService.autoReceive();
+    }
+}

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

@@ -0,0 +1,22 @@
+package com.yonge.cooleshow.task.jobs;
+
+import com.yonge.cooleshow.api.feign.MallPortalFeignService;
+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;
+
+/**
+ * 自动分润
+ */
+@Service
+public class MallShareProfitTask extends BaseTask {
+
+    @Autowired
+    private MallPortalFeignService mallPortalFeignService;
+
+    @Override
+    public void execute() throws TaskException {
+        Object o = mallPortalFeignService.shareProfit();
+    }
+}

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

@@ -3,7 +3,6 @@ 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.common.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.req.TeacherMusicSheetAuditReq;
@@ -243,7 +242,8 @@ public class MusicSheetController extends BaseController {
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
-        return status(musicSheetService.sendBuyMessage(param.getTeacherId(),param.getStudentId(),param.getMusicSheetId()));
+        return status(musicSheetService.sendBuyMessage(param.getTeacherId(), param.getStudentId(), param.getMusicSheetId(),
+                                                       ClientEnum.STUDENT));
     }
     /**
      * 导入

+ 44 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/PlatformCashAccountRecordController.java

@@ -0,0 +1,44 @@
+package com.yonge.cooleshow.admin.controller;
+
+import com.yonge.cooleshow.biz.dal.vo.PlatformCashAccountPageVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import javax.validation.Valid;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.ui.ModelMap;
+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 com.yonge.cooleshow.biz.dal.dto.search.PlatformCashAccountRecordSearch;
+import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
+import com.yonge.cooleshow.biz.dal.service.PlatformCashAccountRecordService;
+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.mybatis.support.PageUtil;
+
+@RestController
+@RequestMapping("/platformCashAccountRecord")
+@Api(value = "平台账户记录", tags = "平台账户记录")
+public class PlatformCashAccountRecordController extends BaseController {
+
+    @Autowired
+    private PlatformCashAccountRecordService platformCashAccountRecordService;
+
+	@ApiOperation(value = "平台账户记录-列表", httpMethod = "POST", consumes = "application/json", produces = "application/json")
+	@PostMapping(value = "/list", consumes = "application/json", produces = "application/json")
+	@PreAuthorize("@pcs.hasPermissions('platformCashAccountRecord/list')")
+	public HttpResponseResult<PlatformCashAccountPageVo> list(@Valid @RequestBody PlatformCashAccountRecordSearch query) {
+		PlatformCashAccountPageVo model = new PlatformCashAccountPageVo();
+		PageInfo<PlatformCashAccountRecord> pageInfo = PageUtil.pageInfo(platformCashAccountRecordService.queryPage(PageUtil.getPage(query),query));
+		model.setPageInfo(pageInfo);
+		model.setSummary(platformCashAccountRecordService.querySummary(query));
+		return succeed(model);
+	}
+
+}

+ 0 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SysUserContractRecordController.java

@@ -44,6 +44,5 @@ public class SysUserContractRecordController extends BaseController {
         IPage<SysUserContractRecordVo> pages = sysUserContractRecordService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
     }
-
 }
 

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

@@ -1,14 +1,17 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.biz.dal.service.UserAccountService;
+import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import io.swagger.annotations.*;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 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.UserAccountVo;
-import com.yonge.cooleshow.biz.dal.service.UserAccountService;
+import java.util.List;
 
 @RestController
 @RequestMapping("/userAccount")
@@ -27,4 +30,7 @@ public class UserAccountController extends BaseController {
     public HttpResponseResult<UserAccountVo> detail(@PathVariable("id") Long id) {
     	return succeed(userAccountService.detail(id));
 	}
+
+
+
 }

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

@@ -2,12 +2,18 @@ package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.req.TotalReq;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
+import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
+import com.yonge.cooleshow.biz.dal.vo.res.AccountTotal;
 import com.yonge.toolset.mybatis.support.PageUtil;
 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.*;
 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.*;
 
@@ -15,6 +21,8 @@ import com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo;
 import com.yonge.cooleshow.biz.dal.dto.search.UserAccountRecordSearch;
 import com.yonge.cooleshow.biz.dal.service.UserAccountRecordService;
 
+import javax.validation.Valid;
+
 @RestController
 @RequestMapping("/userAccountRecord")
 @Api(value = "用户账户流水表", tags = "用户账户流水表")
@@ -40,8 +48,17 @@ public class UserAccountRecordController extends BaseController {
     @ApiOperation(value = "查询分页", notes = "传入userAccountRecordSearch")
     @PreAuthorize("@pcs.hasPermissions('userAccountRecord/page')")
     public HttpResponseResult<PageInfo<UserAccountRecordVo>> page(@RequestBody UserAccountRecordSearch query) {
+        query.setInOrOut(InOrOutEnum.IN);
 		IPage<UserAccountRecordVo> pages = userAccountRecordService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
 	}
 
+    @ApiOperation(value = "收入数据统计")
+    @PostMapping("/accountTotal")
+    @PreAuthorize("@pcs.hasPermissions('userAccountRecord/accountTotal')")
+    public HttpResponseResult<UserAccountVo> accountTotal(@RequestBody UserAccountRecordSearch query) {
+        query.setInOrOut(InOrOutEnum.IN);
+        return userAccountRecordService.accountTotal(query);
+    }
+
 }

+ 48 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/OpenUserAccountController.java

@@ -0,0 +1,48 @@
+package com.yonge.cooleshow.admin.controller.open;
+
+import com.yonge.cooleshow.biz.dal.service.UserAccountService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
+import io.swagger.annotations.Api;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+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 java.util.List;
+
+@RestController
+@RequestMapping("/open")
+@Api(value = "开放权限接口", tags = "开放权限接口")
+public class OpenUserAccountController extends BaseController {
+    private final static Logger log = LoggerFactory.getLogger(OpenUserAccountController.class);
+
+
+
+    @Autowired
+    private UserAccountService userAccountService;
+
+
+    /**
+     * 设置商城收入分润
+     */
+    @PostMapping("/mallRecord")
+    public HttpResponseResult<Boolean> mallRecord(@RequestBody List<MallOrderItemDto> shareDto ) {
+        return succeed(userAccountService.saveMallAccountRecord(shareDto));
+    }
+
+
+
+    /**
+     * 设置商城收入状态
+     */
+    @PostMapping("/mallRecordState")
+    public HttpResponseResult<Boolean> mallRecordState(@RequestBody List<MallOrderItemDto> shareDto ) {
+        userAccountService.mallTeacherRecordState(shareDto);
+        return succeed();
+    }
+}

+ 19 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserOrderClient.java

@@ -3,6 +3,8 @@ package com.yonge.cooleshow.admin.controller.open;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.yonge.cooleshow.biz.dal.entity.UserOrderPayment;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderRefundBill;
+import com.yonge.cooleshow.common.entity.ContractDto;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
 import com.yonge.cooleshow.biz.dal.service.UserOrderPaymentService;
@@ -155,4 +157,21 @@ public class UserOrderClient extends BaseController {
         userOrderService.setOrderStatus(orderNo, orderStatus);
         return succeed(true);
     }
+
+    @GetMapping("/orderRefound")
+    @ApiOperation(value = "退款(测试用)")
+    public HttpResponseResult<UserOrderRefundBill> orderRefound(
+            @RequestParam("orderNo") String orderNo) {
+        return userOrderRefundService.orderRefound(orderNo);
+    }
+
+    /**
+     * 签协议 商城调用
+     */
+    @PostMapping("/contractRecord")
+    @ApiOperation(value = "签协议 商城调用", notes = "签协议 商城调用")
+    public HttpResponseResult<Boolean> contractRecord(@RequestBody ContractDto contract) {
+        paymentService.setContractRecord(contract.getType(),contract.getUserId());
+        return succeed(true);
+    }
 }

+ 5 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/task/TaskController.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.task;
 
+import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.wordfilter.WordContext;
 import com.yonge.cooleshow.biz.dal.wordfilter.WordFilter;
@@ -36,6 +37,8 @@ public class TaskController extends BaseController {
     private UserAccountRecordService userAccountRecordService;
     @Autowired
     private RedissonClient redissonClient;
+    @Autowired
+    private PlatformCashAccountRecordService platformCashAccountRecordService;
 
     /***
      * 轮询用户订单
@@ -59,6 +62,8 @@ public class TaskController extends BaseController {
     public HttpResponseResult<Boolean> daysTask() {
         //超过天数无琴房课的解除绑定关系
         userBindingTeacherService.unbindTask();
+        //平台老师结算
+        platformCashAccountRecordService.updateWaitRecord();
         return succeed(true);
     }
 

+ 19 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/PlatformCashAccountRecordDao.java

@@ -1,7 +1,12 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.search.PlatformCashAccountRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
+import com.yonge.cooleshow.biz.dal.vo.PlatformCashAccountRecordSummaryVo;
+
+import io.swagger.models.auth.In;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -15,5 +20,19 @@ import java.util.List;
 public interface PlatformCashAccountRecordDao extends BaseMapper<PlatformCashAccountRecord> {
 
     int insertBatch(@Param("entities") List<PlatformCashAccountRecord> entities);
+    
+    int batchUpdate(List<PlatformCashAccountRecord> list);
+
+    IPage<PlatformCashAccountRecord> queryPage(@Param("page") IPage<PlatformCashAccountRecord> page, @Param("param") PlatformCashAccountRecordSearch query);
+
+    PlatformCashAccountRecordSummaryVo querySummary(@Param("param") PlatformCashAccountRecordSearch query);
+
+    List<PlatformCashAccountRecord> queryCanAccountByBizType(@Param("bizTypes")List<String> bizTypes);
+
+    List<PlatformCashAccountRecord> queryByBizTypeAndPaymentDays(@Param("bizType")String bizType, @Param("paymentDays")int paymentDays);
+
+    Integer cancelRecord(@Param("orderNo")String orderNo,@Param("bizType") String bizType, @Param("bizId") Long bizId);
+
+    Integer mallRecordedRecord(@Param("orderNo")String orderNo,@Param("bizType") String bizType, @Param("bizId") Long bizId);
 }
 

+ 71 - 59
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserAccountDao.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto;
 import com.yonge.cooleshow.biz.dal.dto.req.TotalReq;
 import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
+import com.yonge.cooleshow.biz.dal.vo.res.AccountShareTotal;
 import com.yonge.cooleshow.biz.dal.vo.res.AccountTotal;
 import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.biz.dal.entity.UserAccount;
@@ -15,70 +16,81 @@ import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
 import com.yonge.cooleshow.biz.dal.dto.search.UserAccountSearch;
 
 
-public interface UserAccountDao extends BaseMapper<UserAccount>{
-	/**
-	 * 查询详情
+public interface UserAccountDao extends BaseMapper<UserAccount> {
+    /**
+     * 查询详情
+     *
      * @author liweifan
      * @date 2022-03-30 13:53:51
      * @return: com.yonge.cooleshow.biz.dal.vo.UserAccountVo
-	 */
-	UserAccountVo detail(@Param("id") Long id);
+     */
+    UserAccountVo detail(@Param("id") Long id);
 
-	/**
-	 * 分页查询
+    /**
+     * 分页查询
+     *
      * @author liweifan
      * @date 2022-03-30 13:53:51
      * @return: com.yonge.cooleshow.biz.dal.vo.UserAccountVo
-	 */
-	List<UserAccountVo> selectPage(@Param("page") IPage page, @Param("param") UserAccountSearch userAccount);
-	/***
-	 * 账户变更(冻结)
-	 * @author liweifan
-	 * @param: userId
-	 * @param: transAmount
-	 * @updateTime 2022/4/7 17:54
-	 * @return: java.lang.Integer
-	 */
-    Integer frozenChangeAccount(@Param("userId") Long userId, @Param("transAmount") BigDecimal transAmount,@Param("inOrOut") String inOrOut);
-	/***
-	 * 账户变更(冻结后交易成功)
-	 * @author liweifan
-	 * @param: userId
-	 * @param: transAmount
-	 * @updateTime 2022/4/7 17:54
-	 * @return: java.lang.Integer
-	 */
-	Integer frozenDeductChangeAccount(@Param("userId") Long userId, @Param("transAmount") BigDecimal transAmount,@Param("inOrOut") String inOrOut);
-	/***
-	 * 账户变更(冻结后交易退回)
-	 * @author liweifan
-	 * @param: userId
-	 * @param: transAmount
-	 * @updateTime 2022/4/7 17:54
-	 * @return: java.lang.Integer
-	 */
-	Integer frozenBackChangeAccount(@Param("userId") Long userId, @Param("transAmount") BigDecimal transAmount,@Param("inOrOut") String inOrOut);
-	/***
-	 * 账户变更(余额)
-	 * @author liweifan
-	 * @param: userId
-	 * @param: transAmount
-	 * @updateTime 2022/4/7 19:11
-	 * @return: java.lang.Integer
-	 */
-	Integer changeAccount(@Param("userId") Long userId, @Param("transAmount") BigDecimal transAmount,@Param("inOrOut") String inOrOut);
-	/***
-	 * 收入统计
-	 * @author liweifan
-	 * @param: totalReq
-	 * @updateTime 2022/4/24 13:53
-	 * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.res.AccountTotal>
-	 */
-    List<AccountTotal> accountTotal(@Param("timeType")String timeType,@Param("param")TotalReq totalReq);
-	/**
-	 * 统计本次变更前已经变更的金额
-	 * @param accountRecordDto
-	 * @return
-	 */
-    BigDecimal totalTransAmount(@Param("param") UserAccountRecordDto accountRecordDto);
+     */
+    List<UserAccountVo> selectPage(@Param("page") IPage page, @Param("param") UserAccountSearch userAccount);
+
+    /***
+     * 账户变更(冻结)
+     * @author liweifan
+     * @param: userId
+     * @param: transAmount
+     * @updateTime 2022/4/7 17:54
+     * @return: java.lang.Integer
+     */
+    Integer frozenChangeAccount(@Param("userId") Long userId, @Param("transAmount") BigDecimal transAmount, @Param("inOrOut") String inOrOut);
+
+    /***
+     * 账户变更(冻结后交易成功)
+     * @author liweifan
+     * @param: userId
+     * @param: transAmount
+     * @updateTime 2022/4/7 17:54
+     * @return: java.lang.Integer
+     */
+    Integer frozenDeductChangeAccount(@Param("userId") Long userId, @Param("transAmount") BigDecimal transAmount, @Param("inOrOut") String inOrOut);
+
+    /***
+     * 账户变更(冻结后交易退回)
+     * @author liweifan
+     * @param: userId
+     * @param: transAmount
+     * @updateTime 2022/4/7 17:54
+     * @return: java.lang.Integer
+     */
+    Integer frozenBackChangeAccount(@Param("userId") Long userId, @Param("transAmount") BigDecimal transAmount, @Param("inOrOut") String inOrOut);
+
+    /***
+     * 账户变更(余额)
+     * @author liweifan
+     * @param: userId
+     * @param: transAmount
+     * @updateTime 2022/4/7 19:11
+     * @return: java.lang.Integer
+     */
+    Integer changeAccount(@Param("userId") Long userId, @Param("transAmount") BigDecimal transAmount, @Param("inOrOut") String inOrOut);
+
+    /***
+     * 收入统计
+     * @author liweifan
+     * @param: totalReq
+     * @updateTime 2022/4/24 13:53
+     * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.res.AccountTotal>
+     */
+    List<AccountTotal> accountTotal(@Param("timeType") String timeType, @Param("param") TotalReq totalReq);
+
+    /**
+     * 统计本次变更前已经变更的金额
+     *
+     * @param orderNo
+     * @return
+     */
+    BigDecimal totalTransAmountByOrderNo(@Param("orderNo") String orderNo);
+
+    AccountShareTotal accountShareTotal(@Param("param") TotalReq query);
 }

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

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
 import com.yonge.cooleshow.biz.dal.vo.TeacherEarningVo;
+import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.biz.dal.entity.UserAccountRecord;
@@ -41,6 +42,10 @@ public interface UserAccountRecordDao extends BaseMapper<UserAccountRecord> {
 
     List<UserAccountRecordVo> selectAllPage(@Param("param") UserAccountRecordSearch userAccountRecord);
 
+    List<UserAccountRecordVo> sharePage(@Param("page") IPage page, @Param("param") UserAccountRecordSearch userAccountRecord);
+
+    UserAccountVo accountTotal(@Param("param") UserAccountRecordSearch param);
+
     /**
      * app查询详情
      *
@@ -94,4 +99,12 @@ public interface UserAccountRecordDao extends BaseMapper<UserAccountRecord> {
     UserAccountRecordVo detailByBiz(@Param("orderNo") String orderNo,
                                     @Param("bizType") AccountBizTypeEnum bizType,
                                     @Param("bizId") Long bizId);
+
+    /**
+     * 查询老师账户中可以入账的分润记录
+     *
+     * @param bizTypes
+     * @return
+     */
+    List<UserAccountRecord> queryCanAccountByBizType(@Param("bizTypes")List<String> bizTypes);
 }

+ 18 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/UserAccountRecordDto.java

@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * 账户变更传输对象
@@ -18,8 +19,9 @@ import java.math.BigDecimal;
  */
 @ApiModel(value = "UserAccountRecordDto对象", description = "账户变更传输对象")
 public class UserAccountRecordDto extends UserAccountRecord {
+    public UserAccountRecordDto(){}
     public UserAccountRecordDto(Long accountId, PostStatusEnum postStatus, BigDecimal transAmount, InOrOutEnum inOrOut, AccountBizTypeEnum bizType,
-                                Long bizId, String bizName, String orderNo) {
+                                Long bizId, String bizName, String orderNo, Long buyUser) {
         this.setAccountId(accountId);
         this.setPostStatus(postStatus);
         this.setTransAmount(transAmount);
@@ -28,5 +30,20 @@ public class UserAccountRecordDto extends UserAccountRecord {
         this.setBizId(bizId);
         this.setBizName(bizName);
         this.setOrderNo(orderNo);
+        this.setBuyUser(buyUser);
+    }
+
+    public UserAccountRecordDto(Long accountId, PostStatusEnum postStatus, BigDecimal transAmount, InOrOutEnum inOrOut, AccountBizTypeEnum bizType,
+                                Long bizId, String bizName, String orderNo, Long buyUser, Date accountPeriodTime) {
+        this.setAccountId(accountId);
+        this.setPostStatus(postStatus);
+        this.setTransAmount(transAmount);
+        this.setInOrOut(inOrOut);
+        this.setBizType(bizType);
+        this.setBizId(bizId);
+        this.setBizName(bizName);
+        this.setOrderNo(orderNo);
+        this.setBuyUser(buyUser);
+        this.setAccountPeriodTime(accountPeriodTime);
     }
 }

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

@@ -32,7 +32,7 @@ public class OrderReq {
     @ApiModelProperty(value = "订单名称 ", required = true)
     private String orderName;
     @NotNull(message = "订单类型不能为空")
-    @ApiModelProperty(value = "订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端(PINAO_ROOM、琴房时长)", required = true)
+    @ApiModelProperty(value = "订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端(VIP、开通会员 PINAO_ROOM、琴房时长)", required = true)
     private OrderTypeEnum orderType;
     @ApiModelProperty(value = "订单描述信息 ")
     private String orderDesc;
@@ -54,7 +54,7 @@ public class OrderReq {
     public class OrderReqInfo {
         @ApiModelProperty(value = "y用户id", hidden = true)
         private Long userId;
-        @ApiModelProperty(value = "推荐用户id(有推荐人的情况)")
+        @ApiModelProperty(value = "推荐用户id(有推荐人的情况)", hidden = true)
         private Long recomUserId;
         @ApiModelProperty(value = "订单号", hidden = true)
         private String orderNo;

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

@@ -30,6 +30,9 @@ public class MusicAlbumSearch extends QueryInfo{
     @ApiModelProperty("专辑状态0:停用,1:启用")
     private YesOrNoEnum albumStatus;
 
+    @ApiModelProperty("登录用户id")
+    private Long userId;
+
 
     @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)",hidden = true)
     private YesOrNoEnum auditVersion;
@@ -49,6 +52,13 @@ public class MusicAlbumSearch extends QueryInfo{
     @ApiModelProperty(hidden = true)
     private List<Long> subjectIdList;
 
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
 
     public String getSubjectIds() {
         return subjectIds;

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

@@ -0,0 +1,90 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+import com.yonge.toolset.base.page.QueryInfo;
+
+public class PlatformCashAccountRecordSearch extends QueryInfo {
+
+	@ApiModelProperty("关联订单号")
+	private String orderNo;
+	
+	@ApiModelProperty("业务编号")
+	private Long bizId;
+	
+	@ApiModelProperty("收支类型(IN-收入  OUT-支出)")
+	private String inOrOut;
+
+	@ApiModelProperty("业务类型:PRACTICE、陪练课 LIVE、直播课 VIDEO、视频课 MUSIC、乐谱 WITHDRAWAL、提现 LIVE_SHARE、直播课分润 VIDEO_SHARE、视频课分润 MUSIC_SHARE、乐谱分润 VIP_SHARE、会员分润 MALL_SHARE、商品分润 ")
+	private AccountBizTypeEnum bizType;
+
+	@ApiModelProperty(value = "入账状态 WAIT 待入账 FROZEN 冻结入账 RECORDED 已入账 CANCEL 退费 ")
+	private PostStatusEnum postStatus;
+
+	@ApiModelProperty("记录开始时间")
+	private Date startDate;
+	
+	@ApiModelProperty("记录结束时间")
+	private Date endDate;
+
+	public String getOrderNo() {
+		return orderNo;
+	}
+
+	public void setOrderNo(String orderNo) {
+		this.orderNo = orderNo;
+	}
+
+	public Long getBizId() {
+		return bizId;
+	}
+
+	public void setBizId(Long bizId) {
+		this.bizId = bizId;
+	}
+
+	public String getInOrOut() {
+		return inOrOut;
+	}
+
+	public void setInOrOut(String inOrOut) {
+		this.inOrOut = inOrOut;
+	}
+
+	public AccountBizTypeEnum getBizType() {
+		return bizType;
+	}
+
+	public void setBizType(AccountBizTypeEnum bizType) {
+		this.bizType = bizType;
+	}
+
+	public PostStatusEnum getPostStatus() {
+		return postStatus;
+	}
+
+	public void setPostStatus(PostStatusEnum postStatus) {
+		this.postStatus = postStatus;
+	}
+
+	public Date getStartDate() {
+		return startDate;
+	}
+
+	public void setStartDate(Date startDate) {
+		this.startDate = startDate;
+	}
+
+	public Date getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+}

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -21,6 +22,9 @@ public class StudentMusicSheetSearch  extends MusicSheetSearch{
     @ApiModelProperty("专辑分页参数")
     private Integer albumRow = 3;
 
+    @ApiModelProperty(value = "用户类型",hidden = true)
+    private ClientEnum userType;
+
 
     @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)",hidden = true)
     private YesOrNoEnum auditVersion;
@@ -35,6 +39,14 @@ public class StudentMusicSheetSearch  extends MusicSheetSearch{
     @ApiModelProperty(value = "查看我自己的曲目",required = true)
     private Boolean myself = true;
 
+    public ClientEnum getUserType() {
+        return userType;
+    }
+
+    public void setUserType(ClientEnum userType) {
+        this.userType = userType;
+    }
+
     public Boolean getMyself() {
         return myself;
     }

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

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.yonge.cooleshow.common.enums.SysUserType;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -16,6 +17,9 @@ public class SysUserContractRecordSearch extends QueryInfo{
 	@ApiModelProperty(value = "用户id")
 	private Long userId;
 
+	@ApiModelProperty(value = "用户类型 STUDENT 学生 TEACHER 老师")
+	private SysUserType userType;
+
 	@ApiModelProperty(value = "签署状态 DONG 签署中 SUCCESS 签署完成 FAILED 签署失败")
 	private String status;
 
@@ -35,4 +39,12 @@ public class SysUserContractRecordSearch extends QueryInfo{
 	public void setStatus(String status) {
 		this.status = status;
 	}
+
+	public SysUserType getUserType() {
+		return userType;
+	}
+
+	public void setUserType(SysUserType userType) {
+		this.userType = userType;
+	}
 }

+ 11 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/UserAccountRecordSearch.java

@@ -1,6 +1,5 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
@@ -30,7 +29,7 @@ public class UserAccountRecordSearch extends QueryInfo{
 	@ApiModelProperty("收支类型:IN、收入 OUT、支出 ")
 	private InOrOutEnum inOrOut;
 
-	@ApiModelProperty(value = "入账状态 WAIT 待入账 FROZEN 冻结入账 RECORDED 已入账 CANCEL 取消 ")
+	@ApiModelProperty(value = "入账状态 WAIT 待入账 FROZEN 冻结入账 RECORDED 已入账 CANCEL 退费 ")
 	private PostStatusEnum postStatus;
 
 	@ApiModelProperty("业务类型:PRACTICE、陪练课 LIVE、直播课 VIDEO、视频课 MUSIC、乐谱 WITHDRAWAL、提现 LIVE_SHARE、直播课分润 VIDEO_SHARE、视频课分润 MUSIC_SHARE、乐谱分润 VIP_SHARE、会员分润 MALL_SHARE、商品分润 ")
@@ -48,8 +47,8 @@ public class UserAccountRecordSearch extends QueryInfo{
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
 	private LocalDateTime endTime;
-
-
+	@ApiModelProperty("购买学生 ")
+	private String username;
 
 	public Long getUserId() {
 		return userId;
@@ -114,4 +113,12 @@ public class UserAccountRecordSearch extends QueryInfo{
 	public void setPostStatus(PostStatusEnum postStatus) {
 		this.postStatus = postStatus;
 	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
 }

+ 57 - 27
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/PlatformCashAccountRecord.java

@@ -1,16 +1,19 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.TableId;
-
-import java.io.Serializable;
+import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
 
 /**
  * 平台账户流水表(PlatformCashAccountRecord)表实体类
@@ -34,15 +37,15 @@ public class PlatformCashAccountRecord implements Serializable {
 
     @TableField("in_or_out_")
     @ApiModelProperty(value = "收支类型:IN、收入 OUT、支出")
-    private String inOrOut;
+    private InOrOutEnum inOrOut;
 
     @TableField("post_status_")
-    @ApiModelProperty(value = "入账状态 WAIT 待入账 RECORDED 已入账 CANCEL 取消")
-    private String postStatus;
+    @ApiModelProperty(value = "入账状态 WAIT 待入账 RECORDED 已入账 CANCEL 退费")
+    private PostStatusEnum postStatus;
 
     @TableField("biz_type_")
     @ApiModelProperty(value = "业务类型:PRACTICE、陪练课 LIVE、直播课 VIDEO、视频课 MUSIC、乐谱")
-    private String bizType;
+    private AccountBizTypeEnum bizType;
 
     @TableField("biz_id_")
     @ApiModelProperty(value = "业务id(陪练课,直播课course_schedule_id_ | 视频课,乐谱为课程组曲子id | 提现为提现记录id)")
@@ -64,6 +67,26 @@ public class PlatformCashAccountRecord implements Serializable {
     @ApiModelProperty(value = "修改时间")
     private Date updateTime;
 
+    @TableField("account_period_time_")
+    @ApiModelProperty(value = "账期时间")
+    private Date accountPeriodTime;
+
+    public PlatformCashAccountRecord() {
+    }
+
+    public PlatformCashAccountRecord(Long accountId, BigDecimal transAmount, InOrOutEnum inOrOut, PostStatusEnum postStatus,
+                                     AccountBizTypeEnum bizType, Long bizId, String orderNo, Date accountPeriodTime) {
+        this.accountId = accountId;
+        this.transAmount = transAmount;
+        this.inOrOut = inOrOut;
+        this.postStatus = postStatus;
+        this.bizType = bizType;
+        this.bizId = bizId;
+        this.orderNo = orderNo;
+        this.accountPeriodTime = accountPeriodTime;
+        this.createTime = new Date();
+        this.updateTime = new Date();
+    }
 
     public Long getId() {
         return id;
@@ -89,31 +112,31 @@ public class PlatformCashAccountRecord implements Serializable {
         this.transAmount = transAmount;
     }
 
-    public String getInOrOut() {
-        return inOrOut;
-    }
+    public InOrOutEnum getInOrOut() {
+		return inOrOut;
+	}
 
-    public void setInOrOut(String inOrOut) {
-        this.inOrOut = inOrOut;
-    }
+	public void setInOrOut(InOrOutEnum inOrOut) {
+		this.inOrOut = inOrOut;
+	}
 
-    public String getPostStatus() {
-        return postStatus;
-    }
+	public PostStatusEnum getPostStatus() {
+		return postStatus;
+	}
 
-    public void setPostStatus(String postStatus) {
-        this.postStatus = postStatus;
-    }
+	public void setPostStatus(PostStatusEnum postStatus) {
+		this.postStatus = postStatus;
+	}
 
-    public String getBizType() {
-        return bizType;
-    }
+	public AccountBizTypeEnum getBizType() {
+		return bizType;
+	}
 
-    public void setBizType(String bizType) {
-        this.bizType = bizType;
-    }
+	public void setBizType(AccountBizTypeEnum bizType) {
+		this.bizType = bizType;
+	}
 
-    public Long getBizId() {
+	public Long getBizId() {
         return bizId;
     }
 
@@ -153,5 +176,12 @@ public class PlatformCashAccountRecord implements Serializable {
         this.updateTime = updateTime;
     }
 
+    public Date getAccountPeriodTime() {
+        return accountPeriodTime;
+    }
+
+    public void setAccountPeriodTime(Date accountPeriodTime) {
+        this.accountPeriodTime = accountPeriodTime;
+    }
 }
 

+ 25 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserAccountRecord.java

@@ -39,7 +39,7 @@ public class UserAccountRecord implements Serializable {
     @ApiModelProperty(value = "收支类型:IN、收入 OUT、支出 ",required = true)
     @TableField(value = "in_or_out_")
     private InOrOutEnum inOrOut;
-    @ApiModelProperty(value = "入账状态 WAIT 待入账 FROZEN 冻结入账 RECORDED 已入账 CANCEL 取消 ")
+    @ApiModelProperty(value = "入账状态 WAIT 待入账 FROZEN 冻结入账 RECORDED 已入账 CANCEL 退费 ")
     @TableField(value = "post_status_")
     private PostStatusEnum postStatus;
     @ApiModelProperty(value = "业务类型:PRACTICE、陪练课 LIVE、直播课 VIDEO、视频课 MUSIC、乐谱 WITHDRAWAL、提现 LIVE_SHARE、直播课分润 VIDEO_SHARE、视频课分润 MUSIC_SHARE、乐谱分润 VIP_SHARE、会员分润 MALL_SHARE、商品分润",required = true)
@@ -54,6 +54,9 @@ public class UserAccountRecord implements Serializable {
     @ApiModelProperty("订单号 ")
     @TableField(value = "order_no_")
     private String orderNo;
+    @ApiModelProperty("购买人id")
+    @TableField(value = "buy_user_")
+    private Long buyUser;
     @ApiModelProperty("创建时间 ")
     @TableField(value = "create_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -70,6 +73,11 @@ public class UserAccountRecord implements Serializable {
     @ApiModelProperty("异常信息 ")
     @TableField(value = "err_msg_")
     private String errMsg;
+    @TableField("account_period_time_")
+    @ApiModelProperty(value = "账期时间")
+    private Date accountPeriodTime;
+
+
 
     public Long getId() {
         return id;
@@ -182,4 +190,20 @@ public class UserAccountRecord implements Serializable {
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
+
+    public Date getAccountPeriodTime() {
+        return accountPeriodTime;
+    }
+
+    public void setAccountPeriodTime(Date accountPeriodTime) {
+        this.accountPeriodTime = accountPeriodTime;
+    }
+
+    public Long getBuyUser() {
+        return buyUser;
+    }
+
+    public void setBuyUser(Long buyUser) {
+        this.buyUser = buyUser;
+    }
 }

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

@@ -42,7 +42,7 @@ public class UserOrder implements Serializable {
     @ApiModelProperty("下单应用:STUDENT 学生端 TEACHER 老师端")
     @TableField(value = "order_client_")
     private ClientEnum orderClient;
-    @ApiModelProperty("订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端(PINAO_ROOM、琴房时长)")
+    @ApiModelProperty("订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端(VIP、开通会员 PINAO_ROOM、琴房时长)")
     @TableField(value = "order_type_")
     private OrderTypeEnum orderType;
     @ApiModelProperty("订单描述信息 ")

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

@@ -32,7 +32,7 @@ public class UserOrderDetail implements Serializable {
     @ApiModelProperty("卖家id ")
     @TableField(value = "merch_id_")
     private Long merchId;
-    @ApiModelProperty("订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端(PINAO_ROOM、琴房时长)")
+    @ApiModelProperty("订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端(VIP、开通会员 PINAO_ROOM、琴房时长)")
     @TableField(value = "good_type_")
     private GoodTypeEnum goodType;
     @ApiModelProperty("业务id ")

+ 16 - 19
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccountBizTypeEnum.java

@@ -10,29 +10,30 @@ import com.yonge.toolset.base.enums.BaseEnum;
  * @Data: 2022/4/7 15:48
  */
 public enum AccountBizTypeEnum implements BaseEnum<String, AccountBizTypeEnum> {
-    PRACTICE("陪练课", InOrOutEnum.IN),
-    LIVE("直播课", InOrOutEnum.IN),
-    VIDEO("视频课", InOrOutEnum.IN),
-    MUSIC("乐谱", InOrOutEnum.IN),
-    WITHDRAWAL("结算", InOrOutEnum.OUT),
-
-    LIVE_SHARE("直播课分润", InOrOutEnum.IN),
-    VIDEO_SHARE("视频课分润", InOrOutEnum.IN),
-    MUSIC_SHARE("乐谱分润", InOrOutEnum.IN),
-    VIP_SHARE("会员分润", InOrOutEnum.IN),
-    MALL_SHARE("商品分润", InOrOutEnum.IN),
+
+    PRACTICE("陪练课"),
+    LIVE("直播课"),
+    VIDEO("视频课"),
+    MUSIC("乐谱"),
+    VIP("会员充值"),
+    MALL("商品购买"),
+    PIAON_ROOM("琴房充值"),
+    WITHDRAWAL("结算"),
+
+    LIVE_SHARE("直播课分润"),
+    VIDEO_SHARE("视频课分润"),
+    MUSIC_SHARE("乐谱分润"),
+    VIP_SHARE("会员分润"),
+    MALL_SHARE("商品分润"),
 
     ;
     @EnumValue
     private String code;
     private String msg;
-    //收入、支出
-    private InOrOutEnum inOrOut;
 
-    AccountBizTypeEnum(String msg, InOrOutEnum inOrOut) {
+    AccountBizTypeEnum(String msg) {
         this.code = this.name();
         this.msg = msg;
-        this.inOrOut = inOrOut;
     }
 
     @Override
@@ -43,8 +44,4 @@ public enum AccountBizTypeEnum implements BaseEnum<String, AccountBizTypeEnum> {
     public String getMsg() {
         return this.msg;
     }
-
-    public InOrOutEnum getInOrOut() {
-        return this.inOrOut;
-    }
 }

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/GoodTypeEnum.java

@@ -15,7 +15,8 @@ public enum GoodTypeEnum implements BaseEnum<String, GoodTypeEnum> {
     LIVE("直播课购买"),
     VIDEO("视频课购买"),
     MUSIC("单曲点播"),
-    PINAO_ROOM("琴房时长");
+    PINAO_ROOM("琴房时长"),
+    MALL("商城");
     @EnumValue
     private String code;
     private String msg;

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AlbumFavoriteService.java

@@ -21,4 +21,13 @@ public interface AlbumFavoriteService extends IService<AlbumFavorite> {
      * @return list
      */
     List<AlbumFavorite> getFavorite(Long studentId, Long albumId);
+
+    /**
+     * 获取收藏信息
+     *
+     * @param userId 用户id
+     * @param albumIds 专辑id
+     * @return
+     */
+    List<Long> selectFavorite(Long userId, List<Long> albumIds);
 }

+ 3 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java

@@ -3,7 +3,6 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
-import com.yonge.cooleshow.common.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.req.OrderReq;
@@ -192,12 +191,12 @@ public interface MusicSheetService extends IService<MusicSheet> {
 
     /**
      * 发送学生购买曲目消息
-     *
-     * @param teacherId 老师id
+     *  @param teacherId 老师id
      * @param studentId 学生id
      * @param musicSheetId 曲目id
+     * @param orderClient
      */
-    boolean sendBuyMessage(Long teacherId, Long studentId, Long musicSheetId);
+    boolean sendBuyMessage(Long teacherId, Long studentId, Long musicSheetId, ClientEnum orderClient);
 
     /**
      * 订单生产后,创建记录

+ 31 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/PlatformCashAccountRecordService.java

@@ -1,9 +1,13 @@
 package com.yonge.cooleshow.biz.dal.service;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.PlatformCashAccountRecordDao;
+import com.yonge.cooleshow.biz.dal.dto.search.PlatformCashAccountRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
+import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
+import com.yonge.cooleshow.biz.dal.vo.PlatformCashAccountRecordSummaryVo;
 
 /**
  * 平台账户流水表(PlatformCashAccountRecord)表服务接口
@@ -14,5 +18,32 @@ import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
 public interface PlatformCashAccountRecordService extends IService<PlatformCashAccountRecord> {
 
     PlatformCashAccountRecordDao getDao();
+    
+    IPage<PlatformCashAccountRecord> queryPage(IPage<PlatformCashAccountRecord> page, PlatformCashAccountRecordSearch query);
+    
+    PlatformCashAccountRecordSummaryVo querySummary(PlatformCashAccountRecordSearch query);
+    
+    /**
+     * 更新待入账记录
+     * @return
+     */
+    boolean updateWaitRecord();
+
+    /**
+     * 取消入账
+     * @param orderNo
+     * @param bizType
+     * @param bizId
+     */
+    void cancelRecord(String orderNo, String bizType, Long bizId);
+
+    /**
+     * 设置商城预收-> 实收
+     *
+     * @param productSkuId 商城商品skuid
+     * @param orderSn 订单
+     * @param goodType
+     */
+    void mallRecordedRecord(Long productSkuId, String orderSn, String goodType);
 }
 

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

@@ -7,7 +7,10 @@ import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 import com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo;
 import com.yonge.cooleshow.biz.dal.dto.search.UserAccountRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.UserAccountRecord;
+import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.res.AccountTotal;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -39,6 +42,14 @@ public interface UserAccountRecordService extends IService<UserAccountRecord> {
 
     List<UserAccountRecordVo> selectAllPage(UserAccountRecordSearch query);
 
+
+    /**
+     * 分页查询
+     *
+     * @author liweifan
+     * @date 2022-03-30
+     */
+    IPage<UserAccountRecordVo> sharePage(IPage<UserAccountRecordVo> page, UserAccountRecordSearch query);
     /**
      * app查询详情
      *
@@ -73,4 +84,12 @@ public interface UserAccountRecordService extends IService<UserAccountRecord> {
      * 通过订单详情查询该详情对应的所有账户记录
      */
     List<UserAccountRecord> selectRecordByOrderDetail(UserOrderDetailVo userOrderDetailVo);
+
+
+    HttpResponseResult<UserAccountVo> accountTotal(UserAccountRecordSearch query);
+
+    /**
+     * 修改老师账户入账状态
+     */
+    void updateWaitRecord();
 }

+ 24 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserAccountService.java

@@ -5,13 +5,18 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto;
 import com.yonge.cooleshow.biz.dal.dto.req.TotalReq;
 import com.yonge.cooleshow.biz.dal.entity.UserAccountRecord;
+import com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo;
 import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
 import com.yonge.cooleshow.biz.dal.dto.search.UserAccountSearch;
 import com.yonge.cooleshow.biz.dal.entity.UserAccount;
+import com.yonge.cooleshow.biz.dal.vo.res.AccountShareTotal;
 import com.yonge.cooleshow.biz.dal.vo.res.AccountTotal;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 import com.yonge.cooleshow.common.enums.PostStatusEnum;
 
+import java.util.List;
+
 /**
  * 用户账户表 服务类
  * 入账逻辑:
@@ -55,17 +60,18 @@ public interface UserAccountService extends IService<UserAccount>  {
      * @author liweifan
      * @date 2022-07-20
      */
-    HttpResponseResult<UserAccountRecord> accountRecord(UserAccountRecordDto accountRecordDto);
+    HttpResponseResult accountRecord(UserAccountRecordDto accountRecordDto);
 
+    HttpResponseResult<UserAccountRecord> accountRecord(List<UserAccountRecordDto> accountRecordDtos);
     /***
      * 入账结算(入账状态变更)
      * @author liweifan
      * @param: recordId     记录id
-     * @param: postStatus   入账状态 RECORDED 已入账 CANCEL 取消
+     * @param: postStatus   入账状态 RECORDED 已入账 CANCEL 退费
      * @updateTime 2022/4/7 16:40
      * @return: java.lang.Integer
      */
-    HttpResponseResult<UserAccountRecord> accountChange(Long recordId, PostStatusEnum postStatus);
+    HttpResponseResult<UserAccountRecord> accountChange(UserAccountRecord record, PostStatusEnum postStatus);
     /***
      * 账户统计查询
      * @author liweifan
@@ -74,4 +80,19 @@ public interface UserAccountService extends IService<UserAccount>  {
      * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.vo.res.AccountTotal>
      */
     HttpResponseResult<AccountTotal> accountTotal(TotalReq totalReq);
+
+    /**
+     * 设置老师分润状态
+     *
+     * @param shareDto 老师状态
+     * @return
+     */
+    void mallTeacherRecordState(List<MallOrderItemDto> shareDto);
+    /**
+     * 记录平台收入和用户分润收入
+     * @return
+     */
+    boolean saveMallAccountRecord(List<MallOrderItemDto> shareDto);
+
+    HttpResponseResult<AccountShareTotal> accountShareTotal(TotalReq query);
 }

+ 7 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderPaymentService.java

@@ -78,5 +78,11 @@ public interface UserOrderPaymentService extends IService<UserOrderPayment> {
     void closePaymentCallBack(PaymentCallBack data);
 
 
-
+    /**
+     * 签协议
+     *
+     * @param  type 类型
+     * @param userId 用户id
+     */
+    void setContractRecord(String type, Long userId);
 }

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderRefundService.java

@@ -76,4 +76,10 @@ public interface UserOrderRefundService extends IService<UserOrderRefund>  {
 	 * @param data
 	 */
 	void refundPaymentCallBack(PaymentCallBack data);
+
+	/**
+	 * 直接退款(测试)
+	 * @param orderNo
+	 */
+	HttpResponseResult<UserOrderRefundBill> orderRefound(String orderNo);
 }

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

@@ -1,21 +1,19 @@
 package com.yonge.cooleshow.biz.dal.service;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderPayReq;
-import com.yonge.cooleshow.biz.dal.dto.req.OrderRefundReq;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.entity.UserOrder;
+import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderPayRes;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.payment.base.model.callback.PaymentCallBack;
-import org.apache.ibatis.annotations.Param;
-import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -166,4 +164,6 @@ public interface UserOrderService extends IService<UserOrder> {
      */
     void orderSuccess(UserOrderVo detail, PaymentCallBack data);
 
+
+    public BigDecimal getShareFreeByGoodType(GoodTypeEnum goodType);
 }

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

@@ -8,8 +8,11 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.util.CollectionUtils;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * AlbumFavoriteService服务实现类
@@ -37,4 +40,17 @@ public class AlbumFavoriteServiceImpl extends ServiceImpl<AlbumFavoriteDao,Album
                     .eq(AlbumFavorite::getUserId, studentId)
                     .list();
     }
+
+    @Override
+    public List<Long> selectFavorite(Long userId, List<Long> albumIds) {
+        List<AlbumFavorite> list = this.lambdaQuery()
+                                       .in(AlbumFavorite::getAlbumId, albumIds)
+                                       .eq(AlbumFavorite::getUserId, userId)
+                                       .list();
+
+        if (CollectionUtils.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+        return list.stream().map(AlbumFavorite::getAlbumId).collect(Collectors.toList());
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alipay.api.domain.AccountRecord;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -12,6 +13,7 @@ import com.yonge.cooleshow.biz.dal.dao.CourseGroupDao;
 import com.yonge.cooleshow.biz.dal.dto.CheckCourseTimeDto;
 import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto;
 import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto.CoursePlanDto;
+import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderRefundReq;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.dto.search.*;
@@ -24,6 +26,7 @@ import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.biz.dal.vo.res.RefundCreateRes;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.base.string.MessageFormatter;
@@ -91,9 +94,10 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
     private SysMessageService sysMessageService;
     @Autowired
     private ImGroupMemberService imGroupMemberService;
-
     @Autowired
     private UserOrderRefundService userOrderRefundService;
+    @Autowired
+    private UserAccountService userAccountService;
 
     @Override
     public CourseGroupDao getDao() {
@@ -107,7 +111,7 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
      */
     @Override
     public LiveCourseInfoVo queryLiveCourseInfo(Long groupId) {
-        return queryLiveCourseInfo(groupId,getSysUser());
+        return queryLiveCourseInfo(groupId, getSysUser());
     }
 
     /**
@@ -116,7 +120,7 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
      * @param groupId 课程组id
      */
 
-    private LiveCourseInfoVo queryLiveCourseInfo(Long groupId,SysUser sysUser) {
+    private LiveCourseInfoVo queryLiveCourseInfo(Long groupId, SysUser sysUser) {
         CourseGroup group = Optional.ofNullable(groupId).map(this::getById)
                 .orElseThrow(() -> new BizException("课程组信息不存在"));
 
@@ -140,6 +144,11 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         if (teacher == null) {
             throw new BizException("用户不存在");
         }
+        if (sysUser.getId().equals(teacher.getId())) {
+            result.setMyself(true);
+        } else {
+            result.setMyself(false);
+        }
 
         result.setTeacherName(teacher.getRealName());
         result.setUserName(teacher.getUsername());
@@ -791,11 +800,25 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
             teacherSalaryList.add(teacherSalary);
         });
         courseScheduleTeacherSalaryService.getDao().insertBatch(teacherSalaryList);
+        //写老师账户
+        addTeacherAccount(orderParam, teacherSalaryList, totalExpectPrice);
         log.info("buyLiveCourseSuccess ok");
         //课程购买成功后进行消息推送
         buyLiveSendMessage(studentPayment, courseGroup);
     }
 
+    //写入老师账户
+    private void addTeacherAccount(UserOrderDetailVo orderParam, List<CourseScheduleTeacherSalary> teacherSalaryList, BigDecimal totalExpectPrice) {
+        //老师待入账
+        List<UserAccountRecordDto> userAccountRecordDtos = new ArrayList<>();
+        for (CourseScheduleTeacherSalary salary : teacherSalaryList) {
+            UserAccountRecordDto dto = new UserAccountRecordDto(orderParam.getMerchId(), PostStatusEnum.WAIT, salary.getActualSalary(),
+                    InOrOutEnum.IN, AccountBizTypeEnum.LIVE, salary.getCourseScheduleId(), orderParam.getGoodName(), orderParam.getOrderNo(), orderParam.getUserId());
+            userAccountRecordDtos.add(dto);
+        }
+        userAccountService.accountRecord(userAccountRecordDtos);
+    }
+
     /**
      * 课程购买成功后进行消息推送
      *
@@ -1025,8 +1048,8 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
             try {
                 this.updateById(courseGroup);
             } catch (Exception e) {
-                log.error("openCourseGroup error >>> courseGroup: {} ",  JSON.toJSONString(courseGroup));
-                log.error("openCourseGroup error >>> ",  e.getCause());
+                log.error("openCourseGroup error >>> courseGroup: {} ", JSON.toJSONString(courseGroup));
+                log.error("openCourseGroup error >>> ", e.getCause());
             }
         });
     }
@@ -1073,8 +1096,8 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
                 courseGroup.setUpdatedTime(new Date());
                 this.updateById(courseGroup);
             } catch (Exception e) {
-                log.error("closeCourseGroup error >>> courseGroup: {} ",  JSON.toJSONString(courseGroup));
-                log.error("closeCourseGroup error >>> ",  e.getCause());
+                log.error("closeCourseGroup error >>> courseGroup: {} ", JSON.toJSONString(courseGroup));
+                log.error("closeCourseGroup error >>> ", e.getCause());
             }
         });
     }
@@ -1219,17 +1242,17 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         SysUser teacher = this.getSysUser(liveCourseInfoVo.getTeacherId());
 
         LiveCourseGroupShareVo liveCourseGroupShareVo = new LiveCourseGroupShareVo();
-        BeanUtils.copyProperties(liveCourseInfoVo,liveCourseGroupShareVo);
+        BeanUtils.copyProperties(liveCourseInfoVo, liveCourseGroupShareVo);
         liveCourseGroupShareVo.setShareTeacherAvatar(teacher.getAvatar());
         liveCourseGroupShareVo.setShareTeacherName(teacher.getUsername());
 
-        String teacherLiveGroupShareProfitUrl= sysConfigService.findConfigValue(SysConfigConstant.TEACHER_LIVE_GROUP_SHARE_PROFIT_URL);
+        String teacherLiveGroupShareProfitUrl = sysConfigService.findConfigValue(SysConfigConstant.TEACHER_LIVE_GROUP_SHARE_PROFIT_URL);
 
         ShareProfitVo result = new ShareProfitVo();
         result.setTeacherId(sysUser.getId());
         result.setType("LIVE");
         result.setLiveCourseGroup(liveCourseGroupShareVo);
-        result.setUrl(MessageFormatter.arrayFormat(teacherLiveGroupShareProfitUrl,liveGroupId, sysUser.getId()));
+        result.setUrl(MessageFormatter.arrayFormat(teacherLiveGroupShareProfitUrl, liveGroupId, sysUser.getId()));
         result.setName(sysUser.getUsername());
         result.setAvatar(sysUser.getAvatar());
         return result;

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

@@ -1121,6 +1121,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         courseScheduleTeacherSalaryService.getDao().insertBatch(teacherSalaryList);
         log.info("buyPracticeCourseSuccess ok");
 
+        //写老师账户
+        addTeacherAccount(orderParam, teacherSalaryList);
+
         Set<Long> studentIds = new HashSet();
         studentIds.add(studentId);
         try {
@@ -1138,6 +1141,18 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         }
     }
 
+    //写入老师账户
+    private void addTeacherAccount(UserOrderDetailVo orderParam, List<CourseScheduleTeacherSalary> teacherSalaryList) {
+        //老师待入账
+        List<UserAccountRecordDto> userAccountRecordDtos = new ArrayList<>();
+        for (CourseScheduleTeacherSalary salary : teacherSalaryList) {
+            UserAccountRecordDto dto = new UserAccountRecordDto(orderParam.getMerchId(), PostStatusEnum.WAIT, salary.getActualSalary(),
+                    InOrOutEnum.IN, AccountBizTypeEnum.PRACTICE, salary.getCourseScheduleId(), orderParam.getGoodName(), orderParam.getOrderNo(), orderParam.getUserId());
+            userAccountRecordDtos.add(dto);
+        }
+        userAccountService.accountRecord(userAccountRecordDtos);
+    }
+
     /**
      * 学生购买陪练课-失败-回调
      */
@@ -1764,7 +1779,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             for (UserAccountRecordDto dto : list) {
                 UserAccountRecordVo record = userAccountRecordService.detail(dto.getOrderNo(), dto.getBizType(), dto.getBizId());
                 if (null != record) {
-                    userAccountService.accountChange(record.getId(), PostStatusEnum.RECORDED);
+                    userAccountService.accountChange(record, PostStatusEnum.RECORDED);
                 }
             }
             Set<Long> bizIds = list.stream().map(UserAccountRecordDto::getBizId).collect(Collectors.toSet());

+ 4 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MemberPriceSettingsServiceImpl.java

@@ -7,6 +7,9 @@ import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
+import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
+import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
+import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.biz.dal.service.*;
 
 import com.yonge.cooleshow.biz.dal.vo.ShareProfitVo;
@@ -19,6 +22,7 @@ import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.string.MessageFormatter;
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.date.DateUtil;
 import org.springframework.beans.BeanUtils;
@@ -109,11 +113,6 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
 
         //会员购买记录入库
         vipCardRecordService.save(vipCardRecord);
-        //记录平台收入
-        PlatformCashAccountRecord platformCashAccountRecord = new PlatformCashAccountRecord();
-        platformCashAccountRecord.setAccountId(orderDetailVo.getUserId());
-//        platformCashAccountRecord.setTransAmount(ClientEnum.STUDENT.getCode());
-//        platformCashAccountRecordService.save();
         //会员购买消息推送
         authSend(userVipInfoVo.getUserId(), userVipInfoVo.getPhone(), DateUtil.format(vipCardRecord.getEndTime(), DateUtil.DEFAULT_PATTERN),orderDetailVo.getOrderClient());
     }

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

@@ -203,7 +203,21 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
 
     @Override
     public IPage<MusicAlbumVo> selectStudentPage(IPage<MusicAlbumVo> page, MusicAlbumSearch query) {
-        return page.setRecords(baseMapper.selectStudentPage(page,query));
+        IPage<MusicAlbumVo> iPage = page.setRecords(baseMapper.selectStudentPage(page, query));
+        List<MusicAlbumVo> records = iPage.getRecords();
+        List<Long> albumIds = records.stream().map(MusicAlbumVo::getId).collect(Collectors.toList());
+        if (query.getUserId() == null || CollectionUtils.isEmpty(albumIds)) {
+            return iPage;
+        }
+        albumIds = albumFavoriteService.selectFavorite(query.getUserId(),albumIds);
+        for (MusicAlbumVo record : records) {
+            if(albumIds.contains(record.getId())) {
+                record.setFavorite(YesOrNoEnum.YES);
+            } else {
+                record.setFavorite(YesOrNoEnum.NO);
+            }
+        }
+        return iPage;
     }
 
     private boolean checkNameRepeat(String albumName, Long id) {

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

@@ -235,7 +235,6 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
             }
         } else if (ChargeTypeEnum.VIP.getCode().equals(detail.getChargeType().getCode())) {
             // 会员 判断是否为会员, 会员可播放
-            // todo 老师会员判断
             if (userType.equals(ClientEnum.STUDENT)) {
                 StudentVo studentVo = studentService.detail(studentId);
                 if (studentVo != null && YesOrNoEnum.YES.getCode().equals(studentVo.getIsVip().getCode())) {
@@ -480,9 +479,10 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         // 检查已经购买
         checkoutPay(orderReqInfo.getUserId(), musicSheetPayDto.getMusicSheetId(),musicSheetPayDto.getClientType());
 
-
         orderCreateRes.setRes(true);
-        orderCreateRes.setMerchId(musicSheet.getUserId());
+        if (!musicSheet.getSourceType().getCode().equals(SourceTypeEnum.PLATFORM.getCode())) {
+            orderCreateRes.setMerchId(musicSheet.getUserId());
+        }
         orderCreateRes.setGoodType(orderCreateRes.getGoodType());
         orderCreateRes.setBizId(musicSheet.getId());
         orderCreateRes.setGoodNum(1);
@@ -534,22 +534,22 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
 
         // 消息通知
         try {
-            sendBuyMessage(userOrderDetailVo.getMerchId(), userOrderDetailVo.getUserId(), userOrderDetailVo.getBizId());
+            sendBuyMessage(userOrderDetailVo.getMerchId(), userOrderDetailVo.getUserId(), userOrderDetailVo.getBizId(),userOrderDetailVo.getOrderClient());
         } catch (Exception e) {
-            log.warn("学生购买曲目消息推送失败 {}", e.getMessage());
+            log.warn("购买曲目消息推送失败 {}", e.getMessage());
         }
     }
 
     /**
      * 发送购买消息通知
-     *
-     * @param teacherId    老师id
+     *  @param teacherId    老师id
      * @param studentId    学生id
      * @param musicSheetId 曲目id
+     * @param orderClient
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean sendBuyMessage(Long teacherId, Long studentId, Long musicSheetId) {
+    public boolean sendBuyMessage(Long teacherId, Long studentId, Long musicSheetId, ClientEnum orderClient) {
         SysUser teacher = sysUserFeignService.queryUserById(teacherId);
         SysUser student = sysUserFeignService.queryUserById(studentId);
         if (StringUtil.isEmpty(teacher.getPhone())) {
@@ -574,7 +574,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
 
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
                 MessageTypeEnum.STUDENT_BUY_MUSIC_SHEET_SUCCESS, studentReceivers, null,
-                0, url, ClientEnum.STUDENT.getCode(), musicSheet.getMusicSheetName());
+                0, url, orderClient.getCode(), musicSheet.getMusicSheetName());
         // 推送学生
         Map<Long, String> studentSMS = new HashMap<>();
         studentSMS.put(studentId, student.getPhone());
@@ -622,40 +622,11 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
      */
     private void addTeacherAccount(UserOrderDetailVo userOrderDetailVo, BigDecimal actualPrice, BigDecimal serviceFeeAmount,
                                    Long musicSheetId) {
-
         BigDecimal transAmount = actualPrice.subtract(serviceFeeAmount).setScale(2, RoundingMode.HALF_UP);
-
-        //插入老师账户变更记录
-        HttpResponseResult<UserAccountRecord> recordRes = userAccountService.accountRecord(
+        //插入老师账户变更记录-老师预收
+        userAccountService.accountRecord(
                 new UserAccountRecordDto(userOrderDetailVo.getMerchId(), PostStatusEnum.WAIT, transAmount, InOrOutEnum.IN,
-                        AccountBizTypeEnum.MUSIC, musicSheetId, userOrderDetailVo.getGoodName(), userOrderDetailVo.getOrderNo()));
-
-        if (recordRes.getStatus()) {
-            userAccountService.accountChange(recordRes.getData().getId(), PostStatusEnum.RECORDED);
-        }
-
-        //todo 插入平台实收
-
-        //判断是否分润
-        if (null != userOrderDetailVo.getRecomUserId()) {
-            // 分润比例
-            BigDecimal shareFeeRate = new BigDecimal(sysConfigService.findConfigValue(SysConfigConstant.MUSIC_SHARE_FEE))
-                    .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
-
-            //分润金额
-            BigDecimal shareFee = serviceFeeAmount.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP);
-
-            //插入分润老师账户变更记录
-            HttpResponseResult<UserAccountRecord> recomRecordRes = userAccountService.accountRecord(
-                    new UserAccountRecordDto(userOrderDetailVo.getRecomUserId(), PostStatusEnum.WAIT, shareFee, InOrOutEnum.IN,
-                            AccountBizTypeEnum.MUSIC_SHARE, musicSheetId, userOrderDetailVo.getGoodName(), userOrderDetailVo.getOrderNo()));
-
-            if (recomRecordRes.getStatus()) {
-                userAccountService.accountChange(recomRecordRes.getData().getId(), PostStatusEnum.RECORDED);
-            }
-
-            //todo 插入平台分润支出
-        }
+                        AccountBizTypeEnum.MUSIC, musicSheetId, userOrderDetailVo.getGoodName(), userOrderDetailVo.getOrderNo(),userOrderDetailVo.getUserId()));
     }
 
     @Override
@@ -667,6 +638,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         if (musicSheetPurchaseRecord == null) {
             musicSheetPurchaseRecord = new MusicSheetPurchaseRecord();
         }
+        musicSheetPurchaseRecord.setClientType(userOrderDetailVo.getOrderClient());
         musicSheetPurchaseRecord.setMusicSheetId(userOrderDetailVo.getBizId());
         musicSheetPurchaseRecord.setOrderNo(userOrderDetailVo.getOrderNo());
         musicSheetPurchaseRecord.setTeacherId(userOrderDetailVo.getMerchId());

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

@@ -5,10 +5,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.entity.PianoRoomTime;
+import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
+import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
@@ -31,6 +35,8 @@ public class PianoRoomBuyRecordServiceImpl extends ServiceImpl<PianoRoomBuyRecor
     private PianoRoomTimeService pianoRoomTimeService;
     @Autowired
     private TeacherService teacherService;
+    @Autowired
+    private PlatformCashAccountRecordService platformCashAccountRecordService;
 
     @Override
     public PianoRoomBuyRecordVo detail(Long id) {

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