## 新逻辑等级处理;
This commit is contained in:
		
							parent
							
								
									b2d29d0498
								
							
						
					
					
						commit
						87d968aeb3
					
				|  | @ -345,7 +345,7 @@ public interface IMemberServiceApi { | ||||||
|      * @param activateFlag       激活标记 |      * @param activateFlag       激活标记 | ||||||
|      * @return |      * @return | ||||||
|      */ |      */ | ||||||
|     R<?> otherRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt, Boolean activateFlag); |     R<?> otherRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt, Boolean activateFlag, CuMemberLevel cuMemberLevel); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 校验注册关系(是否跨团队) |      * 校验注册关系(是否跨团队) | ||||||
|  | @ -366,6 +366,4 @@ public interface IMemberServiceApi { | ||||||
|      */ |      */ | ||||||
|     R<Integer> getMemberPhoneCount(String phone); |     R<Integer> getMemberPhoneCount(String phone); | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|     R<Boolean> saveMemberLevel(CuMemberLevel memberLevel); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -17,7 +17,6 @@ import com.hzs.member.base.dto.ShowWaresDTO; | ||||||
| import com.hzs.member.base.dto.ZeroElementRevokeDTO; | import com.hzs.member.base.dto.ZeroElementRevokeDTO; | ||||||
| import com.hzs.member.base.service.*; | import com.hzs.member.base.service.*; | ||||||
| import com.hzs.member.base.IMemberServiceApi; | import com.hzs.member.base.IMemberServiceApi; | ||||||
| import com.hzs.member.detail.service.ICuMemberLevelService; |  | ||||||
| import com.hzs.member.empty.service.ICuMemberEmptyCodeService; | import com.hzs.member.empty.service.ICuMemberEmptyCodeService; | ||||||
| import com.hzs.member.handlebusiness.dto.AnalysisBusinessAppealParam; | import com.hzs.member.handlebusiness.dto.AnalysisBusinessAppealParam; | ||||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||||
|  | @ -43,8 +42,6 @@ public class MemberServiceProvider implements IMemberServiceApi { | ||||||
|     private ICuMemberBusinessService iCuMemberBusinessService; |     private ICuMemberBusinessService iCuMemberBusinessService; | ||||||
|     @Autowired |     @Autowired | ||||||
|     private ICuMemberEmptyCodeService iCuMemberEmptyCodeService; |     private ICuMemberEmptyCodeService iCuMemberEmptyCodeService; | ||||||
|     @Autowired |  | ||||||
|     private ICuMemberLevelService iCuMemberLevelService; |  | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public R<LoginMember> getMemberInfo(String memberCode) { |     public R<LoginMember> getMemberInfo(String memberCode) { | ||||||
|  | @ -341,9 +338,9 @@ public class MemberServiceProvider implements IMemberServiceApi { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public R<?> otherRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt, Boolean activateFlag) { |     public R<?> otherRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt, Boolean activateFlag, CuMemberLevel cuMemberLevel) { | ||||||
|         try { |         try { | ||||||
|             iCuMemberBusinessService.otherRetailMember(cuMember, saOrder, cuMemberAccountExt, activateFlag); |             iCuMemberBusinessService.otherRetailMember(cuMember, saOrder, cuMemberAccountExt, activateFlag, cuMemberLevel); | ||||||
|             return R.ok(); |             return R.ok(); | ||||||
|         } catch (Exception e) { |         } catch (Exception e) { | ||||||
|             log.error("保存新零售会员其它订单异常! error:", e); |             log.error("保存新零售会员其它订单异常! error:", e); | ||||||
|  | @ -360,9 +357,4 @@ public class MemberServiceProvider implements IMemberServiceApi { | ||||||
|         return R.ok(iCuMemberService.getMemberPhoneCount(phone)); |         return R.ok(iCuMemberService.getMemberPhoneCount(phone)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |  | ||||||
|     public R<Boolean> saveMemberLevel(CuMemberLevel memberLevel) { |  | ||||||
|         return R.ok(iCuMemberLevelService.save(memberLevel)); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ package com.hzs.member.base.service; | ||||||
| 
 | 
 | ||||||
| import com.hzs.common.domain.member.account.CuMemberAccount; | import com.hzs.common.domain.member.account.CuMemberAccount; | ||||||
| import com.hzs.common.domain.member.base.CuMember; | import com.hzs.common.domain.member.base.CuMember; | ||||||
|  | import com.hzs.common.domain.member.detail.CuMemberLevel; | ||||||
| import com.hzs.common.domain.member.ext.CuMemberAccountExt; | import com.hzs.common.domain.member.ext.CuMemberAccountExt; | ||||||
| import com.hzs.common.domain.sale.ext.SaOrderExt; | import com.hzs.common.domain.sale.ext.SaOrderExt; | ||||||
| import com.hzs.common.domain.sale.order.SaOrder; | import com.hzs.common.domain.sale.order.SaOrder; | ||||||
|  | @ -205,6 +206,6 @@ public interface ICuMemberBusinessService { | ||||||
|      * @param cuMemberAccountExt 扣款账户 |      * @param cuMemberAccountExt 扣款账户 | ||||||
|      * @param activateFlag       激活标记 |      * @param activateFlag       激活标记 | ||||||
|      */ |      */ | ||||||
|     void otherRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt, Boolean activateFlag); |     void otherRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt, Boolean activateFlag, CuMemberLevel cuMemberLevel); | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -94,7 +94,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { | ||||||
| 
 | 
 | ||||||
|     private ICuMemberTradeService cuMemberTradeService; |     private ICuMemberTradeService cuMemberTradeService; | ||||||
| 
 | 
 | ||||||
|     private ICuMemberLevelService cuMemberLevelService; |     private ICuMemberLevelService iCuMemberLevelService; | ||||||
| 
 | 
 | ||||||
|     private ICuMemberAwardsService cuMemberAwardsService; |     private ICuMemberAwardsService cuMemberAwardsService; | ||||||
| 
 | 
 | ||||||
|  | @ -127,8 +127,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     public void setCuMemberLevelService(ICuMemberLevelService cuMemberLevelService) { |     public void setCuMemberLevelService(ICuMemberLevelService iCuMemberLevelService) { | ||||||
|         this.cuMemberLevelService = cuMemberLevelService; |         this.iCuMemberLevelService = iCuMemberLevelService; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|  | @ -210,7 +210,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { | ||||||
|                 .build(); |                 .build(); | ||||||
|         cuMemberLevel.setPkCountry(cuMember.getPkSettleCountry()); |         cuMemberLevel.setPkCountry(cuMember.getPkSettleCountry()); | ||||||
|         cuMemberLevel.setPkCreator(cuMember.getPkId()); |         cuMemberLevel.setPkCreator(cuMember.getPkId()); | ||||||
|         return cuMemberLevelService.save(cuMemberLevel); |         return iCuMemberLevelService.save(cuMemberLevel); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | @ -857,7 +857,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { | ||||||
|             Long pkMember = memberList.get(i); |             Long pkMember = memberList.get(i); | ||||||
|             SaOrderExt saOrder = saOrderMap.get(pkMember); |             SaOrderExt saOrder = saOrderMap.get(pkMember); | ||||||
|             // 删除等级 |             // 删除等级 | ||||||
|             cuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime); |             iCuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime); | ||||||
|             // 回退奖衔,根据订单从 cu_member_awards查询 |             // 回退奖衔,根据订单从 cu_member_awards查询 | ||||||
|             cuMemberAwardsService.deleteCuMemberAwards(saOrder.getPkId(), pkApprove, currentDateTime); |             cuMemberAwardsService.deleteCuMemberAwards(saOrder.getPkId(), pkApprove, currentDateTime); | ||||||
|             cuMemberService.deleteCuMemberByPkMember(pkMember, pkApprove, currentDateTime); |             cuMemberService.deleteCuMemberByPkMember(pkMember, pkApprove, currentDateTime); | ||||||
|  | @ -1245,7 +1245,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { | ||||||
| 
 | 
 | ||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     @Override |     @Override | ||||||
|     public void otherRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt, Boolean activateFlag) { |     public void otherRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt, Boolean activateFlag, CuMemberLevel cuMemberLevel) { | ||||||
|         boolean updateFlag = false; |         boolean updateFlag = false; | ||||||
| 
 | 
 | ||||||
|         LambdaUpdateWrapper<CuMember> updateWrapper = new LambdaUpdateWrapper<>(); |         LambdaUpdateWrapper<CuMember> updateWrapper = new LambdaUpdateWrapper<>(); | ||||||
|  | @ -1255,6 +1255,12 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { | ||||||
|             updateWrapper.set(null != cuMember.getPayTime(), CuMember::getPayTime, cuMember.getPayTime()); |             updateWrapper.set(null != cuMember.getPayTime(), CuMember::getPayTime, cuMember.getPayTime()); | ||||||
|             updateFlag = true; |             updateFlag = true; | ||||||
|         } |         } | ||||||
|  |         if (null != cuMemberLevel) { | ||||||
|  |             updateWrapper.set(CuMember::getPkSettleGrade, cuMember.getPkSettleGrade()); | ||||||
|  |             updateFlag = true; | ||||||
|  | 
 | ||||||
|  |             iCuMemberLevelService.save(cuMemberLevel); | ||||||
|  |         } | ||||||
|         if (updateFlag) { |         if (updateFlag) { | ||||||
|             // 更新会员信息 |             // 更新会员信息 | ||||||
|             updateWrapper.eq(CuMember::getPkId, cuMember.getPkId()); |             updateWrapper.eq(CuMember::getPkId, cuMember.getPkId()); | ||||||
|  |  | ||||||
|  | @ -18,17 +18,14 @@ import com.hzs.common.core.utils.*; | ||||||
| import com.hzs.common.core.web.domain.AjaxResult; | import com.hzs.common.core.web.domain.AjaxResult; | ||||||
| import com.hzs.common.domain.member.account.CuMemberAccount; | import com.hzs.common.domain.member.account.CuMemberAccount; | ||||||
| import com.hzs.common.domain.member.base.CuMember; | import com.hzs.common.domain.member.base.CuMember; | ||||||
| import com.hzs.common.domain.member.base.CuMemberShare; |  | ||||||
| import com.hzs.common.domain.member.detail.CuMemberLevel; | import com.hzs.common.domain.member.detail.CuMemberLevel; | ||||||
| import com.hzs.common.domain.member.ext.CuMemberAccountExt; | import com.hzs.common.domain.member.ext.CuMemberAccountExt; | ||||||
| import com.hzs.common.domain.sale.ext.BdWaresDetailExt; | import com.hzs.common.domain.sale.ext.BdWaresDetailExt; | ||||||
| import com.hzs.common.domain.sale.ext.SaOrderExt; | import com.hzs.common.domain.sale.ext.SaOrderExt; | ||||||
| import com.hzs.common.domain.sale.ext.SaOrderItemsExt; |  | ||||||
| import com.hzs.common.domain.sale.order.*; | import com.hzs.common.domain.sale.order.*; | ||||||
| import com.hzs.common.domain.sale.product.BdProduct; | import com.hzs.common.domain.sale.product.BdProduct; | ||||||
| import com.hzs.common.domain.sale.wares.BdWaresRange; | import com.hzs.common.domain.sale.wares.BdWaresRange; | ||||||
| import com.hzs.common.domain.system.base.BdStorehouse; | import com.hzs.common.domain.system.base.BdStorehouse; | ||||||
| import com.hzs.common.domain.system.config.BdAwards; |  | ||||||
| import com.hzs.common.domain.system.config.BdGrade; | import com.hzs.common.domain.system.config.BdGrade; | ||||||
| import com.hzs.common.security.utils.SecurityUtils; | import com.hzs.common.security.utils.SecurityUtils; | ||||||
| import com.hzs.member.account.IMemberAccountServiceApi; | import com.hzs.member.account.IMemberAccountServiceApi; | ||||||
|  | @ -575,10 +572,10 @@ public class RetailOrderServiceImpl implements IRetailOrderService { | ||||||
|         // 处理会员激活 |         // 处理会员激活 | ||||||
|         Boolean activateFlag = this.handleMemberActivate(buyMember, saOrderExt); |         Boolean activateFlag = this.handleMemberActivate(buyMember, saOrderExt); | ||||||
| 
 | 
 | ||||||
|         processMemberLevel(buyMember, saOrderExt); |         CuMemberLevel cuMemberLevel = processMemberLevel(buyMember, saOrderExt); | ||||||
|         // 扣减账户等 |         // 扣减账户等 | ||||||
|         // 调用其他服务保存更新会员账户等 |         // 调用其他服务保存更新会员账户等 | ||||||
|         R<?> saveResult = iMemberServiceApi.otherRetailMember(buyMember, saOrderExt, memberAccountExt, activateFlag); |         R<?> saveResult = iMemberServiceApi.otherRetailMember(buyMember, saOrderExt, memberAccountExt, activateFlag, cuMemberLevel); | ||||||
|         if (!saveResult.isSuccess()) { |         if (!saveResult.isSuccess()) { | ||||||
|             log.error("新零售 payOtherOrder 会员其它订单失败,{}", saveResult.getMsg()); |             log.error("新零售 payOtherOrder 会员其它订单失败,{}", saveResult.getMsg()); | ||||||
|             throw new RuntimeException("下单支付失败"); |             throw new RuntimeException("下单支付失败"); | ||||||
|  | @ -678,7 +675,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService { | ||||||
|         return resultStr; |         return resultStr; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void processMemberLevel(CuMember gradeMember, SaOrderExt saOrderExt) { |     public CuMemberLevel processMemberLevel(CuMember gradeMember, SaOrderExt saOrderExt) { | ||||||
|         if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() |         if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() | ||||||
|                 || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { |                 || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { | ||||||
|             // 处理等级 |             // 处理等级 | ||||||
|  | @ -687,14 +684,28 @@ public class RetailOrderServiceImpl implements IRetailOrderService { | ||||||
|                 List<BdGrade> tmpGradeList = iGradeServiceApi.getRetailGradeList().getData(); |                 List<BdGrade> tmpGradeList = iGradeServiceApi.getRetailGradeList().getData(); | ||||||
|                 // 等级值倒序 |                 // 等级值倒序 | ||||||
|                 List<BdGrade> gradeList = tmpGradeList.stream().sorted(Comparator.comparingInt(BdGrade::getGradeValue).reversed()).collect(Collectors.toList()); |                 List<BdGrade> gradeList = tmpGradeList.stream().sorted(Comparator.comparingInt(BdGrade::getGradeValue).reversed()).collect(Collectors.toList()); | ||||||
|                 gradeList.forEach(tmpGrade -> { |                 for (BdGrade tmpGrade : gradeList) { | ||||||
|                     if (saOrderExt.getOrderAchieve().compareTo(tmpGrade.getStartValue()) >= 0) { |                     if (saOrderExt.getOrderAchieve().compareTo(tmpGrade.getStartValue()) >= 0) { | ||||||
|                         gradeMember.setPkSettleGrade(tmpGrade.getPkId()); |                         gradeMember.setPkSettleGrade(tmpGrade.getPkId()); | ||||||
|                         gradeMember.setPkSettleGradeValue(tmpGrade.getGradeValue()); |                         gradeMember.setPkSettleGradeValue(tmpGrade.getGradeValue()); | ||||||
|  | 
 | ||||||
|  |                         // 记录升级历史 | ||||||
|  |                         CuMemberLevel cuMemberLevel = CuMemberLevel.builder() | ||||||
|  |                                 .pkMember(gradeMember.getPkId()) | ||||||
|  |                                 .upType(EUpgradeType.BUY_UPGRADE.getValue()) | ||||||
|  |                                 .oldLevel(bdGrade.getPkId()) | ||||||
|  |                                 .newLevel(tmpGrade.getPkId()) | ||||||
|  |                                 .upgradeTime(saOrderExt.getPayTime()) | ||||||
|  |                                 .pkOrder(saOrderExt.getPkId()) | ||||||
|  |                                 .build(); | ||||||
|  |                         cuMemberLevel.setPkCountry(gradeMember.getPkSettleCountry()); | ||||||
|  |                         cuMemberLevel.setPkCreator(gradeMember.getPkId()); | ||||||
|  |                         return cuMemberLevel; | ||||||
|                     } |                     } | ||||||
|                 }); |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |         return null; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ public enum ETradeType { | ||||||
|     RETAIL_REGISTER_ORDER(141, 0, "注册订单", 0, EnumsPrefixConstants.TRADE_TYPE + 141, EOrderType.RETAIL_REGISTER.getValue()), |     RETAIL_REGISTER_ORDER(141, 0, "注册订单", 0, EnumsPrefixConstants.TRADE_TYPE + 141, EOrderType.RETAIL_REGISTER.getValue()), | ||||||
|     RETAIL_UPGRADE_ORDER(142, 0, "甄选订单", 0, EnumsPrefixConstants.TRADE_TYPE + 142, EOrderType.RETAIL_UPGRADE.getValue()), |     RETAIL_UPGRADE_ORDER(142, 0, "甄选订单", 0, EnumsPrefixConstants.TRADE_TYPE + 142, EOrderType.RETAIL_UPGRADE.getValue()), | ||||||
|     RETAIL_REPURCHASE_ORDER(143, 0, "复购订单", 0, EnumsPrefixConstants.TRADE_TYPE + 143, EOrderType.RETAIL_REPURCHASE.getValue()), |     RETAIL_REPURCHASE_ORDER(143, 0, "复购订单", 0, EnumsPrefixConstants.TRADE_TYPE + 143, EOrderType.RETAIL_REPURCHASE.getValue()), | ||||||
|     RETAIL_CONSUME_ORDER(144, 0, "重消订单", 0, EnumsPrefixConstants.TRADE_TYPE + 144, EOrderType.RETAIL_CONSUME.getValue()), |     RETAIL_CONSUME_ORDER(144, 0, "赠品订单", 0, EnumsPrefixConstants.TRADE_TYPE + 144, EOrderType.RETAIL_CONSUME.getValue()), | ||||||
|     RETAIL_TICKET_ORDER(145, 0, "自主购票", 0, EnumsPrefixConstants.TRADE_TYPE + 145, EOrderType.RETAIL_TICKET.getValue()), |     RETAIL_TICKET_ORDER(145, 0, "自主购票", 0, EnumsPrefixConstants.TRADE_TYPE + 145, EOrderType.RETAIL_TICKET.getValue()), | ||||||
|     RETAIL_DISCOUNT_ORDER(147, 0, "五折订单", 0, EnumsPrefixConstants.TRADE_TYPE + 147, EOrderType.DISCOUNT_ORDER.getValue()), |     RETAIL_DISCOUNT_ORDER(147, 0, "五折订单", 0, EnumsPrefixConstants.TRADE_TYPE + 147, EOrderType.DISCOUNT_ORDER.getValue()), | ||||||
| 
 | 
 | ||||||
|  | @ -71,7 +71,7 @@ public enum ETradeType { | ||||||
| 
 | 
 | ||||||
|     REVOKE_RETAIL_REGISTER_ORDER(641, 0, "注册订单撤单", 0, EnumsPrefixConstants.TRADE_TYPE + 641, -EOrderType.RETAIL_REGISTER.getValue()), |     REVOKE_RETAIL_REGISTER_ORDER(641, 0, "注册订单撤单", 0, EnumsPrefixConstants.TRADE_TYPE + 641, -EOrderType.RETAIL_REGISTER.getValue()), | ||||||
|     REVOKE_RETAIL_REPURCHASE_ORDER(643, 0, "复购订单撤单", 0, EnumsPrefixConstants.TRADE_TYPE + 643, -EOrderType.RETAIL_REPURCHASE.getValue()), |     REVOKE_RETAIL_REPURCHASE_ORDER(643, 0, "复购订单撤单", 0, EnumsPrefixConstants.TRADE_TYPE + 643, -EOrderType.RETAIL_REPURCHASE.getValue()), | ||||||
|     REVOKE_RETAIL_CONSUME_ORDER(644, 0, "重消订单撤单", 0, EnumsPrefixConstants.TRADE_TYPE + 644, -EOrderType.RETAIL_CONSUME.getValue()), |     REVOKE_RETAIL_CONSUME_ORDER(644, 0, "赠品订单撤单", 0, EnumsPrefixConstants.TRADE_TYPE + 644, -EOrderType.RETAIL_CONSUME.getValue()), | ||||||
|     REVOKE_RETAIL_TICKET_ORDER(645, 0, "自主购票撤单", 0, EnumsPrefixConstants.TRADE_TYPE + 645, -EOrderType.RETAIL_TICKET.getValue()), |     REVOKE_RETAIL_TICKET_ORDER(645, 0, "自主购票撤单", 0, EnumsPrefixConstants.TRADE_TYPE + 645, -EOrderType.RETAIL_TICKET.getValue()), | ||||||
| 
 | 
 | ||||||
|     REVOKE_RETAIL_UPGRADE(642, 0, "甄选订单撤单", 0, EnumsPrefixConstants.TRADE_TYPE + 642, -EOrderType.RETAIL_UPGRADE.getValue()), |     REVOKE_RETAIL_UPGRADE(642, 0, "甄选订单撤单", 0, EnumsPrefixConstants.TRADE_TYPE + 642, -EOrderType.RETAIL_UPGRADE.getValue()), | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue