Browse Source

add:商城平台收入

liujunchi 3 năm trước cách đây
mục cha
commit
844857cd89
15 tập tin đã thay đổi với 219 bổ sung274 xóa
  1. 5 5
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/MallOrderItemDto.java
  2. 6 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java
  3. 1 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountRecordController.java
  4. 5 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/PlatformCashAccountRecordDao.java
  5. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java
  6. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrder.java
  7. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderDetail.java
  8. 15 23
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccountBizTypeEnum.java
  9. 18 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/PlatformCashAccountRecordService.java
  10. 82 65
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PlatformCashAccountRecordServiceImpl.java
  11. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountRecordServiceImpl.java
  12. 11 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountServiceImpl.java
  13. 4 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderRefundServiceImpl.java
  14. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderRefundVo.java
  15. 67 167
      cooleshow-user/user-biz/src/main/resources/config/mybatis/PlatformCashAccountRecordMapper.xml

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

@@ -22,7 +22,7 @@ public class MallOrderItemDto {
     private String orderSn;
 
     // 商品id
-    private Long productId;
+    private Long productSkuId;
 
 
     private String productName;
@@ -64,12 +64,12 @@ public class MallOrderItemDto {
         this.orderSn = orderSn;
     }
 
-    public Long getProductId() {
-        return productId;
+    public Long getProductSkuId() {
+        return productSkuId;
     }
 
-    public void setProductId(Long productId) {
-        this.productId = productId;
+    public void setProductSkuId(Long productSkuId) {
+        this.productSkuId = productSkuId;
     }
 
     public String getProductName() {

+ 6 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -353,6 +353,9 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
 
         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())));
@@ -360,6 +363,9 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             teacherShareDto.setUserId(detail.getMemberId());
             list.add(teacherShareDto);
         }
+        if (CollectionUtils.isEmpty(list)) {
+            return;
+        }
         HttpResponseResult<Boolean> result;
         if (status.equals(PostStatusEnum.WAIT)) {
             result = adminFeignService.mallRecord(list);

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

@@ -53,6 +53,7 @@ public class UserAccountRecordController extends BaseController {
 
     @ApiOperation(value = "收入数据统计")
     @PostMapping("/accountTotal")
+    @PreAuthorize("@pcs.hasPermissions('userAccountRecord/accountTotal')")
     public HttpResponseResult<UserAccountVo> accountTotal(@RequestBody UserAccountRecordSearch query) {
         return userAccountRecordService.accountTotal(query);
     }

+ 5 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/PlatformCashAccountRecordDao.java

@@ -6,6 +6,7 @@ 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;
@@ -21,12 +22,15 @@ public interface PlatformCashAccountRecordDao extends BaseMapper<PlatformCashAcc
     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> 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);
 }
 

+ 1 - 1
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;

+ 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 ")

+ 15 - 23
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccountBizTypeEnum.java

@@ -10,34 +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),
-    MALL("商城购买", 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),
-
-
-    //老师账户暂未记录
-    PIAON_ROOM("琴房充值", InOrOutEnum.OUT),
+    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
@@ -48,8 +44,4 @@ public enum AccountBizTypeEnum implements BaseEnum<String, AccountBizTypeEnum> {
     public String getMsg() {
         return this.msg;
     }
-
-    public InOrOutEnum getInOrOut() {
-        return this.inOrOut;
-    }
 }

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

