Bladeren bron

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

liujunchi 3 jaren geleden
bovenliggende
commit
65ef7055fb

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

@@ -27,6 +27,8 @@ public interface PlatformCashAccountRecordDao extends BaseMapper<PlatformCashAcc
 
     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);

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

@@ -67,10 +67,15 @@ 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) {
+    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;
@@ -78,6 +83,7 @@ public class PlatformCashAccountRecord implements Serializable {
         this.bizType = bizType;
         this.bizId = bizId;
         this.orderNo = orderNo;
+        this.accountPeriodTime = accountPeriodTime;
         this.createTime = new Date();
         this.updateTime = new Date();
     }
@@ -170,5 +176,12 @@ public class PlatformCashAccountRecord implements Serializable {
         this.updateTime = updateTime;
     }
 
+    public Date getAccountPeriodTime() {
+        return accountPeriodTime;
+    }
+
+    public void setAccountPeriodTime(Date accountPeriodTime) {
+        this.accountPeriodTime = accountPeriodTime;
+    }
 }
 

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserAccountRecord.java

@@ -70,6 +70,9 @@ 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 +185,12 @@ 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;
+    }
 }

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

@@ -95,11 +95,6 @@ public class PianoRoomBuyRecordServiceImpl extends ServiceImpl<PianoRoomBuyRecor
             pianoRoomTime.setUpdateTime(new Date());
             pianoRoomTimeService.updateById(pianoRoomTime);
         }
-
-        //计入平台实收
-        PlatformCashAccountRecord platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getUserId(), orderDetailVo.getExpectPrice(),
-                InOrOutEnum.IN, PostStatusEnum.RECORDED, AccountBizTypeEnum.PIAON_ROOM, orderDetailVo.getBizId(), orderDetailVo.getOrderNo());
-        platformCashAccountRecordService.save(platformCashAccountRecord);
     }
 
 }

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

@@ -60,6 +60,10 @@ public class PlatformCashAccountRecordServiceImpl extends ServiceImpl<PlatformCa
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean updateWaitRecord() {
+
+        //getDao().queryCanAccountByBizType();
+
+
         List<String> paramNames = new ArrayList<String>();
         paramNames.add(SysConfigConstant.MALL_ACCOUNT_PERIOD);
         paramNames.add(SysConfigConstant.MUSIC_ACCOUNT_PERIOD);

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

@@ -527,6 +527,7 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
      * @param vo
      */
     private void accountHandle(UserOrderDetailVo vo) {
+        //处理老师入账
         List<UserAccountRecord> dataList = userAccountRecordService.selectRecordByOrderDetail(vo);
         for (UserAccountRecord userAccountRecord : dataList) {
             if (PostStatusEnum.WAIT.equals(userAccountRecord.getPostStatus())

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

@@ -798,12 +798,15 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         if (expectPrice.compareTo(BigDecimal.ZERO) <= 0) {
             return;
         }
+        //获取账期时间
+        Date accountPeriodTime = getAccountPeriodTime(orderDetailVo);
+
         //平台收入
         //获取平台服务费率
         BigDecimal platformFeeRate = getPlatformFreeByGoodType(orderDetailVo.getGoodType());
         if (platformFeeRate.compareTo(BigDecimal.ZERO) > 0) {
             //没有卖家的为平台订单,平台全额收益
-            if(null == orderDetailVo.getMerchId() || orderDetailVo.getMerchId().equals(0L)){
+            if (null == orderDetailVo.getMerchId() || orderDetailVo.getMerchId().equals(0L)) {
                 platformFeeRate = BigDecimal.ONE;
             }
 
@@ -812,11 +815,12 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             PlatformCashAccountRecord platformCashAccountRecord;
             if (GoodTypeEnum.PINAO_ROOM.equals(orderDetailVo.getGoodType())) {
                 platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getUserId(), platformFee,
-                        InOrOutEnum.IN, PostStatusEnum.RECORDED, AccountBizTypeEnum.PIAON_ROOM, orderDetailVo.getBizId(), orderDetailVo.getOrderNo());
+                        InOrOutEnum.IN, PostStatusEnum.RECORDED, AccountBizTypeEnum.PIAON_ROOM, orderDetailVo.getBizId(),
+                        orderDetailVo.getOrderNo(),accountPeriodTime);
             } else {
                 AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode());
                 platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getUserId(), platformFee,
-                        InOrOutEnum.IN, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo());
+                        InOrOutEnum.IN, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo(),accountPeriodTime);
             }
             platformCashAccountRecordService.save(platformCashAccountRecord);
         }
@@ -829,15 +833,15 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
                 //入老师账户
                 BigDecimal shareFee = expectPrice.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP);
                 AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode() + "_SHARE");
-                if(null != bizTypeEnum){
+                if (null != bizTypeEnum) {
                     //插入分润老师账户变更记录-分润老师预收
                     HttpResponseResult<UserAccountRecord> recomRecordRes = userAccountService.accountRecord(
                             new UserAccountRecordDto(orderDetailVo.getRecomUserId(), PostStatusEnum.WAIT, shareFee, InOrOutEnum.IN,
                                     bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getGoodName(), orderDetailVo.getOrderNo()));
-                    if(recomRecordRes.getStatus()){
+                    if (recomRecordRes.getStatus()) {
                         //插入平台预支
                         PlatformCashAccountRecord platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getRecomUserId(), shareFee,
-                                InOrOutEnum.OUT, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo());
+                                InOrOutEnum.OUT, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo(),accountPeriodTime);
                         platformCashAccountRecordService.save(platformCashAccountRecord);
                     }
                 }
