| @@ -74,7 +74,7 @@ public class WxCreditHistoryController extends BaseController { | |||||
| } | } | ||||
| try { | try { | ||||
| Map<String, Integer> result = wxCreditHistoryService.findByMerchantIdAndSpend(merchantId, spendStr, userId, getTenantInfo().getFinalTenantId()) ; | |||||
| Map<String, Integer> result = wxCreditHistoryService.findByMerchantIdAndSpend(merchantId, spendStr, userId) ; | |||||
| return new ResultData(result); | return new ResultData(result); | ||||
| } catch (MallinkException e) { | } catch (MallinkException e) { | ||||
| return new ResultData(e.getErrorCode(),e.getMessage()); | return new ResultData(e.getErrorCode(),e.getMessage()); | ||||
| @@ -110,7 +110,7 @@ public class WxCreditHistoryController extends BaseController { | |||||
| wxCreditHistory.setChangePurpose(desc); | wxCreditHistory.setChangePurpose(desc); | ||||
| try { | try { | ||||
| wxCreditHistoryService.creditUsercheck(wxCreditHistory.getCUserId(),getTenantInfo()) ; | wxCreditHistoryService.creditUsercheck(wxCreditHistory.getCUserId(),getTenantInfo()) ; | ||||
| WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory); | |||||
| WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory,getTenantInfo().getTenantId()); | |||||
| return new ResultData(Result.SUCCESS, "操作成功", credit); | return new ResultData(Result.SUCCESS, "操作成功", credit); | ||||
| } catch (MallinkException e) { | } catch (MallinkException e) { | ||||
| logger.error(e.getMessage()); | logger.error(e.getMessage()); | ||||
| @@ -279,7 +279,7 @@ public class WxCUserController extends BaseController { | |||||
| wxCreditHistory.setChangePurpose("商户端["+wxMerchant.getName()+"]操作完善个人信息"); | wxCreditHistory.setChangePurpose("商户端["+wxMerchant.getName()+"]操作完善个人信息"); | ||||
| wxCreditHistory.setOperatorType(EnumUserType.BUSER.getCode()); | wxCreditHistory.setOperatorType(EnumUserType.BUSER.getCode()); | ||||
| wxCreditHistory.setOperatorId(bUser.getId()); | wxCreditHistory.setOperatorId(bUser.getId()); | ||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory); | |||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory,wxMerchant.getTenantId()); | |||||
| } | } | ||||
| @@ -71,7 +71,7 @@ public class WxCreditHistoryController extends BaseController { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL) ; | return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL) ; | ||||
| } | } | ||||
| try { | try { | ||||
| Map<String, Integer> result = wxCreditHistoryService.findByMerchantIdAndSpend(merchantId, spendStr, userId, getTenantInfo().getFinalTenantId()); | |||||
| Map<String, Integer> result = wxCreditHistoryService.findByMerchantIdAndSpend(merchantId, spendStr, userId); | |||||
| return new ResultData(result); | return new ResultData(result); | ||||
| } catch (MallinkException e) { | } catch (MallinkException e) { | ||||
| return new ResultData(e.getErrorCode(), e.getMessage()); | return new ResultData(e.getErrorCode(), e.getMessage()); | ||||
| @@ -132,7 +132,7 @@ public class WxCreditHistoryController extends BaseController { | |||||
| if (null != getLoginBUser().getBuserId()) { | if (null != getLoginBUser().getBuserId()) { | ||||
| wxCreditHistory.setBuserId(getLoginBUser().getBuserId()); | wxCreditHistory.setBuserId(getLoginBUser().getBuserId()); | ||||
| } | } | ||||
| WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory); | |||||
| WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory,tenantInfo.getTenantId()); | |||||
| //更新标签 | //更新标签 | ||||
| if (wxCreditHistory.getTags() != null && !wxCreditHistory.getTags().isEmpty()) { | if (wxCreditHistory.getTags() != null && !wxCreditHistory.getTags().isEmpty()) { | ||||
| wxCUserTagsService.updateTagByUserId(wxCreditHistory.getCUserId(),tenantInfo, wxCreditHistory.getTags()); | wxCUserTagsService.updateTagByUserId(wxCreditHistory.getCUserId(),tenantInfo, wxCreditHistory.getTags()); | ||||
| @@ -83,7 +83,7 @@ public class WxCreditHistoryController extends BaseController{ | |||||
| try { | try { | ||||
| wxCreditHistoryService.creditUsercheck(wxCreditHistory.getCUserId(),getTenantInfo()) ; | wxCreditHistoryService.creditUsercheck(wxCreditHistory.getCUserId(),getTenantInfo()) ; | ||||
| WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory); | |||||
| WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory,getTenantInfo().getTenantId()); | |||||
| removeCacheCUser(); | removeCacheCUser(); | ||||
| return new ResultData(Result.SUCCESS, "操作成功", credit); | return new ResultData(Result.SUCCESS, "操作成功", credit); | ||||
| } catch (MallinkException e) { | } catch (MallinkException e) { | ||||
| @@ -927,7 +927,7 @@ public class WxUserGrantController extends BaseController { | |||||
| wxCreditHistory.setChangePurpose(EnumScoreType.COMPLETE_INFO.getMessage()); | wxCreditHistory.setChangePurpose(EnumScoreType.COMPLETE_INFO.getMessage()); | ||||
| wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); | wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); | ||||
| wxCreditHistory.setOperatorId(memberId); | wxCreditHistory.setOperatorId(memberId); | ||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory); | |||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory,tenantEntity.getTenantId()); | |||||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, record,tenantEntity); | wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, record,tenantEntity); | ||||
| removeCacheCUser(); | removeCacheCUser(); | ||||
| @@ -1376,7 +1376,7 @@ public class PosServiceImpl implements PosService { | |||||
| //如果券与商户一对一 则直接将消费商户更新为此商户 若一对多 则消费商户显示多商户 | //如果券与商户一对一 则直接将消费商户更新为此商户 若一对多 则消费商户显示多商户 | ||||
| creditHistory.setMerchantId(wxMerchant.getId()); | creditHistory.setMerchantId(wxMerchant.getId()); | ||||
| creditHistory.setChangePurpose("pos消费:消费商户["+wxMerchant.getName()+"] 卷名称["+coupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); | creditHistory.setChangePurpose("pos消费:消费商户["+wxMerchant.getName()+"] 卷名称["+coupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); | ||||
| creditHistory = creditHistoryService.saveOrUpdate(creditHistory); | |||||
| creditHistory = creditHistoryService.saveOrUpdate(creditHistory,couponOrderCVo.getTenantId()); | |||||
| if (creditHistory.getCreditNum() != null) { | if (creditHistory.getCreditNum() != null) { | ||||
| return creditHistory.getCreditNum(); | return creditHistory.getCreditNum(); | ||||
| } else { | } else { | ||||
| @@ -1405,7 +1405,7 @@ public class PosServiceImpl implements PosService { | |||||
| //如果券与商户一对一 则直接将消费商户更新为此商户 若一对多 则消费商户显示多商户 | //如果券与商户一对一 则直接将消费商户更新为此商户 若一对多 则消费商户显示多商户 | ||||
| creditHistory.setMerchantId(merchant.getId()); | creditHistory.setMerchantId(merchant.getId()); | ||||
| creditHistory.setChangePurpose("pos消费:消费商户["+merchant.getName()+"] 消费金额["+creditHistory.getSpendStr()+"元]"); | creditHistory.setChangePurpose("pos消费:消费商户["+merchant.getName()+"] 消费金额["+creditHistory.getSpendStr()+"元]"); | ||||
| creditHistory = creditHistoryService.saveOrUpdate(creditHistory); | |||||
| creditHistory = creditHistoryService.saveOrUpdate(creditHistory,merchant.getTenantId()); | |||||
| if (creditHistory.getCreditNum() != null) { | if (creditHistory.getCreditNum() != null) { | ||||
| return creditHistory.getCreditNum(); | return creditHistory.getCreditNum(); | ||||
| } else { | } else { | ||||
| @@ -86,6 +86,15 @@ public class WxScoreRules extends BaseTenantEntity { | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| public static final String SCORE = "score"; | public static final String SCORE = "score"; | ||||
| @TableField(exist = false) | |||||
| public static final String CYCLE = "cycle";//EnumScoreScaleRules会员日周期(1:周;2:月;3:年) | |||||
| @TableField(exist = false) | |||||
| public static final String CYCLE_START = "cycleStart";//周期开始 | |||||
| @TableField(exist = false) | |||||
| public static final String CYCLE_END = "cycleEnd";//周期结束 | |||||
| @TableField(exist = false) | |||||
| public static final String CYCLE_SCALE = "cycleScale";//倍率 | |||||
| protected Long id; | protected Long id; | ||||
| @@ -0,0 +1,34 @@ | |||||
| package com.iformall.enums; | |||||
| public enum EnumScoreScaleRules { | |||||
| WEEK(1, "周"), | |||||
| MONTH(2, "月"), | |||||
| YEAR(3, "年") | |||||
| ; | |||||
| public static EnumScoreScaleRules getEnum(Integer code) { | |||||
| for (EnumScoreScaleRules value : values()) { | |||||
| if (value.getCode().equals(code)) { | |||||
| return value; | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| private Integer code; | |||||
| private String message; | |||||
| EnumScoreScaleRules(Integer code, String message) { | |||||
| this.code = code; | |||||
| this.message = message; | |||||
| } | |||||
| public Integer getCode() { | |||||
| return code; | |||||
| } | |||||
| public String getMessage() { | |||||
| return message; | |||||
| } | |||||
| } | |||||
| @@ -54,7 +54,7 @@ public interface WxCreditHistoryService { | |||||
| * | * | ||||
| * @param record | * @param record | ||||
| */ | */ | ||||
| WxCreditHistory saveOrUpdate(WxCreditHistory record); | |||||
| WxCreditHistory saveOrUpdate(WxCreditHistory record,String tenantId); | |||||
| /** | /** | ||||
| * 积分历史回退 | * 积分历史回退 | ||||
| @@ -70,7 +70,7 @@ public interface WxCreditHistoryService { | |||||
| */ | */ | ||||
| //void deleteById(Long id); | //void deleteById(Long id); | ||||
| Map<String, Integer> findByMerchantIdAndSpend(Long merchantId, String spendStr, Long userId, String tenantId); | |||||
| Map<String, Integer> findByMerchantIdAndSpend(Long merchantId, String spendStr, Long userId); | |||||
| void clearCreditByYear(); | void clearCreditByYear(); | ||||
| @@ -190,7 +190,7 @@ public class WxActivityJoinServiceImpl implements WxActivityJoinService { | |||||
| wxCreditHistory.setChangePurpose(EnumScoreType.ACTIVITY_JOIN.getMessage()+"["+wxActivity.getTitle()+"]"); | wxCreditHistory.setChangePurpose(EnumScoreType.ACTIVITY_JOIN.getMessage()+"["+wxActivity.getTitle()+"]"); | ||||
| wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); | wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); | ||||
| wxCreditHistory.setOperatorId(wxActivityJoin.getUserId()); | wxCreditHistory.setOperatorId(wxActivityJoin.getUserId()); | ||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory); | |||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory,wxActivity.getTenantId()); | |||||
| } | } | ||||
| //保存到报名表中 | //保存到报名表中 | ||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| @@ -1132,7 +1132,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc | |||||
| } | } | ||||
| wxCreditHistory.setCreditAmount(credit); | wxCreditHistory.setCreditAmount(credit); | ||||
| wxCreditHistory.setCreditNum(credit); | wxCreditHistory.setCreditNum(credit); | ||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory); | |||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory,mallUserInfo.getTenantId()); | |||||
| } | } | ||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error(e.getMessage()); | logger.error(e.getMessage()); | ||||
| @@ -331,7 +331,7 @@ public class WxCUserServiceImpl implements WxCUserService { | |||||
| wxCreditHistory.setChangePurpose(enumScoreType.getMessage()); | wxCreditHistory.setChangePurpose(enumScoreType.getMessage()); | ||||
| wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); | wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); | ||||
| wxCreditHistory.setOperatorId(user.getUserId()); | wxCreditHistory.setOperatorId(user.getUserId()); | ||||
| WxCreditHistory record = wxCreditHistoryService.saveOrUpdate(wxCreditHistory); | |||||
| WxCreditHistory record = wxCreditHistoryService.saveOrUpdate(wxCreditHistory,user.getTenantId()); | |||||
| return record.getCreditAmount(); | return record.getCreditAmount(); | ||||
| } | } | ||||
| @@ -312,7 +312,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { | |||||
| creditHistory.setMerchantId(record.getMerchantId()); | creditHistory.setMerchantId(record.getMerchantId()); | ||||
| WxMerchant wxMerchant = wxMerchantMapper.selectById(record.getMerchantId()); | WxMerchant wxMerchant = wxMerchantMapper.selectById(record.getMerchantId()); | ||||
| creditHistory.setChangePurpose("卡消费:消费商户["+wxMerchant.getName()+"] 金额["+creditHistory.getSpendStr()+"元]"); | creditHistory.setChangePurpose("卡消费:消费商户["+wxMerchant.getName()+"] 金额["+creditHistory.getSpendStr()+"元]"); | ||||
| wxCreditHistoryService.saveOrUpdate(creditHistory); | |||||
| wxCreditHistoryService.saveOrUpdate(creditHistory,record.getTenantId()); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("积分值:" + e.getMessage()); | logger.error("积分值:" + e.getMessage()); | ||||
| } | } | ||||
| @@ -935,7 +935,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { | |||||
| creditHistory.setMerchantId(record.getMerchantId()); | creditHistory.setMerchantId(record.getMerchantId()); | ||||
| // WxMerchant wxMerchant = wxMerchantMapper.selectById(record.getMerchantId()); | // WxMerchant wxMerchant = wxMerchantMapper.selectById(record.getMerchantId()); | ||||
| creditHistory.setChangePurpose("pos卡消费:消费商户["+merchant.getName()+"] 金额["+creditHistory.getSpendStr()+"元]"); | creditHistory.setChangePurpose("pos卡消费:消费商户["+merchant.getName()+"] 金额["+creditHistory.getSpendStr()+"元]"); | ||||
| creditHistory = wxCreditHistoryService.saveOrUpdate(creditHistory); | |||||
| creditHistory = wxCreditHistoryService.saveOrUpdate(creditHistory,record.getTenantId()); | |||||
| if (creditHistory != null) { | if (creditHistory != null) { | ||||
| scoreCreditCalc.setCredit(scoreCreditCalc.getCredit() + creditHistory.getCreditNum()); | scoreCreditCalc.setCredit(scoreCreditCalc.getCredit() + creditHistory.getCreditNum()); | ||||
| } | } | ||||
| @@ -467,7 +467,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| creditHistory.setBuserId(bUser.getBuserId()); | creditHistory.setBuserId(bUser.getBuserId()); | ||||
| WxMerchant wxMerchant = wxMerchantMapper.selectById(bUser.getMerchantId()); | WxMerchant wxMerchant = wxMerchantMapper.selectById(bUser.getMerchantId()); | ||||
| creditHistory.setChangePurpose("商户核销增加积分:商户名称["+wxMerchant.getName()+"] 券名称["+wxCoupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); | creditHistory.setChangePurpose("商户核销增加积分:商户名称["+wxMerchant.getName()+"] 券名称["+wxCoupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); | ||||
| wxCreditHistoryService.saveOrUpdate(creditHistory); | |||||
| wxCreditHistoryService.saveOrUpdate(creditHistory,couponOrder.getTenantId()); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("积分值:" + e.getMessage()); | logger.error("积分值:" + e.getMessage()); | ||||
| } | } | ||||
| @@ -498,7 +498,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| creditHistory.setBusinessId(wxCoupon.getBusiness()); | creditHistory.setBusinessId(wxCoupon.getBusiness()); | ||||
| creditHistory.setSpend(couponOrder.getCouponPrice()); | creditHistory.setSpend(couponOrder.getCouponPrice()); | ||||
| creditHistory.setChangePurpose("核销停车劵["+wxCoupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); | creditHistory.setChangePurpose("核销停车劵["+wxCoupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); | ||||
| wxCreditHistoryService.saveOrUpdate(creditHistory); | |||||
| wxCreditHistoryService.saveOrUpdate(creditHistory,couponOrder.getTenantId()); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("积分值:" + e.getMessage()); | logger.error("积分值:" + e.getMessage()); | ||||
| } | } | ||||
| @@ -240,7 +240,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { | |||||
| @Override | @Override | ||||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | ||||
| public WxCreditHistory saveOrUpdate(WxCreditHistory record) { | |||||
| public WxCreditHistory saveOrUpdate(WxCreditHistory record,String tenantId) { | |||||
| WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectById(record.getCUserId(),record.getTenantId()); | WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectById(record.getCUserId(),record.getTenantId()); | ||||
| if (wxCUserBasicInfo == null) { | if (wxCUserBasicInfo == null) { | ||||
| //验证此用户是否存在 | //验证此用户是否存在 | ||||
| @@ -267,7 +267,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { | |||||
| if (record.getCreditType().equals(EnumScoreType.CONSUMPTION.getCode()) || record.getCreditType().equals(EnumScoreType.SPEND_CREDIT.getCode())) { | if (record.getCreditType().equals(EnumScoreType.CONSUMPTION.getCode()) || record.getCreditType().equals(EnumScoreType.SPEND_CREDIT.getCode())) { | ||||
| //等级积分配置 | //等级积分配置 | ||||
| try { | try { | ||||
| creditChangeNum = CreditUtil.calUserCredit(creditChangeNumOrigin, wxCUserBasicInfo, wxScoreRulesService,wxLevelConfigMapper); | |||||
| creditChangeNum = CreditUtil.calUserCredit(creditChangeNumOrigin, wxCUserBasicInfo, tenantId, wxScoreRulesService,wxLevelConfigMapper); | |||||
| if (Objects.nonNull(CreditUtil.getIsBirthDayScale())) { | if (Objects.nonNull(CreditUtil.getIsBirthDayScale())) { | ||||
| hasBirthDateCredit = true; | hasBirthDateCredit = true; | ||||
| } | } | ||||
| @@ -354,23 +354,29 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { | |||||
| // } | // } | ||||
| @Override | @Override | ||||
| public Map<String, Integer> findByMerchantIdAndSpend(Long merchantId, String spendStr, Long userId, String tenantId) { | |||||
| public Map<String, Integer> findByMerchantIdAndSpend(Long merchantId, String spendStr, Long userId) { | |||||
| WxMerchant wxMerchant = wxMerchantMapper.selectById(merchantId); | WxMerchant wxMerchant = wxMerchantMapper.selectById(merchantId); | ||||
| Map<String, Integer> creditMap = Maps.newHashMap(); | Map<String, Integer> creditMap = Maps.newHashMap(); | ||||
| if (wxMerchant != null && wxMerchant.getBusinessId() != null) { | if (wxMerchant != null && wxMerchant.getBusinessId() != null) { | ||||
| WxCreditHistory wxCreditHistory = new WxCreditHistory(); | WxCreditHistory wxCreditHistory = new WxCreditHistory(); | ||||
| wxCreditHistory.setBusinessId(wxMerchant.getBusinessId()); | wxCreditHistory.setBusinessId(wxMerchant.getBusinessId()); | ||||
| //wxCreditHistory.updateTenantInfo(tenantEntity); | //wxCreditHistory.updateTenantInfo(tenantEntity); | ||||
| wxCreditHistory.setTenantId(tenantId); | |||||
| wxCreditHistory.setFinalTenantId(tenantId); | |||||
| wxCreditHistory.setTenantId(wxMerchant.getFinalTenantId()); | |||||
| wxCreditHistory.setFinalTenantId(wxMerchant.getFinalTenantId()); | |||||
| int credit; | int credit; | ||||
| int creditNew = 0 ; | int creditNew = 0 ; | ||||
| if (StringUtils.isNotBlank(spendStr)) { | if (StringUtils.isNotBlank(spendStr)) { | ||||
| wxCreditHistory.setSpend(new BigDecimal(spendStr).multiply(new BigDecimal(100)).intValue()); | wxCreditHistory.setSpend(new BigDecimal(spendStr).multiply(new BigDecimal(100)).intValue()); | ||||
| credit = payAddCredit(wxCreditHistory); | credit = payAddCredit(wxCreditHistory); | ||||
| if (Objects.nonNull(userId)) { | if (Objects.nonNull(userId)) { | ||||
| WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectById(userId,tenantId); | |||||
| creditNew = CreditUtil.calUserCredit(credit, wxCUserBasicInfo, wxScoreRulesService,wxLevelConfigMapper); | |||||
| WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectById(userId,wxMerchant.getFinalTenantId()); | |||||
| try { | |||||
| creditNew = CreditUtil.calUserCredit(credit, wxCUserBasicInfo, wxMerchant.getTenantId(), wxScoreRulesService,wxLevelConfigMapper); | |||||
| } catch (Exception e) { | |||||
| logger.error("积分倍率计算异常",e); | |||||
| } finally { | |||||
| CreditUtil.clear(); | |||||
| } | |||||
| } else { | } else { | ||||
| creditNew = credit; | creditNew = credit; | ||||
| } | } | ||||
| @@ -495,7 +501,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { | |||||
| throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); | throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); | ||||
| } | } | ||||
| //根据商户id和花费金额计算需要新增的积分 | //根据商户id和花费金额计算需要新增的积分 | ||||
| Map<String, Integer> map = findByMerchantIdAndSpend(record.getMerchantId(), record.getSpendStr(), null,record.getTenantId()); | |||||
| Map<String, Integer> map = findByMerchantIdAndSpend(record.getMerchantId(), record.getSpendStr(), null); | |||||
| return map.get("credit"); | return map.get("credit"); | ||||
| } | } | ||||
| @@ -474,7 +474,7 @@ public class WxGameServiceImpl implements WxGameService { | |||||
| wxCreditHistory.setCreditType(EnumScoreType.GAME_ADD_CREDIT.getCode()); | wxCreditHistory.setCreditType(EnumScoreType.GAME_ADD_CREDIT.getCode()); | ||||
| wxCreditHistory.setChangePurpose(EnumScoreType.GAME_ADD_CREDIT.getMessage()); | wxCreditHistory.setChangePurpose(EnumScoreType.GAME_ADD_CREDIT.getMessage()); | ||||
| wxCreditHistoryService.creditUsercheck(wxCreditHistory.getCUserId(),wxGame) ; | wxCreditHistoryService.creditUsercheck(wxCreditHistory.getCUserId(),wxGame) ; | ||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory); | |||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory,wxGame.getTenantId()); | |||||
| addCredit = credit; | addCredit = credit; | ||||
| orderId = Constant.creditPlayOrderIdTab; | orderId = Constant.creditPlayOrderIdTab; | ||||
| }else{ | }else{ | ||||
| @@ -521,7 +521,7 @@ public class WxGameServiceImpl implements WxGameService { | |||||
| wxCreditHistory.setCreditType(EnumScoreType.GAME_LES_CREDIT.getCode()); | wxCreditHistory.setCreditType(EnumScoreType.GAME_LES_CREDIT.getCode()); | ||||
| wxCreditHistory.setChangePurpose(EnumScoreType.GAME_LES_CREDIT.getMessage()); | wxCreditHistory.setChangePurpose(EnumScoreType.GAME_LES_CREDIT.getMessage()); | ||||
| wxCreditHistoryService.creditUsercheck(wxCreditHistory.getCUserId(),wxGame) ; | wxCreditHistoryService.creditUsercheck(wxCreditHistory.getCUserId(),wxGame) ; | ||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory); | |||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory,wxGame.getTenantId()); | |||||
| return this.luckDraw(gameId,userId,wxGame.getPlayCredit()); | return this.luckDraw(gameId,userId,wxGame.getPlayCredit()); | ||||
| }else{ | }else{ | ||||
| @@ -1542,7 +1542,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| creditHistory.setChangePurpose("付款码消费:消费商户["+wxMerchant.getName()+"] 金额["+creditHistory.getSpendStr()+"元]"); | creditHistory.setChangePurpose("付款码消费:消费商户["+wxMerchant.getName()+"] 金额["+creditHistory.getSpendStr()+"元]"); | ||||
| wxCreditHistoryService.saveOrUpdate(creditHistory); | |||||
| wxCreditHistoryService.saveOrUpdate(creditHistory,wxMerchant.getTenantId()); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("积分值:" + e.getMessage()); | logger.error("积分值:" + e.getMessage()); | ||||
| } | } | ||||
| @@ -2181,7 +2181,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| creditHistory.setChangePurpose("积分兑换"+"["+coupon.getTitle()+"]"); | creditHistory.setChangePurpose("积分兑换"+"["+coupon.getTitle()+"]"); | ||||
| } | } | ||||
| wxCreditHistoryService.saveOrUpdate(creditHistory); | |||||
| wxCreditHistoryService.saveOrUpdate(creditHistory,coupon.getTenantId()); | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -88,7 +88,7 @@ public class ParkHelper { | |||||
| wxCreditHistory.setChangePurpose(EnumScoreType.BIND_CAR.getMessage()); | wxCreditHistory.setChangePurpose(EnumScoreType.BIND_CAR.getMessage()); | ||||
| wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); | wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); | ||||
| wxCreditHistory.setOperatorId(cuUserId); | wxCreditHistory.setOperatorId(cuUserId); | ||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory); | |||||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory,park.getTenantId()); | |||||
| } | } | ||||
| public ResultData unbindCar(Map<String, String> paramMap, WxPark park, Long cuUserId) { | public ResultData unbindCar(Map<String, String> paramMap, WxPark park, Long cuUserId) { | ||||
| @@ -1,13 +1,18 @@ | |||||
| package com.iformall.utils; | package com.iformall.utils; | ||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import com.aliyun.oss.common.utils.DateUtil; | |||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.enums.EnumScoreScaleRules; | |||||
| import com.iformall.mapper.WxLevelConfigMapper; | import com.iformall.mapper.WxLevelConfigMapper; | ||||
| import com.iformall.service.WxScoreRulesService; | import com.iformall.service.WxScoreRulesService; | ||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| import java.util.Objects; | import java.util.Objects; | ||||
| @Slf4j | @Slf4j | ||||
| @@ -24,21 +29,26 @@ public class CreditUtil { | |||||
| * @param wxLevelConfigMapper | * @param wxLevelConfigMapper | ||||
| * @return | * @return | ||||
| */ | */ | ||||
| public static int calUserCredit(int creditOrigin, WxCUserBasicInfo wxCUserBasicInfo, WxScoreRulesService wxScoreRulesService, WxLevelConfigMapper wxLevelConfigMapper) { | |||||
| public static int calUserCredit(int creditOrigin, WxCUserBasicInfo wxCUserBasicInfo, String tenantId, WxScoreRulesService wxScoreRulesService, WxLevelConfigMapper wxLevelConfigMapper) { | |||||
| Long userId = wxCUserBasicInfo.getId(); | Long userId = wxCUserBasicInfo.getId(); | ||||
| Integer score = wxCUserBasicInfo.getPoins(); | Integer score = wxCUserBasicInfo.getPoins(); | ||||
| String tenantId = wxCUserBasicInfo.getFinalTenantId(); | |||||
| String finalTenantId = wxCUserBasicInfo.getFinalTenantId(); | |||||
| Integer levelScaleConfig = WxLevelConfig.DEFAULT_SCALE ; | Integer levelScaleConfig = WxLevelConfig.DEFAULT_SCALE ; | ||||
| levelScaleConfig = wxLevelConfigMapper.getScale(tenantId, score) ; | |||||
| levelScaleConfig = wxLevelConfigMapper.getScale(finalTenantId, score) ; | |||||
| // 获取等级积分倍率, | // 获取等级积分倍率, | ||||
| int levelScale = getLevelScale(score, levelScaleConfig); | int levelScale = getLevelScale(score, levelScaleConfig); | ||||
| // 获取生日积分倍率: | // 获取生日积分倍率: | ||||
| int birthdayScale = getBirthdayScale(wxCUserBasicInfo, wxScoreRulesService); | |||||
| int birthdayScale = getBirthdayScale(wxCUserBasicInfo, tenantId, wxScoreRulesService); | |||||
| // 获取会员日倍率: | |||||
| int memberDayScale = getMemberDayScale(tenantId, wxScoreRulesService); | |||||
| int creditNew = new BigDecimal(creditOrigin) | int creditNew = new BigDecimal(creditOrigin) | ||||
| .multiply(new BigDecimal(levelScale)) | .multiply(new BigDecimal(levelScale)) | ||||
| .multiply(new BigDecimal(birthdayScale)) | .multiply(new BigDecimal(birthdayScale)) | ||||
| .multiply(new BigDecimal(memberDayScale)) | |||||
| .divide(new BigDecimal(WxScoreRules.DEFAULT_SCALE)) | |||||
| .divide(new BigDecimal(WxScoreRules.DEFAULT_SCALE)) | .divide(new BigDecimal(WxScoreRules.DEFAULT_SCALE)) | ||||
| .divide(new BigDecimal(WxLevelConfig.DEFAULT_SCALE) | .divide(new BigDecimal(WxLevelConfig.DEFAULT_SCALE) | ||||
| , BigDecimal.ROUND_HALF_UP).intValue(); | , BigDecimal.ROUND_HALF_UP).intValue(); | ||||
| @@ -76,7 +86,7 @@ public class CreditUtil { | |||||
| * @param wxScoreRulesService | * @param wxScoreRulesService | ||||
| * @return | * @return | ||||
| */ | */ | ||||
| private static int getBirthdayScale(WxCUserBasicInfo wxCUserBasicInfo, WxScoreRulesService wxScoreRulesService) { | |||||
| private static int getBirthdayScale(WxCUserBasicInfo wxCUserBasicInfo,String tenantId, WxScoreRulesService wxScoreRulesService) { | |||||
| int birthdayScale = WxScoreRules.DEFAULT_SCALE; | int birthdayScale = WxScoreRules.DEFAULT_SCALE; | ||||
| if (Objects.isNull(wxCUserBasicInfo) || StringUtils.isBlank(wxCUserBasicInfo.getPhone())) { | if (Objects.isNull(wxCUserBasicInfo) || StringUtils.isBlank(wxCUserBasicInfo.getPhone())) { | ||||
| return 0; | return 0; | ||||
| @@ -86,14 +96,14 @@ public class CreditUtil { | |||||
| if(Objects.isNull(wxCUserBasicInfo.getScoreDate())) { | if(Objects.isNull(wxCUserBasicInfo.getScoreDate())) { | ||||
| //设置过生日的用户 | //设置过生日的用户 | ||||
| if (Objects.nonNull(wxCUserBasicInfo.getBirthdate()) && DateUtils.birthdaysBetween(wxCUserBasicInfo.getBirthdate()) == 0) { | if (Objects.nonNull(wxCUserBasicInfo.getBirthdate()) && DateUtils.birthdaysBetween(wxCUserBasicInfo.getBirthdate()) == 0) { | ||||
| birthdayScale = getBirthdayScoreScale(wxCUserBasicInfo.getFinalTenantId(),wxScoreRulesService); | |||||
| birthdayScale = getBirthdayScoreScale(tenantId,wxScoreRulesService); | |||||
| } else { | } else { | ||||
| log.info("积分倍率计算:未设置生日或生日条件未匹配={}", wxCUserBasicInfo.getScoreDate()); | log.info("积分倍率计算:未设置生日或生日条件未匹配={}", wxCUserBasicInfo.getScoreDate()); | ||||
| } | } | ||||
| } else { | } else { | ||||
| //发过生日券的用户或者享受过生日积分倍率的用户 | //发过生日券的用户或者享受过生日积分倍率的用户 | ||||
| if (Objects.nonNull(wxCUserBasicInfo.getScoreDate()) && DateUtils.birthdaysBetween(wxCUserBasicInfo.getScoreDate()) == 0) { | if (Objects.nonNull(wxCUserBasicInfo.getScoreDate()) && DateUtils.birthdaysBetween(wxCUserBasicInfo.getScoreDate()) == 0) { | ||||
| birthdayScale = getBirthdayScoreScale(wxCUserBasicInfo.getFinalTenantId(), wxScoreRulesService); | |||||
| birthdayScale = getBirthdayScoreScale(tenantId, wxScoreRulesService); | |||||
| } | } | ||||
| } | } | ||||
| @@ -113,7 +123,7 @@ public class CreditUtil { | |||||
| */ | */ | ||||
| public static int getBirthdayScoreScale(String tenantId, WxScoreRulesService wxScoreRulesService) { | public static int getBirthdayScoreScale(String tenantId, WxScoreRulesService wxScoreRulesService) { | ||||
| int birthdayScale = WxScoreRules.DEFAULT_SCALE; | int birthdayScale = WxScoreRules.DEFAULT_SCALE; | ||||
| WxScoreRules rules = wxScoreRulesService.getCreditRules(tenantId); | |||||
| WxScoreRules rules = wxScoreRulesService.getCreditDoubleRules(tenantId); | |||||
| if (Objects.nonNull(rules) && Objects.nonNull(rules.getScale())) { | if (Objects.nonNull(rules) && Objects.nonNull(rules.getScale())) { | ||||
| //规则存使用积分倍率 | //规则存使用积分倍率 | ||||
| birthdayScale = rules.getScale(); | birthdayScale = rules.getScale(); | ||||
| @@ -125,6 +135,83 @@ public class CreditUtil { | |||||
| return birthdayScale; | return birthdayScale; | ||||
| } | } | ||||
| /** | |||||
| * 获取会员日倍率 | |||||
| * | |||||
| * @param | |||||
| * @param wxScoreRulesService | |||||
| * @return | |||||
| */ | |||||
| private static int getMemberDayScale(String tenantId, WxScoreRulesService wxScoreRulesService) { | |||||
| int memberDayScale = WxScoreRules.DEFAULT_SCALE; | |||||
| WxScoreRules rules = wxScoreRulesService.getCreditDoubleRules(tenantId); | |||||
| if (Objects.nonNull(rules) && Objects.nonNull(rules.getRules())) { | |||||
| //会员日积分规则 | |||||
| List<JSONObject> ruleList = JSONObject.parseArray(rules.getRules(), JSONObject.class); | |||||
| for (JSONObject rule:ruleList) { | |||||
| Integer cycle = rule.getInteger(WxScoreRules.CYCLE); | |||||
| String cycleStart = rule.getString(WxScoreRules.CYCLE_START); | |||||
| String cycleEnd = rule.getString(WxScoreRules.CYCLE_END); | |||||
| Integer cycleScale = rule.getInteger(WxScoreRules.CYCLE_SCALE); | |||||
| if(cycle == null || StringUtils.isBlank(cycleStart) || StringUtils.isBlank(cycleEnd) || cycleScale == null){ | |||||
| break; | |||||
| } | |||||
| if(cycleScale > memberDayScale){ | |||||
| if(cycle.equals(EnumScoreScaleRules.WEEK.getCode())){ | |||||
| try { | |||||
| int start = Integer.parseInt(cycleStart); | |||||
| int end = Integer.parseInt(cycleEnd); | |||||
| int weekDay = DateUtils.getWeekOfDate(new Date()); | |||||
| if(weekDay >= start && weekDay <=end){ | |||||
| memberDayScale = cycleScale; | |||||
| } | |||||
| } catch (NumberFormatException e) { | |||||
| break; | |||||
| } | |||||
| }else if(cycle.equals(EnumScoreScaleRules.MONTH.getCode())){ | |||||
| try { | |||||
| int start = Integer.parseInt(cycleStart); | |||||
| int end = Integer.parseInt(cycleEnd); | |||||
| int monthDay = DateUtils.getMonthOfDate(new Date()); | |||||
| if(monthDay >= start && monthDay <=end){ | |||||
| memberDayScale = cycleScale; | |||||
| } | |||||
| } catch (NumberFormatException e) { | |||||
| break; | |||||
| } | |||||
| }else if(cycle.equals(EnumScoreScaleRules.YEAR.getCode())){ | |||||
| try { | |||||
| if(cycleStart.contains("-") && cycleEnd.contains("-")){ | |||||
| String[] cycleStarts = cycleStart.split("-"); | |||||
| String[] cycleEnds = cycleEnd.split("-"); | |||||
| int month = DateUtils.getMonth(new Date()); | |||||
| int monthStart = Integer.parseInt(cycleStarts[0]); | |||||
| int monthEnd = Integer.parseInt(cycleEnds[0]); | |||||
| if(month >= monthStart && month <= monthEnd){ | |||||
| int monthDay = DateUtils.getMonthOfDate(new Date()); | |||||
| int dayStart = Integer.parseInt(cycleStarts[1]); | |||||
| int dayEnd = Integer.parseInt(cycleEnds[1]); | |||||
| if(monthDay >= dayStart && monthDay <= dayEnd){ | |||||
| memberDayScale = cycleScale; | |||||
| } | |||||
| } | |||||
| } | |||||
| } catch (NumberFormatException e) { | |||||
| break; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } else { | |||||
| //没有配置积分规则 | |||||
| //log.info("积分倍率计算:会员生日积分倍率配置=null"); | |||||
| } | |||||
| log.info("会员日积分倍率配置:{}", memberDayScale); | |||||
| return memberDayScale; | |||||
| } | |||||
| public static Long getIsBirthDayScale() { | public static Long getIsBirthDayScale() { | ||||
| return isBirthDayScale.get(); | return isBirthDayScale.get(); | ||||
| } | } | ||||
| @@ -1288,4 +1288,45 @@ public class DateUtils { | |||||
| } | } | ||||
| } return age; | } return age; | ||||
| } | } | ||||
| /** | |||||
| * 获取当前日期是星期几<br> | |||||
| * | |||||
| * @param date | |||||
| * @return 当前日期是星期几 | |||||
| */ | |||||
| public static int getWeekOfDate(Date date) { | |||||
| Calendar cal = Calendar.getInstance(); | |||||
| cal.setTime(date); | |||||
| int w = cal.get(Calendar.DAY_OF_WEEK) ; | |||||
| if (w == 1) | |||||
| w = 7; | |||||
| return w - 1; | |||||
| } | |||||
| /** | |||||
| * 获取当前日期是当前月的第几天<br> | |||||
| * | |||||
| * @param date | |||||
| * @return 获取当前日期是当前月的第几天 | |||||
| */ | |||||
| public static int getMonthOfDate(Date date) { | |||||
| Calendar cal = Calendar.getInstance(); | |||||
| cal.setTime(date); | |||||
| int m = cal.get(Calendar.DAY_OF_MONTH); | |||||
| return m; | |||||
| } | |||||
| /** | |||||
| * 获取当前日期是几月<br> | |||||
| * | |||||
| * @param date | |||||
| * @return 获取当前日期是几月 | |||||
| */ | |||||
| public static int getMonth(Date date) { | |||||
| Calendar cal = Calendar.getInstance(); | |||||
| cal.setTime(date); | |||||
| int month = cal.get(Calendar.MONTH) + 1; | |||||
| return month; | |||||
| } | |||||
| } | } | ||||
| @@ -216,7 +216,7 @@ public class DataInitController extends BaseController { | |||||
| creditHistory.setMerchantId(buUser.getMerchantId()); | creditHistory.setMerchantId(buUser.getMerchantId()); | ||||
| WxMerchant wxMerchant = merchantService.getById(buUser.getMerchantId()); | WxMerchant wxMerchant = merchantService.getById(buUser.getMerchantId()); | ||||
| creditHistory.setChangePurpose("核销积分数据修复:消费商户["+wxMerchant.getName()+"] 卷名称["+coupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); | creditHistory.setChangePurpose("核销积分数据修复:消费商户["+wxMerchant.getName()+"] 卷名称["+coupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); | ||||
| creditHistoryService.saveOrUpdate(creditHistory); | |||||
| creditHistoryService.saveOrUpdate(creditHistory,co.getTenantId()); | |||||
| }); | }); | ||||
| } | } | ||||