@@ -6,6 +6,7 @@ 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;
 
 /**
@@ -27,5 +28,22 @@ public interface PlatformCashAccountRecordService extends IService<PlatformCashA
      * @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);
 }
 

+ 82 - 65
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PlatformCashAccountRecordServiceImpl.java

@@ -6,6 +6,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
+import com.yonge.toolset.base.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,71 +47,85 @@ public class PlatformCashAccountRecordServiceImpl extends ServiceImpl<PlatformCa
         return this.baseMapper;
     }
 
-	@Override
-	public IPage<PlatformCashAccountRecord> queryPage(IPage<PlatformCashAccountRecord> page, PlatformCashAccountRecordSearch query) {
-		return getDao().queryPage(page, query);
-	}
-
-	@Override
-	public PlatformCashAccountRecordSummaryVo querySummary(PlatformCashAccountRecordSearch query) {
-		return getDao().querySummary(query);
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public boolean updateWaitRecord() {
-		List<String> paramNames = new ArrayList<String>();
-		paramNames.add(SysConfigConstant.MALL_ACCOUNT_PERIOD);
-		paramNames.add(SysConfigConstant.MUSIC_ACCOUNT_PERIOD);
-		paramNames.add(SysConfigConstant.VIP_ACCOUNT_PERIOD);
-		paramNames.add(SysConfigConstant.VIDEO_ACCOUNT_PERIOD);
-		paramNames.add(SysConfigConstant.LIVE_ACCOUNT_PERIOD);
-
-		List<SysConfig> sysConfigs = sysConfigService.findByParamName(paramNames);
-
-		Map<String,String> configMap = sysConfigs.stream().collect(Collectors.toMap(SysConfig :: getParamName, SysConfig :: getParamValue));
-
-		List<PlatformCashAccountRecord> list = new ArrayList<PlatformCashAccountRecord>();
-		//根据不同类型(业务类型:PRACTICE、陪练课 LIVE、直播课 VIDEO、视频课 MUSIC、乐谱)查询超过账期待结算的记录
-		List<PlatformCashAccountRecord> list1 = getDao().queryByBizTypeAndPaymentDays(AccountBizTypeEnum.MALL_SHARE.getCode(), Integer.parseInt(configMap.get(SysConfigConstant.MALL_ACCOUNT_PERIOD).toString()));
-		List<PlatformCashAccountRecord> list2 = getDao().queryByBizTypeAndPaymentDays(AccountBizTypeEnum.MUSIC_SHARE.getCode(), Integer.parseInt(configMap.get(SysConfigConstant.MUSIC_ACCOUNT_PERIOD).toString()));
-		List<PlatformCashAccountRecord> list3 = getDao().queryByBizTypeAndPaymentDays(AccountBizTypeEnum.VIP_SHARE.getCode(), Integer.parseInt(configMap.get(SysConfigConstant.VIP_ACCOUNT_PERIOD).toString()));
-		List<PlatformCashAccountRecord> list4 = getDao().queryByBizTypeAndPaymentDays(AccountBizTypeEnum.VIDEO_SHARE.getCode(), Integer.parseInt(configMap.get(SysConfigConstant.VIDEO_ACCOUNT_PERIOD).toString()));
-		List<PlatformCashAccountRecord> list5 = getDao().queryByBizTypeAndPaymentDays(AccountBizTypeEnum.LIVE_SHARE.getCode(), Integer.parseInt(configMap.get(SysConfigConstant.LIVE_ACCOUNT_PERIOD).toString()));
-
-		if(list1.size() > 0){
-			list.addAll(list1);
-		}
-		if(list2.size() > 0){
-			list.addAll(list2);
-		}
-		if(list3.size() > 0){
-			list.addAll(list3);
-		}
-		if(list4.size() > 0){
-			list.addAll(list4);
-		}
-		if(list5.size() > 0){
-			list.addAll(list5);
-		}
-
-		if(list.size() > 0){
-			Date date = new Date();
-			List<PlatformCashAccountRecord> batchUpdateList = new ArrayList<PlatformCashAccountRecord>();
-
-			for(PlatformCashAccountRecord pcar : list){
-				//预收改成实收
-				pcar.setPostStatus(PostStatusEnum.RECORDED);
-				pcar.setUpdateTime(date);
-				batchUpdateList.add(pcar);
-			}
-
-			if(batchUpdateList.size() > 0){
-				getDao().batchUpdate(batchUpdateList);
-			}
-		}
-		return true;
-	}
+    @Override
+    public IPage<PlatformCashAccountRecord> queryPage(IPage<PlatformCashAccountRecord> page, PlatformCashAccountRecordSearch query) {
+        return getDao().queryPage(page, query);
+    }
+
+    @Override
+    public PlatformCashAccountRecordSummaryVo querySummary(PlatformCashAccountRecordSearch query) {
+        return getDao().querySummary(query);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean updateWaitRecord() {
+        List<String> paramNames = new ArrayList<String>();
+        paramNames.add(SysConfigConstant.MALL_ACCOUNT_PERIOD);
+        paramNames.add(SysConfigConstant.MUSIC_ACCOUNT_PERIOD);
+        paramNames.add(SysConfigConstant.VIP_ACCOUNT_PERIOD);
+        paramNames.add(SysConfigConstant.VIDEO_ACCOUNT_PERIOD);
+        paramNames.add(SysConfigConstant.LIVE_ACCOUNT_PERIOD);
+
+        List<SysConfig> sysConfigs = sysConfigService.findByParamName(paramNames);
+
+        Map<String, String> configMap = sysConfigs.stream().collect(Collectors.toMap(SysConfig::getParamName, SysConfig::getParamValue));
+
+        List<PlatformCashAccountRecord> list = new ArrayList<PlatformCashAccountRecord>();
+        //根据不同类型(业务类型:PRACTICE、陪练课 LIVE、直播课 VIDEO、视频课 MUSIC、乐谱)查询超过账期待结算的记录
+        // List<PlatformCashAccountRecord> list1 = getDao().queryByBizTypeAndPaymentDays(AccountBizTypeEnum.MALL_SHARE.getCode(), Integer.parseInt(configMap.get(SysConfigConstant.MALL_ACCOUNT_PERIOD).toString()));
+        List<PlatformCashAccountRecord> list2 = getDao().queryByBizTypeAndPaymentDays(AccountBizTypeEnum.MUSIC_SHARE.getCode(), Integer.parseInt(configMap.get(SysConfigConstant.MUSIC_ACCOUNT_PERIOD).toString()));
+        List<PlatformCashAccountRecord> list3 = getDao().queryByBizTypeAndPaymentDays(AccountBizTypeEnum.VIP_SHARE.getCode(), Integer.parseInt(configMap.get(SysConfigConstant.VIP_ACCOUNT_PERIOD).toString()));
+        List<PlatformCashAccountRecord> list4 = getDao().queryByBizTypeAndPaymentDays(AccountBizTypeEnum.VIDEO_SHARE.getCode(), Integer.parseInt(configMap.get(SysConfigConstant.VIDEO_ACCOUNT_PERIOD).toString()));
+        List<PlatformCashAccountRecord> list5 = getDao().queryByBizTypeAndPaymentDays(AccountBizTypeEnum.LIVE_SHARE.getCode(), Integer.parseInt(configMap.get(SysConfigConstant.LIVE_ACCOUNT_PERIOD).toString()));
+
+        // if (list1.size() > 0) {
+        //     list.addAll(list1);
+        // }
+        if (list2.size() > 0) {
+            list.addAll(list2);
+        }
+        if (list3.size() > 0) {
+            list.addAll(list3);
+        }
+        if (list4.size() > 0) {
+            list.addAll(list4);
+        }
+        if (list5.size() > 0) {
+            list.addAll(list5);
+        }
+
+        if (list.size() > 0) {
+            Date date = new Date();
+            List<PlatformCashAccountRecord> batchUpdateList = new ArrayList<PlatformCashAccountRecord>();
+
+            for (PlatformCashAccountRecord pcar : list) {
+                //预收改成实收
+                pcar.setPostStatus(PostStatusEnum.RECORDED);
+                pcar.setUpdateTime(date);
+                batchUpdateList.add(pcar);
+            }
+
+            if (batchUpdateList.size() > 0) {
+                getDao().batchUpdate(batchUpdateList);
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public void cancelRecord(String orderNo, String bizType, Long bizId) {
+        if(StringUtil.isEmpty(orderNo) || StringUtil.isEmpty(bizType) || null == bizId){
+            return;
+        }
+        baseMapper.cancelRecord(orderNo, bizType, bizId);
+        baseMapper.cancelRecord(orderNo, bizType + "_SHARE", bizId);
+    }
 
+    @Override
+    public void mallRecordedRecord(Long productSkuId, String orderSn, String goodType) {
+
+        baseMapper.mallRecordedRecord(orderSn, goodType, productSkuId);
+    }
 }
 

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

@@ -115,7 +115,7 @@ public class UserAccountRecordServiceImpl extends ServiceImpl<UserAccountRecordD
     @Override
     public List<UserAccountRecord> selectRecordByOrderDetail(UserOrderDetailVo userOrderDetailVo) {
         //todo 这里需要测试
-        //订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端(PINAO_ROOM、琴房时长)
+        //订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端(VIP、开通会员 PINAO_ROOM、琴房时长)
         //获取业务id
         List<Long> bizIds = new ArrayList<>();
         if (GoodTypeEnum.VIP.equals(userOrderDetailVo.getGoodType())

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

@@ -57,8 +57,6 @@ public class UserAccountServiceImpl extends ServiceImpl<UserAccountDao, UserAcco
     @Autowired
     private UserOrderService userOrderService;
 
-    @Autowired
-    private SysConfigService sysConfigService;
     @Override
     public UserAccountVo detail(Long id) {
         UserAccountVo detail = baseMapper.detail(id);
@@ -409,13 +407,20 @@ public class UserAccountServiceImpl extends ServiceImpl<UserAccountDao, UserAcco
     public void mallTeacherRecordState(MallOrderItemDto shareDto) {
         List<UserAccountRecord> list = userAccountRecordService.lambdaQuery()
                                                                .eq(UserAccountRecord::getOrderNo, shareDto.getOrderSn())
-                                                               .eq(UserAccountRecord::getBizId, shareDto.getProductId())
+                                                               .eq(UserAccountRecord::getBizId, shareDto.getProductSkuId())
                                                                .list();
         if (CollectionUtils.isEmpty(list)) {
             return;
         }
         for (UserAccountRecord userAccount : list) {
             this.accountChange(userAccount.getId(),shareDto.getStatus());
+            if (shareDto.getStatus().equals(PostStatusEnum.RECORDED)) {
+
+                platformCashAccountRecordService.mallRecordedRecord(shareDto.getProductSkuId(),shareDto.getOrderSn(),GoodTypeEnum.MALL.getCode());
+
+            } else if (shareDto.getStatus().equals(PostStatusEnum.CANCEL)) {
+                platformCashAccountRecordService.cancelRecord(shareDto.getOrderSn(),GoodTypeEnum.MALL.getCode(),shareDto.getProductSkuId());
+            }
         }
     }
 
@@ -442,7 +447,7 @@ public class UserAccountServiceImpl extends ServiceImpl<UserAccountDao, UserAcco
         }
         //平台收入
         PlatformCashAccountRecord platformCashAccountRecord = new PlatformCashAccountRecord(shareDto.getUserId(), expectPrice,
-                          InOrOutEnum.IN, PostStatusEnum.WAIT, AccountBizTypeEnum.MALL, shareDto.getProductId(), shareDto.getOrderSn());
+                          InOrOutEnum.IN, PostStatusEnum.WAIT, AccountBizTypeEnum.MALL, shareDto.getProductSkuId(), shareDto.getOrderSn());
 
         platformCashAccountRecordService.save(platformCashAccountRecord);
 
@@ -457,11 +462,11 @@ public class UserAccountServiceImpl extends ServiceImpl<UserAccountDao, UserAcco
                 //插入分润老师账户变更记录-分润老师预收
                 HttpResponseResult<UserAccountRecord> recomRecordRes = this.accountRecord(
                         new UserAccountRecordDto(shareDto.getPromoterId(), PostStatusEnum.WAIT, shareFee, InOrOutEnum.IN,
-                                                 bizTypeEnum, shareDto.getProductId(), shareDto.getProductName(), shareDto.getOrderSn()));
+                                                 bizTypeEnum, shareDto.getProductSkuId(), shareDto.getProductName(), shareDto.getOrderSn()));
                 if(recomRecordRes.getStatus()){
                     //插入平台预支
                     platformCashAccountRecord = new PlatformCashAccountRecord(shareDto.getPromoterId(), shareFee,
-                            InOrOutEnum.OUT, PostStatusEnum.WAIT, AccountBizTypeEnum.MALL_SHARE, shareDto.getProductId(), shareDto.getOrderSn());
+                            InOrOutEnum.OUT, PostStatusEnum.WAIT, AccountBizTypeEnum.MALL_SHARE, shareDto.getProductSkuId(), shareDto.getOrderSn());
                     platformCashAccountRecordService.save(platformCashAccountRecord);
                 }
             }

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

@@ -69,6 +69,8 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
     private UserAccountService userAccountService;
     @Autowired
     private UserAccountRecordService userAccountRecordService;
+    @Autowired
+    private PlatformCashAccountRecordService platformCashAccountRecordService;
 
     //验证是否可以退款,获取退款金额信息
     private static final Map<GoodTypeEnum, Function<OrderRefundReq, HttpResponseResult<RefundCreateRes>>> refundCreate = new HashMap<>();
@@ -532,8 +534,8 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
                 userAccountService.accountChange(userAccountRecord.getId(), PostStatusEnum.CANCEL);
             }
         }
-
-        //todo 处理平台入账
+        //处理平台入账
+        platformCashAccountRecordService.cancelRecord(vo.getOrderNo(),vo.getGoodType().getCode(),vo.getBizId());
     }
 
     /**

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

@@ -18,7 +18,7 @@ public class UserOrderRefundVo extends UserOrderRefund{
     @TableField(value = "order_name_")
     private String orderName;
 
-    @ApiModelProperty("订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端(PINAO_ROOM、琴房时长)")
+    @ApiModelProperty("订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端(VIP、开通会员 PINAO_ROOM、琴房时长)")
     @TableField(value = "order_type_")
     private OrderTypeEnum orderType;
 

+ 67 - 167
cooleshow-user/user-biz/src/main/resources/config/mybatis/PlatformCashAccountRecordMapper.xml

@@ -16,8 +16,8 @@
     </resultMap>
 
     <sql id="Base_Column_List">
-        id_
-        , account_id_, trans_amount_, in_or_out_, post_status_, biz_type_, biz_id_, memo_, order_no_, create_time_, update_time_
+        id_,
+		account_id_, trans_amount_, in_or_out_, post_status_, biz_type_, biz_id_, memo_, order_no_, create_time_, update_time_
     </sql>
 
     <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
@@ -59,184 +59,84 @@
 	    		<if test="param.status">
 	    			post_status_ = #{param.status}
 	    		</if>
-	    		<if test="param.startDate">
-	    			update_time_ &gt;= #{param.startDate}
-	    		</if>
-	    		<if test="param.endDate">
-	    			update_time_ &lt;= #{param.endDate}
-	    		</if>
                 update_time_ = NOW()
             </set>
-            WHERE
-            id_ = #{param.id}
+            WHERE id_ = #{param.id}
         </foreach>
     </update>
-    
-    <select id="queryPage" resultType="com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord">
-    	select * from platform_cash_account_record
-    	<where>
-    		<if test="param.orderNo">
-    			and order_no_ = #{param.orderNo}
-    		</if>
-    		<if test="param.bizId">
-    			and biz_id_ = #{param.bizId}
-    		</if>
-    		<if test="param.inOrOut">
-    			and in_or_out_ = #{param.inOrOut}
-    		</if>
-    		<if test="param.bizType">
-    			and biz_type_ = #{param.bizType}
-    		</if>
-    		<if test="param.status">
-    			and post_status_ = #{param.status}
-    		</if>
-    		<if test="param.startDate">
-    			and update_time_ &gt;= #{param.startDate}
-    		</if>
-    		<if test="param.endDate">
-    			and update_time_ &lt;= #{param.endDate}
-    		</if>
-    	</where>
-    </select>
-    
-    <select id="querySummary" resultType="com.yonge.cooleshow.biz.dal.vo.PlatformCashAccountRecordSummaryVo">
-    	select 
-    		sum(case when in_or_out_ = 'IN' and post_status_ = 'WAIT' then trans_amount_ else 0 end) advancesReceived,
-    		sum(case when in_or_out_ = 'IN' and post_status_ = 'RECORDED' then trans_amount_ else 0 end) settledReceived,
-    		sum(case when in_or_out_ = 'OUT' and post_status_ = 'WAIT' then trans_amount_ else 0 end) advancePayment,
-    		sum(case when in_or_out_ = 'OUT' and post_status_ = 'RECORDED' then trans_amount_ else 0 end) settledPayment 
-    	from platform_cash_account_record
-    	<where>
-    		<if test="param.orderNo">
-    			and order_no_ = #{param.orderNo}
-    		</if>
-    		<if test="param.bizId">
-    			and biz_id_ = #{param.bizId}
-    		</if>
-    		<if test="param.inOrOut">
-    			and in_or_out_ = #{param.inOrOut}
-    		</if>
-    		<if test="param.bizType">
-    			and biz_type_ = #{param.bizType}
-    		</if>
-    		<if test="param.status">
-    			and post_status_ = #{param.status}
-    		</if>
-    		<if test="param.startDate">
-    			and update_time_ &gt;= #{param.startDate}
-    		</if>
-    		<if test="param.endDate">
-    			and update_time_ &lt;= #{param.endDate}
-    		</if>
-    	</where>
-    </select>
-    
-    <select id="queryByBizTypeAndPaymentDays" resultType="com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord">
-    	select * from platform_cash_account_record where biz_type_ = #{bizType} and TIMESTAMPDIFF(HOUR, create_time_, now()) &gt;= ${24 * paymentDays} and post_status_ = 'WAIT'
-    </select>
 
-    <update id="batchUpdate">
-        <foreach collection="list" item="param" separator=";">
-            UPDATE platform_cash_account_record
-            <set>
-                <if test="param.accountId">
-    				account_id_ = #{param.accountId}
-	    		</if>
-                <if test="param.transAmount">
-    				trans_amount_ = #{param.transAmount}
-	    		</if>
-                <if test="param.memo">
-    				memo_ = #{param.memo}
-	    		</if>
-                <if test="param.orderNo">
-    				order_no_ = #{param.orderNo}
-	    		</if>
-	    		<if test="param.bizId">
-	    			biz_id_ = #{param.bizId}
-	    		</if>
-	    		<if test="param.inOrOut">
-	    			in_or_out_ = #{param.inOrOut}
-	    		</if>
-	    		<if test="param.bizType">
-	    			biz_type_ = #{param.bizType}
-	    		</if>
-	    		<if test="param.status">
-	    			post_status_ = #{param.status}
-	    		</if>
-	    		<if test="param.startDate">
-	    			update_time_ &gt;= #{param.startDate}
-	    		</if>
-	    		<if test="param.endDate">
-	    			update_time_ &lt;= #{param.endDate}
-	    		</if>
-                update_time_ = NOW()
-            </set>
-            WHERE
-            id_ = #{param.id}
-        </foreach>
-    </update>
-    
-    <select id="queryPage" resultType="com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord">
+	<select id="queryPage" resultType="com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord">
     	select * from platform_cash_account_record
-    	<where>
-    		<if test="param.orderNo">
-    			and order_no_ = #{param.orderNo}
-    		</if>
-    		<if test="param.bizId">
-    			and biz_id_ = #{param.bizId}
-    		</if>
-    		<if test="param.inOrOut">
-    			and in_or_out_ = #{param.inOrOut}
-    		</if>
-    		<if test="param.bizType">
-    			and biz_type_ = #{param.bizType}
-    		</if>
-    		<if test="param.status">
-    			and post_status_ = #{param.status}
-    		</if>
-    		<if test="param.startDate">
-    			and update_time_ &gt;= #{param.startDate}
-    		</if>
-    		<if test="param.endDate">
-    			and update_time_ &lt;= #{param.endDate}
-    		</if>
-    	</where>
+		<where>
+			<if test="param.orderNo">
+				and order_no_ = #{param.orderNo}
+			</if>
+			<if test="param.bizId">
+				and biz_id_ = #{param.bizId}
+			</if>
+			<if test="param.inOrOut">
+				and in_or_out_ = #{param.inOrOut}
+			</if>
+			<if test="param.bizType">
+				and biz_type_ = #{param.bizType}
+			</if>
+			<if test="param.status">
+				and post_status_ = #{param.status}
+			</if>
+			<if test="param.startDate">
+				and update_time_ &gt;= #{param.startDate}
+			</if>
+			<if test="param.endDate">
+				and update_time_ &lt;= #{param.endDate}
+			</if>
+		</where>
     </select>
     
     <select id="querySummary" resultType="com.yonge.cooleshow.biz.dal.vo.PlatformCashAccountRecordSummaryVo">
-    	select 
-    		sum(case when in_or_out_ = 'IN' and post_status_ = 'WAIT' then trans_amount_ else 0 end) advancesReceived,
-    		sum(case when in_or_out_ = 'IN' and post_status_ = 'RECORDED' then trans_amount_ else 0 end) settledReceived,
-    		sum(case when in_or_out_ = 'OUT' and post_status_ = 'WAIT' then trans_amount_ else 0 end) advancePayment,
-    		sum(case when in_or_out_ = 'OUT' and post_status_ = 'RECORDED' then trans_amount_ else 0 end) settledPayment 
-    	from platform_cash_account_record
-    	<where>
-    		<if test="param.orderNo">
-    			and order_no_ = #{param.orderNo}
-    		</if>
-    		<if test="param.bizId">
-    			and biz_id_ = #{param.bizId}
-    		</if>
-    		<if test="param.inOrOut">
-    			and in_or_out_ = #{param.inOrOut}
-    		</if>
-    		<if test="param.bizType">
-    			and biz_type_ = #{param.bizType}
-    		</if>
-    		<if test="param.status">
-    			and post_status_ = #{param.status}
-    		</if>
-    		<if test="param.startDate">
-    			and update_time_ &gt;= #{param.startDate}
-    		</if>
-    		<if test="param.endDate">
-    			and update_time_ &lt;= #{param.endDate}
-    		</if>
-    	</where>
+		select
+			sum(case when in_or_out_ = 'IN' and post_status_ = 'WAIT' then trans_amount_ else 0 end) advancesReceived,
+			sum(case when in_or_out_ = 'IN' and post_status_ = 'RECORDED' then trans_amount_ else 0 end) settledReceived,
+			sum(case when in_or_out_ = 'OUT' and post_status_ = 'WAIT' then trans_amount_ else 0 end) advancePayment,
+			sum(case when in_or_out_ = 'OUT' and post_status_ = 'RECORDED' then trans_amount_ else 0 end) settledPayment
+		from platform_cash_account_record
+		<where>
+			<if test="param.orderNo">
+				and order_no_ = #{param.orderNo}
+			</if>
+			<if test="param.bizId">
+				and biz_id_ = #{param.bizId}
+			</if>
+			<if test="param.inOrOut">
+				and in_or_out_ = #{param.inOrOut}
+			</if>
+			<if test="param.bizType">
+				and biz_type_ = #{param.bizType}
+			</if>
+			<if test="param.status">
+				and post_status_ = #{param.status}
+			</if>
+			<if test="param.startDate">
+				and update_time_ &gt;= #{param.startDate}
+			</if>
+			<if test="param.endDate">
+				and update_time_ &lt;= #{param.endDate}
+			</if>
+		</where>
     </select>
     
     <select id="queryByBizTypeAndPaymentDays" resultType="com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord">
     	select * from platform_cash_account_record where biz_type_ = #{bizType} and TIMESTAMPDIFF(HOUR, create_time_, now()) &gt;= ${24 * paymentDays} and post_status_ = 'WAIT'
     </select>
 
+	<update id="cancelRecord">
+		update platform_cash_account_record set post_status_ = 'CANCEL'
+		where post_status_ = 'WAIT' and order_no_ = #{orderNo} and biz_id_ = #{bizId}
+		and biz_type_ = #{bizType}
+	</update>
+
+    <update id="mallRecordedRecord">
+		update platform_cash_account_record set post_status_ = 'RECORDED'
+		where post_status_ = 'WAIT' and order_no_ = #{orderNo} and biz_id_ = #{bizId}
+		and biz_type_ = #{bizType}
+	</update>
 </mapper>