Authored by mali

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

... ... @@ -103,4 +103,6 @@ public interface StorageDepositMapper {
int updateValidStatus(@Param("id")Integer id);
int updateSellLock(@Param("id")Integer id, @Param("sellLock")Integer sellLock, @Param("preSellLock")Integer preSellLock);
}
\ No newline at end of file
... ...
... ... @@ -49,6 +49,8 @@ public class StorageDeposit {
private Integer depositType;
private Long parentOrderCode;
private Integer sellLock;
public Long getParentOrderCode() {
return parentOrderCode;
... ... @@ -233,4 +235,13 @@ public class StorageDeposit {
public void setNewSkup(Integer newSkup) {
this.newSkup = newSkup;
}
public Integer getSellLock() {
return sellLock;
}
public void setSellLock(Integer sellLock) {
this.sellLock = sellLock;
}
}
\ No newline at end of file
... ...
... ... @@ -25,6 +25,7 @@
<result column="deposit_type" property="depositType" jdbcType="INTEGER" />
<result column="source" property="source" jdbcType="INTEGER" />
<result column="parent_order_code" property="parentOrderCode" jdbcType="BIGINT" />
<result column="sell_lock" property="sellLock" jdbcType="INTEGER" />
</resultMap>
<resultMap id="CountResultMap" type="com.yohoufo.dal.order.model.StorageDepositCount" >
... ... @@ -38,7 +39,7 @@
<sql id="Base_Column_List" >
id, product_id, goods_id, storage_id, deposit_code, shelf_code, owner_uid, order_code,
skup, status, order_status, update_time, create_time, deposit_start_time, deposit_end_time,
edit_pid, del_status, out_type, new_order_code, new_skup, parent_order_code, source, deposit_type, parent_order_code
edit_pid, del_status, out_type, new_order_code, new_skup, parent_order_code, source, deposit_type, parent_order_code, sell_lock
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
... ... @@ -278,4 +279,12 @@
where id=#{id} and del_status=1
</update>
<update id="updateSellLock">
update storage_deposit
set sell_lock = #{sellLock,jdbcType=INTEGER} ,update_time = unix_timestamp(now())
where id = #{id,jdbcType=INTEGER}
AND sell_lock = #{preSellLock,jdbcType=INTEGER}
AND del_status = 0
</update>
</mapper>
\ No newline at end of file
... ...
... ... @@ -249,7 +249,7 @@ public class DepositController {
@RequestMapping(params = "method=ufo.deposit.list")
@Cachable(expire = 30, pageArgs = {2,3})
public ApiResponse save(@RequestParam("uid") Integer uid, @RequestParam("storageId") Integer storageId,
public ApiResponse queryListByUidAndStorageId(@RequestParam("uid") Integer uid, @RequestParam("storageId") Integer storageId,
@RequestParam(value = "page", required = false, defaultValue = "1") Integer page,
@RequestParam(value = "limit", required = false, defaultValue = "10") Integer limit) {
LOG.info("ufo.deposit.list in. uid is {}", uid);
... ...
... ... @@ -133,5 +133,14 @@ public interface DepositService {
* @return
*/
boolean updateDepositAfterCancelBuy(Integer uid, String depositCode);
/**
* 更新出售锁状态
* @param uid
* @param depositCode
* @param sellLock
* @return
*/
int updateSellLock(Integer uid, String depositCode, Integer sellLock);
}
... ...
... ... @@ -10,14 +10,23 @@ import java.util.concurrent.*;
public class ThreadPoolFactory {
static class GoodKids{
private static ForkJoinPool forkJoinPool ;
private static ThreadPoolExecutor threadpool ;
private final static ForkJoinPool forkJoinPool ;
private final static ThreadPoolExecutor threadpool ;
private final static ExecutorService executorService ;
private final static ExecutorService appraiseExecutorService;
private final static ExecutorService depositRebateExecutorService;
static {
int numberOfProcessorsAvailable = Runtime.getRuntime().availableProcessors();
forkJoinPool = new ForkJoinPool(6);
threadpool = new ThreadPoolExecutor(4, 10, 60, TimeUnit.SECONDS,
threadpool = new ThreadPoolExecutor(numberOfProcessorsAvailable, numberOfProcessorsAvailable*2, 60, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(100), NamedThreadFactory.newThreadFactory("buyer-cancel-order"));
executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2);
executorService = Executors.newFixedThreadPool(numberOfProcessorsAvailable * 2);
//appraise
appraiseExecutorService = new ThreadPoolExecutor(numberOfProcessorsAvailable, numberOfProcessorsAvailable * 2, 60, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(1000), NamedThreadFactory.newThreadFactory("appraise"));
//
depositRebateExecutorService = new ThreadPoolExecutor(numberOfProcessorsAvailable , numberOfProcessorsAvailable * 2, 60, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(10), NamedThreadFactory.newThreadFactory("depositRebate"));
}
... ... @@ -35,4 +44,13 @@ public class ThreadPoolFactory {
public static ExecutorService getCommomExecutorService(){
return GoodKids.executorService;
}
public static ExecutorService getAppraiseExecutorService(){
return GoodKids.appraiseExecutorService;
}
public static ExecutorService getDepositRebateExecutorService(){
return GoodKids.depositRebateExecutorService;
}
}
... ...
... ... @@ -17,21 +17,17 @@ import com.yohoufo.order.constants.AlarmConfig;
import com.yohoufo.order.model.request.TranseferCellNode;
import com.yohoufo.order.model.request.TransferMoneyRequest;
import com.yohoufo.order.service.IGoodsService;
import com.yohoufo.order.service.handler.transfer.TransferChancelSelector;
import com.yohoufo.order.service.concurrent.ThreadPoolFactory;
import com.yohoufo.order.service.proxy.OrderStatusFlowService;
import com.yohoufo.order.service.support.codegenerator.OrderCodeGenerator;
import com.yohoufo.order.utils.LoggerUtils;
import com.yohoufo.order.utils.NamedThreadFactory;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import java.math.BigDecimal;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
public abstract class AbsGoodsServiceOrderService implements IGoodsService {
... ... @@ -46,9 +42,6 @@ public abstract class AbsGoodsServiceOrderService implements IGoodsService {
OrderCodeGenerator orderCodeGenerator;
@Autowired
private TransferChancelSelector transferChancelSelector;
@Autowired
TransferService transferService;
@Autowired
... ... @@ -60,9 +53,7 @@ public abstract class AbsGoodsServiceOrderService implements IGoodsService {
@Autowired
UfoOrderPayConfigReader ufoOrderPayConfigReader;
private ExecutorService executorService = new ThreadPoolExecutor(5, 10, 60, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(1000),
NamedThreadFactory.newThreadFactory("appraise"));
/**
* 申请寄存返利
... ... @@ -90,7 +81,7 @@ public abstract class AbsGoodsServiceOrderService implements IGoodsService {
List<AppraiseOrder> depositCodeList = appraiseOrderList.stream()
.filter(appraiseOrder -> appraiseOrder.getAttributes() == OrderAttributes.DEPOSITE.getCode())
.collect(Collectors.toList());
final ExecutorService executorService = ThreadPoolFactory.getDepositRebateExecutorService();
executorService.execute(() -> {
// 只返4单
int DEFAULT_REBATE_CNT = ufoOrderPayConfigReader.depositRebateCnt();
... ...
... ... @@ -37,7 +37,7 @@ import com.yohoufo.order.model.response.AppraiseAddressResp;
import com.yohoufo.order.mq.TopicConstants;
import com.yohoufo.order.service.*;
import com.yohoufo.order.service.cache.CacheCleaner;
import com.yohoufo.order.service.cache.CacheKeyBuilder;
import com.yohoufo.order.service.concurrent.ThreadPoolFactory;
import com.yohoufo.order.service.handler.RefundEarnestMoneyHandler;
import com.yohoufo.order.service.handler.RefundGoodsMoneyHandler;
import com.yohoufo.order.service.handler.penalty.PenaltyResult;
... ... @@ -49,7 +49,6 @@ import com.yohoufo.order.service.proxy.*;
import com.yohoufo.order.service.seller.orderMeta.SellerAddressService;
import com.yohoufo.order.service.seller.setting.SellerService;
import com.yohoufo.order.utils.BuyerOrderUtils;
import com.yohoufo.order.utils.NamedThreadFactory;
import com.yohoufo.order.utils.PaymentHelper;
import lombok.Data;
import org.apache.commons.collections.CollectionUtils;
... ... @@ -61,11 +60,11 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import java.util.stream.Collectors;
... ... @@ -80,9 +79,7 @@ public class AppraiseService {
private static final Logger LOGGER = LoggerFactory.getLogger(AppraiseService.class);
private ExecutorService executorService = new ThreadPoolExecutor(5, 10, 60, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(1000),
NamedThreadFactory.newThreadFactory("appraise"));
private static final ExecutorService executorService = ThreadPoolFactory.getAppraiseExecutorService();
@Autowired
private IExpressInfoService expressInfoService;
... ... @@ -191,8 +188,6 @@ public class AppraiseService {
@Autowired
private AppraiseOrderGoodsMapper appraiseOrderGoodsMapper;
@Autowired
private BuyerOrderAssistant buyerOrderAssistant;
@Autowired
private IBuyerOrderMetaService buyerOrderMetaService;
... ...
... ... @@ -73,8 +73,6 @@ import static org.apache.zookeeper.ZooDefs.OpCode.delete;
@Service
public class BuyerOrderCancelService {
private ExecutorService executorService = new ThreadPoolExecutor(4, 10,
60, TimeUnit.SECONDS, new ArrayBlockingQueue<>(1000), NamedThreadFactory.newThreadFactory("buyer-order-cancel"));
private Logger logger = LoggerUtils.getOrderCloseLogger();
... ... @@ -656,7 +654,7 @@ public class BuyerOrderCancelService {
private void asyncRefundGoodsAmount() {
final ExecutorService executorService = ThreadPoolFactory.getBuyerCancelThreadPool();
executorService.execute(()->{
BigDecimal leftGoodsMoney = buyerOrder.getAmount();
... ... @@ -678,6 +676,7 @@ public class BuyerOrderCancelService {
}
private void saveFailRecord(int uid, long orderCode, String failReason){
final ExecutorService executorService = ThreadPoolFactory.getBuyerCancelThreadPool();
executorService.execute(()-> {
BuyerOrderMeta record = new BuyerOrderMeta();
record.setOrderCode(orderCode);
... ...
... ... @@ -509,6 +509,8 @@ public class DepositServiceImpl implements DepositService {
if (storageId != null) {
Method queryUserStorageOffCount = DepositController.class.getMethod("queryUserStorageOffCount", new Class[]{Integer.class, Integer.class});
cacheAop.clearCache(queryUserStorageOffCount, new Object[]{uid, storageId});
Method queryListByUidAndStorageId = DepositController.class.getMethod("queryListByUidAndStorageId", new Class[]{Integer.class, Integer.class});
cacheAop.clearCache(queryListByUidAndStorageId, new Object[]{uid, storageId});
}
Method queryUserStorageCount = DepositController.class.getMethod("queryUserStorageCount", new Class[]{Integer.class});
... ... @@ -864,6 +866,17 @@ public class DepositServiceImpl implements DepositService {
return num > 0 ? true : false;
}
@Override
public int updateSellLock(Integer uid, String depositCode, Integer sellLock) {
StorageDeposit deposit = storageDepositMapper.queryByDepositCode(uid, depositCode);
if(null == deposit) {
throw new UfoServiceException(400, "寄存商品不存在");
}
Integer preSellLock = sellLock.intValue() == 0 ? 1: 0;
return storageDepositMapper.updateSellLock(deposit.getId(), sellLock, preSellLock);
}
private List<DepositDetailBo> convertDepositResp(List<StorageDeposit> list, List<Long> orderCodeList){
Map<Long, BigDecimal> orderCodePriceMap = Maps.newHashMap();
List<BuyerOrder> buyerOrderList = buyerOrderMapper.selectByOrderCodes(orderCodeList, null);
... ...