Authored by chenchao

fix common charge back process

@@ -3,7 +3,6 @@ package com.yohoufo.order.service.impl; @@ -3,7 +3,6 @@ package com.yohoufo.order.service.impl;
3 import com.yohobuy.ufo.model.enums.StoredSellerStatusEnum; 3 import com.yohobuy.ufo.model.enums.StoredSellerStatusEnum;
4 import com.yohobuy.ufo.model.order.bo.SellerBo; 4 import com.yohobuy.ufo.model.order.bo.SellerBo;
5 import com.yohobuy.ufo.model.order.bo.SellerLevelFuncBo; 5 import com.yohobuy.ufo.model.order.bo.SellerLevelFuncBo;
6 -import com.yohobuy.ufo.model.order.common.CommonEnterStageLevel;  
7 import com.yohobuy.ufo.model.order.common.EntrySellerType; 6 import com.yohobuy.ufo.model.order.common.EntrySellerType;
8 import com.yohobuy.ufo.model.order.common.SellerEnterApplyStatus; 7 import com.yohobuy.ufo.model.order.common.SellerEnterApplyStatus;
9 import com.yohobuy.ufo.model.order.common.SuperEnterStageLevel; 8 import com.yohobuy.ufo.model.order.common.SuperEnterStageLevel;
@@ -166,19 +165,12 @@ public class SellerEnterApplyService { @@ -166,19 +165,12 @@ public class SellerEnterApplyService {
166 seac.setUid(uid); 165 seac.setUid(uid);
167 seac.setOrderCode(orderCode); 166 seac.setOrderCode(orderCode);
168 List<SellerEnterApply> seaList = sellerEnterApplyMapper.selectByUOCET(seac); 167 List<SellerEnterApply> seaList = sellerEnterApplyMapper.selectByUOCET(seac);
169 - upgradeLevel(uid, orderCode, left, seaList); 168 + doAudit(uid, orderCode, left, seaList);
170 } 169 }
171 170
172 171
173 - public void upgradeLevel(int uid, Long orderCode, BigDecimal left, List<SellerEnterApply> seaList){  
174 - if (CollectionUtils.isEmpty(seaList)){  
175 - logger.warn("in upgradeLevel no record so that it's only charge order, uid {} orderCode {}",  
176 - uid, orderCode);  
177 - // return;  
178 - }  
179 - if (seaList.size()>1){  
180 - logger.warn("in upgradeLevel one orderCode mapped multiple apply,uid {} orderCode {}", uid, orderCode);  
181 - } 172 + public void doAudit(int uid, Long orderCode, BigDecimal left, List<SellerEnterApply> seaList){
  173 +
182 //卖家包装类 174 //卖家包装类
183 SellerWrapper sellerWrapper = new SellerWrapper(uid,logger) 175 SellerWrapper sellerWrapper = new SellerWrapper(uid,logger)
184 .storedSellerDataSource(storedSellerMapper::selectByUid) 176 .storedSellerDataSource(storedSellerMapper::selectByUid)
@@ -190,10 +182,39 @@ public class SellerEnterApplyService { @@ -190,10 +182,39 @@ public class SellerEnterApplyService {
190 public void upgradeLevel(SellerWrapper sellerWrapper, 182 public void upgradeLevel(SellerWrapper sellerWrapper,
191 Long orderCode, BigDecimal left, List<SellerEnterApply> seaList){ 183 Long orderCode, BigDecimal left, List<SellerEnterApply> seaList){
192 int uid = sellerWrapper.getUid(); 184 int uid = sellerWrapper.getUid();
193 - logger.info("in upgradeLevel uid {} orderCode {} left wallet {}",  
194 - uid, orderCode, left ); 185 + //是否有申请记录
  186 + //有两种:
  187 + // 1. 充值有订单号,根据订单号查询,
  188 + // 1.1 升级时充值有申请记录
  189 + // 1.2 普通充值没有申请记录
  190 + // 2. client 直接升级,根据请求的目标身份
  191 + //existApply 为false 只会是普通充值订单
  192 + boolean existApply = CollectionUtils.isNotEmpty(seaList);
  193 + logger.info("in upgradeLevel uid {} orderCode {} left wallet {} existApply {}",
  194 + uid, orderCode, left, existApply );
  195 + if (existApply){
  196 + processApplyOrder(sellerWrapper, left, orderCode, seaList);
  197 + }else {
  198 + processCommonChargeOrder(sellerWrapper, orderCode);
  199 + }
  200 + }
  201 +
  202 + /**
  203 + * 充值订单处理
  204 + * @param sellerWrapper
  205 + * @param left
  206 + * @param orderCode
  207 + * @param seaList
  208 + */
  209 + private void processApplyOrder(SellerWrapper sellerWrapper,BigDecimal left,
  210 + Long orderCode, List<SellerEnterApply> seaList){
  211 + int uid = sellerWrapper.getUid();
  212 + if (seaList.size() > 1) {
  213 + logger.warn("in upgradeLevel one orderCode mapped multiple apply,uid {} orderCode {}", uid, orderCode);
  214 + }
195 //持久化的入驻信息 215 //持久化的入驻信息
196 StoredSeller pss = sellerWrapper.getStoredSeller(); 216 StoredSeller pss = sellerWrapper.getStoredSeller();
  217 + boolean noStoredSeller = Objects.isNull(pss);
197 SellerBo sellerBo = sellerWrapper.build(); 218 SellerBo sellerBo = sellerWrapper.build();
198 //当前身份 219 //当前身份
199 EntrySellerType currentEST = sellerBo.getEntrySellerType(); 220 EntrySellerType currentEST = sellerBo.getEntrySellerType();
@@ -211,8 +232,6 @@ public class SellerEnterApplyService { @@ -211,8 +232,6 @@ public class SellerEnterApplyService {
211 //当前身份和申请时身份是否一致 232 //当前身份和申请时身份是否一致
212 Integer preEnterType; 233 Integer preEnterType;
213 boolean isMatchedET = Objects.equals(preEnterType=msea.getPreEnterType(), currentEnterType); 234 boolean isMatchedET = Objects.equals(preEnterType=msea.getPreEnterType(), currentEnterType);
214 - boolean noStoredSeller = Objects.isNull(pss);  
215 -  
216 logger.info("in upgradeLevel ready pass apply and add StoredSeller, uid {} orderCode {} currentEnterType {} PreEnterType {} noStoredSeller {} target Level {} isMatchedET {}", 235 logger.info("in upgradeLevel ready pass apply and add StoredSeller, uid {} orderCode {} currentEnterType {} PreEnterType {} noStoredSeller {} target Level {} isMatchedET {}",
217 uid, orderCode, currentEnterType,preEnterType, noStoredSeller, level, isMatchedET); 236 uid, orderCode, currentEnterType,preEnterType, noStoredSeller, level, isMatchedET);
218 if(Objects.equals(currentEnterType, EntrySellerType.NOT_ENTRY.getCode())){ 237 if(Objects.equals(currentEnterType, EntrySellerType.NOT_ENTRY.getCode())){
@@ -221,7 +240,6 @@ public class SellerEnterApplyService { @@ -221,7 +240,6 @@ public class SellerEnterApplyService {
221 if (!isPassedApply){ 240 if (!isPassedApply){
222 passApply(msea); 241 passApply(msea);
223 } 242 }
224 -  
225 if (noStoredSeller && isMatchedET){ 243 if (noStoredSeller && isMatchedET){
226 SellerLevelFuncBo slfb = sellerFuncService.getSellerLevelFunc(targetEst.getCode(), level); 244 SellerLevelFuncBo slfb = sellerFuncService.getSellerLevelFunc(targetEst.getCode(), level);
227 storedSellerService.addUserAsStoredSeller(uid, targetEst, slfb); 245 storedSellerService.addUserAsStoredSeller(uid, targetEst, slfb);
@@ -230,10 +248,10 @@ public class SellerEnterApplyService { @@ -230,10 +248,10 @@ public class SellerEnterApplyService {
230 uid, orderCode); 248 uid, orderCode);
231 } 249 }
232 250
233 - }else if (Objects.equals(currentEnterType, EntrySellerType.COMMON.getCode())) { 251 + }else if (Objects.equals(currentEnterType, EntrySellerType.COMMON.getCode())) {
234 //普通入驻 -> 超级 ,1. apply 状态 ,2. enter_seller 修改type & func list 252 //普通入驻 -> 超级 ,1. apply 状态 ,2. enter_seller 修改type & func list
235 passApply(msea); 253 passApply(msea);
236 - 254 + //
237 if (!noStoredSeller && isMatchedET){ 255 if (!noStoredSeller && isMatchedET){
238 SellerLevelFuncBo slfb = sellerFuncService.getSellerLevelFunc(targetEst.getCode(), level); 256 SellerLevelFuncBo slfb = sellerFuncService.getSellerLevelFunc(targetEst.getCode(), level);
239 storedSellerService.updateEnterSeller(uid, targetEst, slfb); 257 storedSellerService.updateEnterSeller(uid, targetEst, slfb);
@@ -241,7 +259,6 @@ public class SellerEnterApplyService { @@ -241,7 +259,6 @@ public class SellerEnterApplyService {
241 logger.warn("in upgradeLevel add StoredSeller fail, uid {} orderCode {}", 259 logger.warn("in upgradeLevel add StoredSeller fail, uid {} orderCode {}",
242 uid, orderCode); 260 uid, orderCode);
243 } 261 }
244 -  
245 }else if (Objects.equals(currentEnterType, EntrySellerType.SPECIAL_SUPER.getCode())){ 262 }else if (Objects.equals(currentEnterType, EntrySellerType.SPECIAL_SUPER.getCode())){
246 //白名单超级卖家 263 //白名单超级卖家
247 logger.warn("in upgradeLevel SPECIAL_SUPER no need any action, uid {} orderCode {}", 264 logger.warn("in upgradeLevel SPECIAL_SUPER no need any action, uid {} orderCode {}",
@@ -252,6 +269,48 @@ public class SellerEnterApplyService { @@ -252,6 +269,48 @@ public class SellerEnterApplyService {
252 } 269 }
253 } 270 }
254 271
  272 + /**
  273 + * 普通充值订单处理
  274 + * @param sellerWrapper
  275 + * @param orderCode
  276 + */
  277 + private void processCommonChargeOrder(SellerWrapper sellerWrapper,
  278 + Long orderCode){
  279 + int uid = sellerWrapper.getUid();
  280 +
  281 + SellerBo sellerBo = sellerWrapper.build();
  282 + //当前身份
  283 + EntrySellerType currentEST = sellerBo.getEntrySellerType();
  284 + Integer currentEnterType = currentEST.getCode();
  285 + logger.warn("in upgradeLevel no record so that it's only common charge order, uid {} orderCode {}",
  286 + uid, orderCode);
  287 +
  288 + if(Objects.equals(currentEnterType, EntrySellerType.NOT_ENTRY.getCode())){
  289 + //普通卖家 no way
  290 + logger.warn("in upgradeLevel no need any action, uid {} orderCode {} currentEnterType {}",
  291 + uid, orderCode, currentEnterType);
  292 +
  293 + }else if (Objects.equals(currentEnterType, EntrySellerType.COMMON.getCode())) {
  294 + //普通入驻 -> 超级 ,1. apply 状态 ,2. enter_seller 修改type & func list
  295 + logger.warn("in upgradeLevel no need any action, uid {} orderCode {} currentEnterType {}",
  296 + uid, orderCode, currentEnterType);
  297 +
  298 + }else if (Objects.equals(currentEnterType, EntrySellerType.SPECIAL_SUPER.getCode())){
  299 + //白名单超级卖家
  300 + logger.warn("in upgradeLevel no need any action, uid {} orderCode {} currentEnterType {}",
  301 + uid, orderCode, currentEnterType);
  302 + }else if (Objects.equals(currentEnterType, EntrySellerType.SUPER_ENTRY.getCode())){
  303 + //持久化的入驻信息
  304 + StoredSeller pss = sellerWrapper.getStoredSeller();
  305 + boolean isValid = Objects.equals(pss.getValidStatus(), StoredSellerStatusEnum.entered.getId());
  306 + if (isValid) {//身份等级配置
  307 + SellerLevelFuncBo slfb = sellerFuncService.getSellerLevelFuncWithWallet(sellerWrapper);
  308 + //超级卖家
  309 + upgradeSuperLevel(sellerWrapper, slfb.getLevel(), orderCode, currentEST, true);
  310 + }
  311 + }
  312 + }
  313 +
255 private int upgradeSuperLevel(SellerWrapper sellerWrapper,Integer level, Long orderCode, 314 private int upgradeSuperLevel(SellerWrapper sellerWrapper,Integer level, Long orderCode,
256 EntrySellerType targetEst, boolean isMatchedET){ 315 EntrySellerType targetEst, boolean isMatchedET){
257 316
@@ -114,14 +114,16 @@ public class SellerFuncService { @@ -114,14 +114,16 @@ public class SellerFuncService {
114 StoredSeller pss = sellerWrapper.getStoredSeller(); 114 StoredSeller pss = sellerWrapper.getStoredSeller();
115 boolean isValid = Objects.equals(pss.getValidStatus(), StoredSellerStatusEnum.entered.getId()); 115 boolean isValid = Objects.equals(pss.getValidStatus(), StoredSellerStatusEnum.entered.getId());
116 boolean existLevel = Objects.nonNull(currentLevel); 116 boolean existLevel = Objects.nonNull(currentLevel);
  117 + SellerLevelFuncBo slfb;
117 if (existLevel && isValid){ 118 if (existLevel && isValid){
118 - SellerLevelFuncBo slfb = getSellerLevelFunc(currentEST.getCode(), currentLevel); 119 + slfb = getSellerLevelFunc(currentEST.getCode(), currentLevel);
119 logger.info("in getSellerLevelFuncWithWallet SellerLevelFuncBo {} uid {}", slfb, uid); 120 logger.info("in getSellerLevelFuncWithWallet SellerLevelFuncBo {} uid {}", slfb, uid);
120 - return slfb; 121 +
121 }else{ 122 }else{
122 - logger.warn("in getSellerLevelFuncWithWallet getDefaultSLFB uid {}", uid);  
123 - return getDefaultSLFB(); 123 + slfb = getDefaultSLFB();
  124 + logger.warn("in getSellerLevelFuncWithWallet getDefault uid {} SLFB {}", uid, slfb);
124 } 125 }
  126 + return slfb;
125 } 127 }
126 128
127 public SellerLevelFuncBo getSellerLevelFunc(SellerWrapper sellerWrapper){ 129 public SellerLevelFuncBo getSellerLevelFunc(SellerWrapper sellerWrapper){
@@ -43,6 +43,13 @@ public class SellerEnterApplyServiceTest extends BaseWebTest { @@ -43,6 +43,13 @@ public class SellerEnterApplyServiceTest extends BaseWebTest {
43 } 43 }
44 44
45 @Test 45 @Test
  46 + public void testAuditCommonOrder(){
  47 + int uid = 500031424;
  48 + long order = 12345L;
  49 + sellerEnterApplyService.audit(uid, order, new BigDecimal(100));
  50 + }
  51 +
  52 + @Test
46 public void testChangeLevel4Super(){ 53 public void testChangeLevel4Super(){
47 int uid = 500031424; 54 int uid = 500031424;
48 SellerWrapper sellerWrapper =sellerService.getBaseSellerWrapper(uid); 55 SellerWrapper sellerWrapper =sellerService.getBaseSellerWrapper(uid);