Authored by mali

Merge branch 'test6.8.9' of http://git.yoho.cn/ufo/yohoufo-fore into test6.8.9

... ... @@ -14,4 +14,6 @@ public interface SellerJoinHistoryMapper {
int updateByPrimaryKeySelective(SellerJoinHistory record);
int updateByPrimaryKey(SellerJoinHistory record);
int selectCountByCertNo(String certNo);
}
\ No newline at end of file
... ...
... ... @@ -79,4 +79,8 @@
create_time = #{createTime,jdbcType=INTEGER}
where id = #{id,jdbcType=INTEGER}
</update>
<select id="selectCountByCertNo" resultMap="BaseResultMap" parameterType="java.lang.String" >
select count(*) from seller_join_history
where cert_no = #{certNo,jdbcType=VARCHAR}
</select>
</mapper>
\ No newline at end of file
... ...
... ... @@ -174,7 +174,7 @@ public class MerchantOrderPaymentService extends AbstractOrderPaymentService {
logger.error("重新入驻首次充值保证金={},发现入驻状态异常,uid={},times={}", amount, uid, sw.getJoinTimes());
return;
}
if (!canRejoin(uid)) {
if (!canRejoin(uid, sw, cert)) {
CommonAlarmEventPublisher.publish("重新入驻首次充值保证金失败", "ufo.order.recharge", "超过入最大驻次数:uid=" + uid + ",充值订单号为:" + orderCode+", 充值金额为:"+amount);
logger.error("重新入驻首次充值保证金={},发现已超过最大入驻次数,uid={},times={}", amount, uid, sw.getJoinTimes());
return;
... ... @@ -303,15 +303,35 @@ public class MerchantOrderPaymentService extends AbstractOrderPaymentService {
}
}
public boolean canRejoin(Integer uid) {
SellerWallet sw = sellerWalletMapper.selectByUidAndType(uid, 1);
public boolean canRejoin(Integer uid, SellerWallet sw, ZhiMaCert cert) {
if (sw == null) {
sw = sellerWalletMapper.selectByUidAndType(uid, 1);
}
if (sw == null) {
return true;
}
if (sw.getStatus() == null || sw.getStatus() != 0 || sw.getJoinTimes() == null) {
return false;
}
return sw.getJoinTimes() < getSellerMaxReJoinTimes();
int maxReJoin = getSellerMaxReJoinTimes();
if (sw.getJoinTimes() >= maxReJoin) {
return false;
}
if (cert == null) {
try {
ApiResponse<?> resp = ufoServiceCaller.call("ufo.user.zhiMaCertInfo", ApiResponse.class, uid);
cert = (ZhiMaCert) resp.getData();
} catch (Exception e) {
return false;
}
}
if (cert == null) {
return true;
}
if (StringUtils.isBlank(cert.getCertNo())) {
return false;
}
return sellerJoinHistoryMapper.selectCountByCertNo(cert.getCertNo()) <= maxReJoin;
}
private void sellerDealAfterPay(Integer uid, long orderCode, BigDecimal allMoney) {
... ...
... ... @@ -47,7 +47,7 @@ public class SellerOrderPriceChangeHandler implements IEventHandler<SellerOrderP
@Redis("gwNoSyncRedis")
YHRedisTemplate yhRedisTemplate;
private final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
private final SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
@Override
@Subscribe
... ... @@ -84,7 +84,7 @@ public class SellerOrderPriceChangeHandler implements IEventHandler<SellerOrderP
noticeList = noticeList.stream().filter(r->!members.contains(getValueForSet(r))).collect(Collectors.toList());
}
//用map保证,一个uid只有一条,防止消息多发
Map<Integer,SellerOrderGoods> noticeSellerMap = noticeList.stream().collect(Collectors.toMap(SellerOrderGoods::getUid, r -> r));
Map<Integer,SellerOrderGoods> noticeSellerMap = noticeList.stream().collect(Collectors.toMap(SellerOrderGoods::getUid, r -> r,(value1, value2 )->value2));
logger.info("Subscribe SellerOrderPriceChangeEvent begin send msg, event {},noticeSellerMap {} ", event,noticeSellerMap);
//发消息 and push
if(noticeSellerMap.size()>0){
... ... @@ -103,6 +103,6 @@ public class SellerOrderPriceChangeHandler implements IEventHandler<SellerOrderP
}
public static RedisKeyBuilder getRedisKeyBuilder(String dateString,Integer storageId){
return RedisKeyBuilder.newInstance().appendFixed("ufo:order:price:change:").appendVar(dateString+"-"+storageId);
return RedisKeyBuilder.newInstance().appendFixed("ufo:order:price:change:").appendVar(dateString+":"+storageId);
}
}
... ...
... ... @@ -436,7 +436,7 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService {
//
int sellerUid = dataNode.buyerOrderInDB.getSellerUid();
inBoxFacade.noticSellerWhenBuyerCancel(sellerUid, psog.getProductName());
inBoxFacade.noticSellerWhenBuyerCancel(sellerUid, psog);
inBoxFacade.buyerCancelOrder(orderRequest.getUid(), orderCode);
//
... ...
... ... @@ -76,9 +76,9 @@ public class StoreSellerServiceImpl implements IStoredSellerService {
public SellerResp entryStatus(Integer uid){
logger.info("StoredSellerServiceImpl entryStatus uid is {} ",uid);
Boolean isZhiMaCert=false;
ZhiMaCert zhiMaCert = null;
if(zhiMaCertSwitch){
ZhiMaCert zhiMaCert = getZhiMaCertInfo(uid);
zhiMaCert = getZhiMaCertInfo(uid);
if(null != zhiMaCert){
isZhiMaCert = true;
}
... ... @@ -100,7 +100,7 @@ public class StoreSellerServiceImpl implements IStoredSellerService {
if(isStoredSeller){
storedBefore = true;
}else{
storedBefore = !merchantOrderPaymentService.canRejoin(uid);
storedBefore = !merchantOrderPaymentService.canRejoin(uid, null, zhiMaCert);
}
EntrySellerType entrySellerType = sellerService.getEntrySellerType(uid);
... ...
... ... @@ -150,7 +150,7 @@ public class StoredSellerDepositServiceImpl implements IStoredSellerDepositServi
throw new UfoServiceException(400, "金额不合法,预存金额必须大于0");
}
if (!merchantOrderPaymentService.canRejoin(uid)) {
if (!merchantOrderPaymentService.canRejoin(uid, null, null)) {
throw new UfoServiceException(400, "入驻次数已经达到上限!");
}
/*
... ...
... ... @@ -840,18 +840,21 @@ public class InBoxFacade {
* 交易关闭:订单生成,买家取消订单(主动 超时未支付时)
* 去掉短信发送 modify by craig.qin 20181013
* @param sellerUid
* @param prdName
*/
public void noticSellerWhenBuyerCancel(int sellerUid, String prdName) {
public void noticSellerWhenBuyerCancel(int sellerUid, SellerOrderGoods sog ) {
try {
String prdName =sog.getProductName();
String sizeName=sog.getSizeName();
executorService.execute(() -> {
Product product = productMapper.selectByPrimaryKey(sog.getProductId());
String productCode = product.getProductCode();
InboxBusinessTypeEnum ibt = InboxBusinessTypeEnum.SALE_CLOSED_BUYER;
String params = buildParams(prdName);
String params = buildParams(prdName,sizeName,productCode);
InboxReqVO req = buildInboxReqVO(sellerUid, params, ibt);
InBoxResponse resp = inBoxSDK.addInbox(req);
logger.info("record noticSellerWhenBuyerCancel inbox msg, sellerUid {}, prdName {}, resp {}",
sellerUid, prdName, resp);
logger.info("record noticSellerWhenBuyerCancel inbox msg, sellerUid {}, sog {}, resp {}",
sellerUid, sog, resp);
//短信
/**
... ... @@ -870,8 +873,8 @@ public class InBoxFacade {
});
} catch (Exception e) {
logger.warn("InBoxFacade noticSellerWhenBuyerCancel error inbox msg, sellerUid {}, prdName {} ",
sellerUid, prdName, e);
logger.warn("InBoxFacade noticSellerWhenBuyerCancel error inbox msg, sellerUid {}, sog {} ",
sellerUid, sog, e);
}
}
... ...