Authored by chenchao

fix

... ... @@ -10,6 +10,7 @@ import com.yohobuy.ufo.model.order.resp.EntryThreshold;
import com.yohoufo.common.exception.UfoServiceException;
import com.yohoufo.common.utils.DateUtil;
import com.yohoufo.dal.order.SellerEnterApplyMapper;
import com.yohoufo.dal.order.SellerLevelFuncMapper;
import com.yohoufo.dal.order.StoredSellerMapper;
import com.yohoufo.dal.order.model.SellerEnterApply;
import com.yohoufo.dal.order.model.StoredSeller;
... ... @@ -50,6 +51,12 @@ public class SellerEnterApplyService {
@Autowired
private StoredSellerMapper storedSellerMapper;
@Autowired
private SellerService sellerService;
@Autowired
private SellerLevelFuncMapper sellerLevelFuncMapper;
/**
* 申请成为超级卖家
* 对于未支付的某一种身份申请做订单号替换
... ... @@ -58,6 +65,7 @@ public class SellerEnterApplyService {
*/
public void applySuperEntry(Integer uid, Long orderCode, EntrySellerType targetEST){
logger.info("in applySuperEntry uid {} orderCode {} targetEST {}", uid, orderCode, targetEST);
if (Objects.isNull(orderCode)){
logger.warn("in applySuperEntry uid {} orderCode is null targetEST {}", uid, targetEST);
//throw new UfoServiceException(400, "orderCode is null");
... ... @@ -66,7 +74,17 @@ public class SellerEnterApplyService {
logger.warn("in applySuperEntry uid {} orderCode {} targetEST is null", uid, orderCode);
throw new UfoServiceException(400, "EntrySellerType is null");
}
SellerService.SellerWrapper sellerWrapper = new SellerService().new SellerWrapper(uid).storedSellerDataSource(storedSellerMapper::selectByUid).buildBase();
if (Objects.equals(targetEST, EntrySellerType.SPECIAL_SUPER)
|| Objects.equals(targetEST, EntrySellerType.NOT_ENTRY)){
logger.warn("in applySuperEntry no need apply uid {} orderCode {} targetEST {}",
uid, orderCode, targetEST);
return;
}
SellerWrapper sellerWrapper = new SellerWrapper(uid,logger)
.addSpecialSuperFunc(sellerService::isSpecialSuper)
.storedSellerDataSource(storedSellerMapper::selectByUid)
.buildBase();
SellerBo sellerBo = sellerWrapper.build();
EntrySellerType currentEST = sellerBo.getEntrySellerType();
... ... @@ -179,12 +197,14 @@ public class SellerEnterApplyService {
logger.warn("in upgradeLevel one orderCode mapped multiple apply,uid {} orderCode {}", uid, orderCode);
}
//卖家包装类
SellerService.SellerWrapper sellerWrapper = new SellerService().new SellerWrapper(uid)
.storedSellerDataSource(storedSellerMapper::selectByUid).buildBase();
SellerWrapper sellerWrapper = new SellerWrapper(uid,logger)
.storedSellerDataSource(storedSellerMapper::selectByUid)
.addSpecialSuperFunc(sellerService::isSpecialSuper)
.buildBase();
upgradeLevel(sellerWrapper, orderCode, left, seaList);
}
public void upgradeLevel(SellerService.SellerWrapper sellerWrapper,
public void upgradeLevel(SellerWrapper sellerWrapper,
Long orderCode, BigDecimal left, List<SellerEnterApply> seaList){
int uid = sellerWrapper.getUid();
//持久化的入驻信息
... ... @@ -243,7 +263,7 @@ public class SellerEnterApplyService {
uid, orderCode);
}else if (Objects.equals(currentEnterType, EntrySellerType.SUPER_ENTRY.getCode())){
//超级卖家
sellerWrapper.buildSuperEnterStageLevel();
sellerWrapper.buildSuperEnterStageLevel(sellerLevelFuncMapper::selectByPrimaryKey);
SuperEnterStageLevel sesl = sellerBo.getSuperEnterStageLevel();
Integer currentLevel = null;
boolean levelNeedUpgrade = Objects.nonNull(sesl)
... ... @@ -286,7 +306,7 @@ public class SellerEnterApplyService {
* @param left
* @return
*/
public int changeLevel4Super(SellerService.SellerWrapper sellerWrapper, BigDecimal left){
public int changeLevel4Super(SellerWrapper sellerWrapper, BigDecimal left){
int uid = sellerWrapper.getUid();
//持久化的入驻信息
SellerBo sellerBo = sellerWrapper.build();
... ... @@ -304,7 +324,7 @@ public class SellerEnterApplyService {
logger.info("in changeLevel4Super ready change StoredSeller level func, uid {} currentEnterType {} target Level {}",
uid, currentEnterType, level);
//超级卖家
sellerWrapper.buildSuperEnterStageLevel();
sellerWrapper.buildSuperEnterStageLevel(sellerLevelFuncMapper::selectByPrimaryKey);
SuperEnterStageLevel sesl = sellerBo.getSuperEnterStageLevel();
Integer currentLevel = null;
boolean levelNeedUpgrade = Objects.nonNull(sesl)
... ...
... ... @@ -129,7 +129,7 @@ public class SellerService {
return false;
}
private boolean isSpecialSuper(int uid){
public boolean isSpecialSuper(int uid){
List<Integer> uidList = getSuperEntrySellerUids();
logger.info("isSuperEntrySeller check uid {} uidList {}", uid, uidList);
if (CollectionUtils.isNotEmpty(uidList)){
... ... @@ -139,94 +139,7 @@ public class SellerService {
return false;
}
public class SellerWrapper{
@Getter
StoredSeller storedSeller;
@Getter
Integer uid;
Function<Integer,StoredSeller> storedSellerFunc;
SellerBo sellerBo = new SellerBo();
SellerWrapper(int uid){
this.uid = uid;
this.sellerBo.setUid(uid);
}
SellerWrapper storedSellerDataSource(Function<Integer,StoredSeller> storedSellerFunc){
this.storedSellerFunc = storedSellerFunc;
return this;
}
SellerWrapper buildBase(){
logger.info("buildBase uid {}", uid);
if (uid <= 0){
logger.warn("buildBase illegal uid {}", uid);
throw new UfoServiceException(401, "uid is not legal");
}
EntrySellerType est = null;
//case 1 : not entry
this.storedSeller = storedSellerFunc.apply(uid);//storedSellerMapper.selectByUid(uid);
if (Objects.isNull(storedSeller)){
est = EntrySellerType.NOT_ENTRY;
logger.info("buildBase storedSeller is null uid {} entryType {}",
uid, est);
}else {
//case 2:exit entry
Integer validStatus = storedSeller.getValidStatus();
Integer entryType = storedSeller.getEntryType();
logger.info("buildBase uid {} validStatus {} entryType {}",
uid, validStatus, entryType);
if (Objects.equals(StoredSellerStatusEnum.quit.getId(), validStatus)) {
est = EntrySellerType.NOT_ENTRY;
} else if (isSpecialSuper(uid)) {
//case 3:valid ok and in white list
est = EntrySellerType.SPECIAL_SUPER;
} else {
//case 4: left common or super
est = EntrySellerType.getEntrySellerType(entryType);
}
Integer funcId;
if (Objects.nonNull(funcId = storedSeller.getLevelFuncId())){
sellerBo.setLevelFuncId(funcId);
}
}
logger.info("buildBase uid {} EntrySellerType {}", uid, est);
if (Objects.nonNull(est)) {
sellerBo.setEntrySellerType(est);
sellerBo.setEntryTypeCode(est.getCode());
}
return this;
}
SellerWrapper buildSuperEnterStageLevel(){
EntrySellerType entrySellerType = sellerBo.getEntrySellerType();
if (Objects.nonNull(entrySellerType)){
//
Integer entryType = sellerBo.getEntryTypeCode();
if(Objects.equals(entryType, EntrySellerType.SUPER_ENTRY.getCode())){
Integer levelFuncId = sellerBo.getLevelFuncId();
if(Objects.nonNull(levelFuncId)){
SellerLevelFunc slf = sellerLevelFuncMapper.selectByPrimaryKey(levelFuncId);
logger.info("buildSuperEnterStageLevel SellerLevelFunc uid {} levelFuncId {} SellerLevelFunc {}",
uid, levelFuncId, slf);
Integer level = slf.getLevel();
SuperEnterStageLevel sesl = SuperEnterStageLevel.getSuperEnterStageLevel(level);
sellerBo.setSuperEnterStageLevel(sesl);
}
}
}
return this;
}
SellerBo build(){
return sellerBo;
}
}
/**
... ... @@ -236,7 +149,10 @@ public class SellerService {
*/
public EntrySellerType getEntrySellerType(int uid){
logger.info("getEntrySellerType uid {}", uid);
SellerBo sellerBo = new SellerWrapper(uid).storedSellerDataSource(storedSellerMapper::selectByUid).buildBase().build();
SellerBo sellerBo = new SellerWrapper(uid,logger)
.storedSellerDataSource(storedSellerMapper::selectByUid)
.addSpecialSuperFunc(this::isSpecialSuper)
.buildBase().build();
EntrySellerType est = sellerBo.getEntrySellerType();
logger.info("getEntrySellerType uid {} EntrySellerType {}", uid, est);
return est;
... ... @@ -271,8 +187,11 @@ public class SellerService {
}
public Boolean applySuperEnter(Integer uid){
SellerService.SellerWrapper sellerWrapper = new SellerService()
.new SellerWrapper(uid).storedSellerDataSource(storedSellerMapper::selectByUid).buildBase();
SellerWrapper sellerWrapper =
new SellerWrapper(uid,logger)
.addSpecialSuperFunc(this::isSpecialSuper)
.storedSellerDataSource(storedSellerMapper::selectByUid)
.buildBase();
SellerBo sellerBo = sellerWrapper.build();
EntrySellerType currentEST = sellerBo.getEntrySellerType();
EntrySellerType targetEST = EntrySellerType.SUPER_ENTRY;
... ...
package com.yohoufo.order.service.impl;
import com.yohobuy.ufo.model.enums.StoredSellerStatusEnum;
import com.yohobuy.ufo.model.order.bo.SellerBo;
import com.yohobuy.ufo.model.order.common.EntrySellerType;
import com.yohobuy.ufo.model.order.common.SuperEnterStageLevel;
import com.yohoufo.common.exception.UfoServiceException;
import com.yohoufo.dal.order.model.SellerLevelFunc;
import com.yohoufo.dal.order.model.StoredSeller;
import lombok.Getter;
import org.slf4j.Logger;
import java.util.Objects;
import java.util.function.Function;
/**
* Created by chao.chen on 2019/1/15.
*/
public class SellerWrapper {
@Getter
StoredSeller storedSeller;
@Getter
Integer uid;
private Logger logger;
Function<Integer,StoredSeller> storedSellerFunc;
Function<Integer,Boolean> isSpecialSuperFunc;
SellerBo sellerBo = new SellerBo();
SellerWrapper(int uid,Logger logger){
this.uid = uid;
this.sellerBo.setUid(uid);
this.logger = logger;
}
SellerWrapper storedSellerDataSource(Function<Integer,StoredSeller> storedSellerFunc){
this.storedSellerFunc = storedSellerFunc;
return this;
}
SellerWrapper addSpecialSuperFunc(Function<Integer,Boolean> isSpecialSuperFunc){
this.isSpecialSuperFunc = isSpecialSuperFunc;
return this;
}
SellerWrapper buildBase(){
logger.info("buildBase uid {}", uid);
if (uid <= 0){
logger.warn("buildBase illegal uid {}", uid);
throw new UfoServiceException(401, "uid is not legal");
}
EntrySellerType est = null;
//case 1 : not entry
this.storedSeller = storedSellerFunc.apply(uid);//storedSellerMapper.selectByUid(uid);
if (Objects.isNull(storedSeller)){
est = EntrySellerType.NOT_ENTRY;
logger.info("buildBase storedSeller is null uid {} entryType {}",
uid, est);
}else {
//case 2:exit entry
Integer validStatus = storedSeller.getValidStatus();
Integer entryType = storedSeller.getEntryType();
logger.info("buildBase uid {} validStatus {} entryType {}",
uid, validStatus, entryType);
if (Objects.equals(StoredSellerStatusEnum.quit.getId(), validStatus)) {
est = EntrySellerType.NOT_ENTRY;
} else if (isSpecialSuperFunc.apply(uid)) {
//case 3:valid ok and in white list
est = EntrySellerType.SPECIAL_SUPER;
} else {
//case 4: left common or super
est = EntrySellerType.getEntrySellerType(entryType);
}
Integer funcId;
if (Objects.nonNull(funcId = storedSeller.getLevelFuncId())){
sellerBo.setLevelFuncId(funcId);
}
}
logger.info("buildBase uid {} EntrySellerType {}", uid, est);
if (Objects.nonNull(est)) {
sellerBo.setEntrySellerType(est);
sellerBo.setEntryTypeCode(est.getCode());
}
return this;
}
SellerWrapper buildSuperEnterStageLevel(Function<Integer,SellerLevelFunc> slfDS){
EntrySellerType entrySellerType = sellerBo.getEntrySellerType();
if (Objects.nonNull(entrySellerType)){
//
Integer entryType = sellerBo.getEntryTypeCode();
if(Objects.equals(entryType, EntrySellerType.SUPER_ENTRY.getCode())){
Integer levelFuncId = sellerBo.getLevelFuncId();
if(Objects.nonNull(levelFuncId)){
SellerLevelFunc slf = slfDS.apply(levelFuncId);
logger.info("buildSuperEnterStageLevel SellerLevelFunc uid {} levelFuncId {} SellerLevelFunc {}",
uid, levelFuncId, slf);
Integer level = slf.getLevel();
SuperEnterStageLevel sesl = SuperEnterStageLevel.getSuperEnterStageLevel(level);
sellerBo.setSuperEnterStageLevel(sesl);
}
}
}
return this;
}
SellerBo build(){
return sellerBo;
}
}
... ...
package com.yohoufo.order.service;
import com.yohobuy.ufo.model.order.common.EntrySellerType;
import com.yohoufo.order.BaseWebTest;
import com.yohoufo.order.service.impl.SellerEnterApplyService;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Created by chao.chen on 2019/1/15.
*/
public class SellerEnterApplyServiceTest extends BaseWebTest {
@Autowired
private SellerEnterApplyService sellerEnterApplyService;
@Test
public void testApplySuperEntry(){
int uid = 500031424;
long order = 6666666666L;
sellerEnterApplyService.applySuperEntry(uid, order, EntrySellerType.SUPER_ENTRY);
}
}
... ...
... ... @@ -31,6 +31,10 @@ datasources:
- com.yohoufo.dal.product.IdentifyRecordsMapper
- com.yohoufo.dal.product.IdentifyRelationMapper
- com.yohoufo.dal.product.ProductChainMapper
- com.yohoufo.dal.product.PriceTrendSixtyDayMapper
- com.yohoufo.dal.product.PriceTrendMonthMapper
- com.yohoufo.dal.product.PriceTrendHalfYearMapper
- com.yohoufo.dal.product.PriceTrendDayMapper
ufo_order:
servers:
... ... @@ -70,6 +74,10 @@ datasources:
- com.yohoufo.dal.order.MetaConfigMapper
- com.yohoufo.dal.order.BuyerOrderStatusFlowMapper
- com.yohoufo.dal.order.QualityCheckMapper
- com.yohoufo.dal.order.BusinessLicenseMapper
- com.yohoufo.dal.order.SellerEnterApplyMapper
- com.yohoufo.dal.order.SellerFuncMapper
- com.yohoufo.dal.order.SellerLevelFuncMapper
ufo_promotion:
servers:
... ... @@ -95,4 +103,15 @@ datasources:
- com.yohoufo.dal.resource.ResourcesMapper
- com.yohoufo.dal.resource.ConfigTypeMapper
- com.yohoufo.dal.resource.ResourcesGoodsPoolMapper
line_shops:
servers:
- 192.168.102.219:3306
- 192.168.102.219:3306
username: yh_test
password: 9nm0icOwt6bMHjMusIfMLw==
daos:
- com.yohoufo.dal.product.IStoreInfoDAO
- com.yohoufo.dal.product.IStoreInfoExtendDAO
readOnlyInSlave: true
\ No newline at end of file
... ...