Authored by tanling

1.没有银行卡信息照样结算 2结算增加事限制

@@ -2191,4 +2191,12 @@ public class DateUtil { @@ -2191,4 +2191,12 @@ public class DateUtil {
2191 return (int) (cal.getTimeInMillis() / 1000); 2191 return (int) (cal.getTimeInMillis() / 1000);
2192 } 2192 }
2193 2193
  2194 +
  2195 + public static Integer getTimestampOfDateTime(LocalDateTime localDateTime) {
  2196 + ZoneId zone = ZoneId.systemDefault();
  2197 + Instant instant = localDateTime.atZone(zone).toInstant();
  2198 + return (int)instant.toEpochMilli()/1000;
  2199 + }
  2200 +
  2201 +
2194 } 2202 }
@@ -15,7 +15,8 @@ public interface InviteSettlementItemMapper { @@ -15,7 +15,8 @@ public interface InviteSettlementItemMapper {
15 @Param("type") Integer type, 15 @Param("type") Integer type,
16 @Param("srcStatus") Integer srcStatus, 16 @Param("srcStatus") Integer srcStatus,
17 @Param("tagStatus") Integer tagStatus, 17 @Param("tagStatus") Integer tagStatus,
18 - @Param("inviteSettlementId") Integer inviteSettlementId); 18 + @Param("inviteSettlementId") Integer inviteSettlementId,
  19 + @Param("settlementTime") Integer settlementTime);