@@ -846,6 +850,33 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     }
 
     /**
+     * 获取账期时间
+     *
+     * @param orderDetailVo
+     * @return
+     */
+    private Date getAccountPeriodTime(UserOrderDetailVo orderDetailVo) {
+        Calendar instance = Calendar.getInstance();
+        GoodTypeEnum goodType = orderDetailVo.getGoodType();
+
+        if (GoodTypeEnum.VIP.equals(goodType)) {
+            instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.VIP_ACCOUNT_PERIOD)));
+        } else if (GoodTypeEnum.VIDEO.equals(goodType)) {
+            instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.VIDEO_ACCOUNT_PERIOD)));
+        } else if (GoodTypeEnum.MUSIC.equals(goodType)) {
+            instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.MUSIC_ACCOUNT_PERIOD)));
+        } else if (GoodTypeEnum.PRACTICE.equals(goodType)) {
+            instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.PRACTICE_ACCOUNT_PERIOD)));
+        } else if (GoodTypeEnum.LIVE.equals(goodType)) {
+            //直播课取直播课成课时间+账期
+
+
+            instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.PRACTICE_ACCOUNT_PERIOD)));
+        }
+        return instance.getTime();
+    }
+
+    /**
      * 获取分润收益费率
      *
      * @param goodType

+ 20 - 4
cooleshow-user/user-biz/src/main/resources/config/mybatis/PlatformCashAccountRecordMapper.xml

@@ -13,21 +13,22 @@
         <result column="order_no_" jdbcType="VARCHAR" property="orderNo"/>
         <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
         <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+		<result column="account_period_time_" jdbcType="TIMESTAMP" property="accountPeriodTime"/>
     </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_
+		account_id_, trans_amount_, in_or_out_, post_status_, biz_type_, biz_id_, memo_, order_no_, create_time_, update_time_,account_period_time_
     </sql>
 
     <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
             parameterType="com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord">
         insert into platform_cash_account_record(account_id_, trans_amount_, in_or_out_, post_status_, biz_type_,
-        biz_id_, memo_, order_no_, create_time_, update_time_)
+        biz_id_, memo_, order_no_, create_time_, update_time_,account_period_time_)
         values
         <foreach collection="entities" item="entity" separator=",">
             (#{entity.accountId}, #{entity.transAmount}, #{entity.inOrOut}, #{entity.postStatus}, #{entity.bizType},
-            #{entity.bizId}, #{entity.memo}, #{entity.orderNo}, #{entity.createTime}, #{entity.updateTime})
+            #{entity.bizId}, #{entity.memo}, #{entity.orderNo}, #{entity.createTime}, #{entity.updateTime}, #{entity.accountPeriodTime})
         </foreach>
     </insert>
 
@@ -59,6 +60,9 @@
 	    		<if test="param.status">
 	    			post_status_ = #{param.status}
 	    		</if>
+				<if test="param.accountPeriodTime">
+					account_period_time_ = #{param.accountPeriodTime}
+				</if>
                 update_time_ = NOW()
             </set>
             WHERE id_ = #{param.id}
@@ -125,9 +129,21 @@
     </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 * from platform_cash_account_record
+    	where biz_type_ = #{bizType} and TIMESTAMPDIFF(HOUR, create_time_, now()) &gt;= ${24 * paymentDays}
+    	  and post_status_ = 'WAIT'
     </select>
 
+	<select id="queryCanAccountByBizType"
+			resultType="com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord">
+		select * from platform_cash_account_record
+		where post_status_ = 'WAIT' and account_period_time_ &lt; now()
+		and biz_type_ IN
+		<foreach collection="bizTypes" item="item" open="(" separator="," close=")">
+			#{item}
+		</foreach>
+	</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}

+ 2 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserAccountRecordMapper.xml

@@ -16,6 +16,7 @@
         <result column="update_time_" property="updateTime" />
         <result column="err_flag_" property="errFlag" />
         <result column="err_msg_" property="errMsg" />
+        <result column="account_period_time_" property="accountPeriodTime" />
     </resultMap>
 
     <!-- 表字段 -->
@@ -34,6 +35,7 @@
         , t.update_time_ as updateTime
         , t.err_flag_ as errFlag
         , t.err_msg_ as errMsg
+        , t.account_period_time_ as accountPeriodTime
         </sql>
 
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo">

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderDetailMapper.xml

@@ -96,9 +96,9 @@
         SELECT
             <include refid="baseColumns" />,
             o.recom_user_id_ as recomUserId,
+            o.order_client_ as orderClient,
             u.avatar_ as avatar,
             u.username_ as username,
-            u.order_client_ as orderClient,
             a.star_grade_ as starGrade
         FROM user_order_detail t
         left join user_order o on t.order_no_ = o.order_no_