|
|
@@ -179,42 +179,51 @@ public class PosServiceImpl implements PosService { |
|
|
throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR); |
|
|
throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Level, 折扣 |
|
|
|
|
|
List<WxLevelConfig> levelList = levelConfigService.getByTenantId(tenantId); |
|
|
|
|
|
|
|
|
|
|
|
String level = WxLevelConfigService.DEFAULT_LEVEL; |
|
|
|
|
|
Long levelId = 0L; |
|
|
|
|
|
for (WxLevelConfig levelConfig : levelList) { |
|
|
|
|
|
if (user.getScore() >= levelConfig.getPoints()) { |
|
|
|
|
|
if (levelConfig.getDiscountEnable().equals(EnumLevelConfigDiscountStatus.ENABLE.getCode())) |
|
|
|
|
|
levelId = levelConfig.getId(); |
|
|
|
|
|
level = levelConfig.getLevel(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
PosMallConfig config = posMallConfigService.getByTenantId(tenantId); |
|
|
|
|
|
if (config == null) { |
|
|
|
|
|
logger.error(ErrorCode.POS_CONFIG_NOT_FOUND.getMessage()); |
|
|
|
|
|
throw new MallinkException(ErrorCode.POS_CONFIG_NOT_FOUND); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Integer discount = 100; |
|
|
Integer discount = 100; |
|
|
WxLevelMerchant levelMerchant = new WxLevelMerchant(); |
|
|
|
|
|
levelMerchant.setTenantId(tenantId); |
|
|
|
|
|
levelMerchant.setLevelId(levelId); |
|
|
|
|
|
levelMerchant.setMerchantId(merchantId); |
|
|
|
|
|
List<WxLevelMerchantCVo> levelMerchantList = levelConfigService.findListCVo(levelMerchant); |
|
|
|
|
|
if (levelMerchantList.size() >= 1) { |
|
|
|
|
|
WxLevelMerchantCVo levelMerchantCVo = levelMerchantList.get(0); |
|
|
|
|
|
if (levelMerchantCVo != null) { |
|
|
|
|
|
discount = levelMerchantCVo.getDiscount(); |
|
|
|
|
|
retMap.put(WxPayConstant.MEM_DISCOUNT, discount.toString()); |
|
|
|
|
|
// retMap.put("levelMerchant", levelMerchantCVo.toString()); |
|
|
|
|
|
|
|
|
if (config.getDiscount().equals(EnumEnableType.Enable.getCode())) { |
|
|
|
|
|
|
|
|
|
|
|
// Level, 折扣 |
|
|
|
|
|
List<WxLevelConfig> levelList = levelConfigService.getByTenantId(tenantId); |
|
|
|
|
|
|
|
|
|
|
|
String level = WxLevelConfigService.DEFAULT_LEVEL; |
|
|
|
|
|
Long levelId = 0L; |
|
|
|
|
|
for (WxLevelConfig levelConfig : levelList) { |
|
|
|
|
|
if (user.getScore() >= levelConfig.getPoints()) { |
|
|
|
|
|
if (levelConfig.getDiscountEnable().equals(EnumLevelConfigDiscountStatus.ENABLE.getCode())) |
|
|
|
|
|
levelId = levelConfig.getId(); |
|
|
|
|
|
level = levelConfig.getLevel(); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} else { |
|
|
|
|
|
retMap.put(WxPayConstant.MEM_DISCOUNT, "100"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WxLevelMerchant levelMerchant = new WxLevelMerchant(); |
|
|
|
|
|
levelMerchant.setTenantId(tenantId); |
|
|
|
|
|
levelMerchant.setLevelId(levelId); |
|
|
|
|
|
levelMerchant.setMerchantId(merchantId); |
|
|
|
|
|
List<WxLevelMerchantCVo> levelMerchantList = levelConfigService.findListCVo(levelMerchant); |
|
|
|
|
|
if (levelMerchantList.size() >= 1) { |
|
|
|
|
|
WxLevelMerchantCVo levelMerchantCVo = levelMerchantList.get(0); |
|
|
|
|
|
if (levelMerchantCVo != null) { |
|
|
|
|
|
discount = levelMerchantCVo.getDiscount(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
retMap.put(WxPayConstant.MEM_LEVEL, level); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
retMap.put(WxPayConstant.MEM_DISCOUNT, discount.toString()); |
|
|
|
|
|
|
|
|
Double remainAmountD = posAmount * 1.0D * discount / 100; |
|
|
Double remainAmountD = posAmount * 1.0D * discount / 100; |
|
|
long remainAmount = Math.round(remainAmountD); |
|
|
long remainAmount = Math.round(remainAmountD); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
retMap.put(WxPayConstant.MEM_ID, user.getId().toString()); |
|
|
retMap.put(WxPayConstant.MEM_ID, user.getId().toString()); |
|
|
retMap.put(WxPayConstant.MEM_PHONE, user.getPhone()); |
|
|
retMap.put(WxPayConstant.MEM_PHONE, user.getPhone()); |
|
|
retMap.put(WxPayConstant.MEM_LEVEL, level); |
|
|
|
|
|
retMap.put(WxPayConstant.ORG_AMOUNT, posAmountStr); |
|
|
retMap.put(WxPayConstant.ORG_AMOUNT, posAmountStr); |
|
|
retMap.put(WxPayConstant.REMAIN_AMOUNT, String.valueOf(remainAmount)); |
|
|
retMap.put(WxPayConstant.REMAIN_AMOUNT, String.valueOf(remainAmount)); |
|
|
|
|
|
|
|
|
|