19 20
20 int updateToSettledRollback(@Param("uid") Integer uid, 21 int updateToSettledRollback(@Param("uid") Integer uid,
21 @Param("type") Integer type, 22 @Param("type") Integer type,
@@ -35,13 +36,15 @@ public interface InviteSettlementItemMapper { @@ -35,13 +36,15 @@ public interface InviteSettlementItemMapper {
35 36
36 int selectCountByUidTypeAndInviteSettlementId(@Param("uid") Integer uid, 37 int selectCountByUidTypeAndInviteSettlementId(@Param("uid") Integer uid,
37 @Param("type") Integer type, 38 @Param("type") Integer type,
38 - @Param("inviteSettlementId") Integer inviteSettlementId); 39 + @Param("inviteSettlementId") Integer inviteSettlementId,
  40 + @Param("settlementTime") Integer settlementTime);
39 41
40 int updateByPrimaryKeySelective(InviteSettlementItem record); 42 int updateByPrimaryKeySelective(InviteSettlementItem record);
41 43
42 List<InviteSettlementItemStats> selectStatsByUidTypeAndInviteSettlementIdGroupBySellerUid(@Param("uid") Integer uid, 44 List<InviteSettlementItemStats> selectStatsByUidTypeAndInviteSettlementIdGroupBySellerUid(@Param("uid") Integer uid,
43 @Param("type") Integer type, 45 @Param("type") Integer type,
44 - @Param("inviteSettlementId") Integer inviteSettlementId); 46 + @Param("inviteSettlementId") Integer inviteSettlementId,
  47 + @Param("settlementTime") Integer settlementTime);
45 48
46 List<InviteSettlementItem> selectByUidTypeInviteSettlementIdAndSellerUid(@Param("uid") Integer uid, 49 List<InviteSettlementItem> selectByUidTypeInviteSettlementIdAndSellerUid(@Param("uid") Integer uid,
47 @Param("type") Integer type, 50 @Param("type") Integer type,
@@ -57,6 +57,7 @@ @@ -57,6 +57,7 @@
57 where uid = #{uid,jdbcType=INTEGER} 57 where uid = #{uid,jdbcType=INTEGER}
58 and type = #{type,jdbcType=INTEGER} 58 and type = #{type,jdbcType=INTEGER}
59 and status = #{srcStatus,jdbcType=INTEGER} 59 and status = #{srcStatus,jdbcType=INTEGER}
  60 + and <![CDATA[ create_time <= #{settlementTime,jdbcType=INTEGER}]]>
60 </update> 61 </update>
61 62
62 <update id="updateToSettledRollback"> 63 <update id="updateToSettledRollback">
@@ -101,6 +102,7 @@ @@ -101,6 +102,7 @@
101 count(1) 102 count(1)
102 from invite_settlement_item 103 from invite_settlement_item
103 where uid = #{uid,jdbcType=INTEGER} and type = #{type,jdbcType=INTEGER} and invite_settlement_id = #{inviteSettlementId,jdbcType=INTEGER} 104 where uid = #{uid,jdbcType=INTEGER} and type = #{type,jdbcType=INTEGER} and invite_settlement_id = #{inviteSettlementId,jdbcType=INTEGER}
  105 + and <![CDATA[ create_time <= #{settlementTime,jdbcType=INTEGER}]]>
104 </select> 106 </select>
105 107
106 <select id="selectStatsByUidTypeAndInviteSettlementIdGroupBySellerUid" resultType="com.yohoufo.dal.order.model.InviteSettlementItemStats" > 108 <select id="selectStatsByUidTypeAndInviteSettlementIdGroupBySellerUid" resultType="com.yohoufo.dal.order.model.InviteSettlementItemStats" >
@@ -113,6 +115,7 @@ @@ -113,6 +115,7 @@
113 where uid = #{uid,jdbcType=INTEGER} 115 where uid = #{uid,jdbcType=INTEGER}
114 and type = #{type,jdbcType=INTEGER} 116 and type = #{type,jdbcType=INTEGER}
115 and invite_settlement_id = #{inviteSettlementId,jdbcType=INTEGER} 117 and invite_settlement_id = #{inviteSettlementId,jdbcType=INTEGER}
  118 + and <![CDATA[ create_time <= #{settlementTime,jdbcType=INTEGER}]]>
116 group by seller_uid 119 group by seller_uid
117 </select> 120 </select>
118 121
@@ -77,10 +77,10 @@ public class InviterSettleService { @@ -77,10 +77,10 @@ public class InviterSettleService {
77 return; 77 return;
78 } 78 }
79 BankCard bankCard = bankCardService.getBankCard(uid); 79 BankCard bankCard = bankCardService.getBankCard(uid);
80 - if (Objects.isNull(bankCard)) {  
81 - log.warn("settle for {} end bank card is null.", uid);  
82 - return;  
83 - } 80 +// if (Objects.isNull(bankCard)) {
  81 +// log.warn("settle for {} end bank card is null.", uid);
  82 +// return;
  83 +// }
84 // 新建结算单 84 // 新建结算单
85 log.info("settle for {} create a new settlement.", uid); 85 log.info("settle for {} create a new settlement.", uid);
86 InviteSettlement settlement = new InviteSettlement(); 86 InviteSettlement settlement = new InviteSettlement();
@@ -90,11 +90,15 @@ public class InviterSettleService { @@ -90,11 +90,15 @@ public class InviterSettleService {
90 settlement.setSettleCode(0); 90 settlement.setSettleCode(0);
91 settlement.setSettleAmount(BigDecimal.ZERO); 91 settlement.setSettleAmount(BigDecimal.ZERO);
92 settlement.setSettleTime(0); 92 settlement.setSettleTime(0);
  93 +
  94 + if (Objects.nonNull(bankCard)){
93 settlement.setName(bankCard.getName()); 95 settlement.setName(bankCard.getName());
94 settlement.setIdCardNo(bankCard.getIdCardNo()); 96 settlement.setIdCardNo(bankCard.getIdCardNo());
95 settlement.setBankName(bankCard.getBankName()); 97 settlement.setBankName(bankCard.getBankName());
96 settlement.setBankBranch(bankCard.getBankBranch()); 98 settlement.setBankBranch(bankCard.getBankBranch());
97 settlement.setBankCardNo(bankCard.getBankCardNo()); 99 settlement.setBankCardNo(bankCard.getBankCardNo());
  100 + }
  101 +
98 settlement.setStatus(InviteSettlement.STATUS_WAIT_SETTLE); 102 settlement.setStatus(InviteSettlement.STATUS_WAIT_SETTLE);
99 inviteSettlementMapper.insert(settlement); 103 inviteSettlementMapper.insert(settlement);
100 // 计算结算金额 104 // 计算结算金额
@@ -118,7 +122,7 @@ public class InviterSettleService { @@ -118,7 +122,7 @@ public class InviterSettleService {
118 BigDecimal settleAmount; 122 BigDecimal settleAmount;
119 if (settleType == InviteSettlement.SETTLE_TYPE_STORED) { 123 if (settleType == InviteSettlement.SETTLE_TYPE_STORED) {
120 // type1方式结算金额 124 // type1方式结算金额
121 - settleAmount = calculateSettleAmountOfType1(uid, settlementId); 125 + settleAmount = calculateSettleAmountOfType1(uid, settlementId, settleTime);
122 log.info("settle for {} calculate settle amount for settlement {}, the amount of type1 is {}.", 126 log.info("settle for {} calculate settle amount for settlement {}, the amount of type1 is {}.",
123 uid, settlementId, settleAmount); 127 uid, settlementId, settleAmount);
124 } else { 128 } else {
@@ -142,15 +146,15 @@ public class InviterSettleService { @@ -142,15 +146,15 @@ public class InviterSettleService {
142 * @param settlementId 146 * @param settlementId
143 * @return 147 * @return
144 */ 148 */
145 - private BigDecimal calculateSettleAmountOfType1(int uid, int settlementId) { 149 + private BigDecimal calculateSettleAmountOfType1(int uid, int settlementId, LocalDateTime settleTime) {
146 int type = 1; 150 int type = 1;
147 inviteSettlementItemMapper.updateToSettled( 151 inviteSettlementItemMapper.updateToSettled(
148 uid, 152 uid,
149 type, 153 type,
150 InviteSettlementItem.STATUS_ENABLE, 154 InviteSettlementItem.STATUS_ENABLE,
151 InviteSettlementItem.STATUS_SETTLED, 155 InviteSettlementItem.STATUS_SETTLED,
152 - settlementId);  
153 - int totalElements = inviteSettlementItemMapper.selectCountByUidTypeAndInviteSettlementId(uid, type, settlementId); 156 + settlementId, DateUtil.getTimestampOfDateTime(settleTime));
  157 + int totalElements = inviteSettlementItemMapper.selectCountByUidTypeAndInviteSettlementId(uid, type, settlementId, DateUtil.getTimestampOfDateTime(settleTime));
154 log.info("settle for calculateSettleAmountOfType1 totalElements is {}, uid is {}, uid is {}, settlementId is {}", totalElements, uid, type, settlementId); 158 log.info("settle for calculateSettleAmountOfType1 totalElements is {}, uid is {}, uid is {}, settlementId is {}", totalElements, uid, type, settlementId);
155 return InviteSettlementUtils.calculateSettleAmountOfType1(totalElements); 159 return InviteSettlementUtils.calculateSettleAmountOfType1(totalElements);
156 } 160 }
@@ -169,9 +173,10 @@ public class InviterSettleService { @@ -169,9 +173,10 @@ public class InviterSettleService {
169 type, 173 type,
170 InviteSettlementItem.STATUS_ENABLE, 174 InviteSettlementItem.STATUS_ENABLE,
171 InviteSettlementItem.STATUS_SETTLED, 175 InviteSettlementItem.STATUS_SETTLED,
172 - settlementId); 176 + settlementId, DateUtil.getTimestampOfDateTime(settleTime));
173 // 待结算用户统计 177 // 待结算用户统计
174 - List<InviteSettlementItemStats> statsList = inviteSettlementItemMapper.selectStatsByUidTypeAndInviteSettlementIdGroupBySellerUid(uid, type, settlementId); 178 + List<InviteSettlementItemStats> statsList = inviteSettlementItemMapper.selectStatsByUidTypeAndInviteSettlementIdGroupBySellerUid(uid, type,
  179 + settlementId,DateUtil.getTimestampOfDateTime(settleTime));
175 // 被邀请时间 180 // 被邀请时间
176 Map<Integer, Integer> invitees = inviteRecordMapper.selectByInviterUid(uid).stream() 181 Map<Integer, Integer> invitees = inviteRecordMapper.selectByInviterUid(uid).stream()
177 .collect(Collectors.toMap(InviteRecord::getInviteeUid, InviteRecord::getCreateTime)); 182 .collect(Collectors.toMap(InviteRecord::getInviteeUid, InviteRecord::getCreateTime));