From b0a60e5191d8b3a84fa269e2bdee1a4c4f87b346 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 3 Apr 2023 22:29:38 +0800 Subject: [PATCH] //credit_score_rules --- ...23033000001_upd_merchant_credit_locked.sql | 2 +- .../com/iformall/enums/EnumScoreType.java | 2 +- .../service/WxCUserBasicInfoService.java | 2 +- .../iformall/service/WxCUserFromService.java | 2 +- .../service/WxCreditHistoryService.java | 13 ++++ .../iformall/service/WxMemberCardService.java | 2 - .../impl/WxCUserBasicInfoServiceImpl.java | 2 +- .../service/impl/WxCUserFromServiceImpl.java | 20 ++++++- .../impl/WxCreditHistoryServiceImpl.java | 59 ++++++++++++++++++- .../service/impl/WxMemberCardServiceImpl.java | 21 ++----- .../impl/AfterAddCreditMsgServiceImpl.java | 33 +++++++---- ...sideBasicUserPhoneFirstMsgServiceImpl.java | 4 +- 12 files changed, 119 insertions(+), 43 deletions(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V2023033000001_upd_merchant_credit_locked.sql b/mallinkAdmin/src/main/resources/db/migration/V2023033000001_upd_merchant_credit_locked.sql index e94ae4fc7..6e299bb4d 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V2023033000001_upd_merchant_credit_locked.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V2023033000001_upd_merchant_credit_locked.sql @@ -15,7 +15,7 @@ DROP COLUMN `credit_locked`; --type=2 积分规则,追加老带新规则 缓存--缓存--缓存 update wx_score_rules set rules = JSON_ARRAY_APPEND(rules, '$',CAST('{"id": 25, "desc": "会员推广奖励", "step": 1, "limit": 0, "score": 0}' AS JSON)) where type = 2; -update wx_score_rules set rules = JSON_ARRAY_APPEND(rules, '$',CAST('{"id": 26, "desc": "推广会员加积分奖励", "step": 1, "limit": 0, "score": 0}' AS JSON)) +update wx_score_rules set rules = JSON_ARRAY_APPEND(rules, '$',CAST('{"id": 26, "desc": "推广会员消费奖励", "step": 1, "limit": 0, "score": 0}' AS JSON)) where type = 2; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java b/mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java index 98d3735c4..34c4333ed 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java @@ -34,7 +34,7 @@ public enum EnumScoreType { POINT_CHANGE(24, "其他积分变动"),// OLD_WITH_NEW(25, "会员推广奖励"), - OLD_WITH_NEW_CONSUME(26, "推广会员加积分奖励"), + OLD_WITH_NEW_CONSUME(26, "推广会员消费奖励"), ; public static EnumScoreType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java index 95a59f9c6..5d783616c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java @@ -172,7 +172,7 @@ public interface WxCUserBasicInfoService { WxCUserBasicInfo registerByPhone(TenantEntity tenantEntity, String phone, String nickName,String name, Integer sex, String avatarUrl); - int addCredit(Long userId,Long fromUserId, TenantEntity tenantInfo, EnumScoreType scoreType); + int addCredit(Long userId,TenantEntity tenantInfo, EnumScoreType scoreType); void registerJinmao(TenantEntity tenantInfo,WxCUserBasicInfo basicInfo); diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserFromService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserFromService.java index 3a2f54318..4b889f24a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserFromService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserFromService.java @@ -32,5 +32,5 @@ public interface WxCUserFromService { WxCUserBasicInfo selectOldByNew(TenantEntity tenantEntity, Long basicUserId, EnumAppPlat plat); - void oldAddCredit(TenantEntity tenantEntity, Long basicUserId, EnumAppPlat wx); + void oldAddCreditWithNew(TenantEntity tenantEntity, WxCUserBasicInfo basicInfo, EnumAppPlat wx); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java b/mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java index 268e02185..c1e5beea6 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java @@ -2,10 +2,12 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; +import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.WxCreditHistory; import com.iformall.domain.vo.MerchantCreditRankingVo; import com.iformall.domain.vo.WxCreditHistoryVo; +import com.iformall.enums.EnumAppPlat; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -92,4 +94,15 @@ public interface WxCreditHistoryService { PageInfo findListMorePage(WxCreditHistory wxCreditHistory,Integer pageIndex, Integer pageSize); + /** + * 积分变更后消息 + * creditHistoryId为空时为初始化积分数据 + * @param tenantEntity + * @param cuserId + * @param baseUserId + * @param creditHistoryId + */ + void sendAfterUpdateCreditMsg(TenantEntity tenantEntity, Long cuserId, Long baseUserId, Long creditHistoryId); + + void oldAddCreditWithNewConsume(TenantEntity tenantEntity, WxCreditHistory wxCreditHistory, WxCUserBasicInfo basicInfo, EnumAppPlat plat); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxMemberCardService.java b/mallinkService/src/main/java/com/iformall/service/WxMemberCardService.java index ff654b318..b6a893068 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMemberCardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMemberCardService.java @@ -45,6 +45,4 @@ public interface WxMemberCardService { ResultData syncMemberCardBonus(TenantEntity tenantEntity,String card_id,String code,String markid, int before_bonus_value,int bonus_value,Boolean need_inform_bonus); - void sendsyncMemberCardBonusMsg(TenantEntity tenantEntity,Long cuserId,Long baseUserId,Long creditHistoryId); - } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java index 187d08978..b270db8ea 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -711,7 +711,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc } @Override - public int addCredit(Long userId,Long fromUserId,TenantEntity tenantInfo, EnumScoreType scoreType) { + public int addCredit(Long userId,TenantEntity tenantInfo, EnumScoreType scoreType) { if(userId == null){ return 0; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserFromServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserFromServiceImpl.java index 2b576c47f..93f091bb0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserFromServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserFromServiceImpl.java @@ -17,6 +17,7 @@ import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; @@ -41,6 +42,10 @@ public class WxCUserFromServiceImpl implements WxCUserFromService, IExcelExportS @Autowired WxCUserBasicInfoMapper wxCUserBasicInfoMapper; + @Lazy + @Autowired + WxCreditHistoryService wxCreditHistoryService; + @Autowired WxMerchantMapper wxMerchantMapper; @@ -130,14 +135,23 @@ public class WxCUserFromServiceImpl implements WxCUserFromService, IExcelExportS } @Override - public void oldAddCredit(TenantEntity tenantEntity, Long basicUserId, EnumAppPlat plat) { + public void oldAddCreditWithNew(TenantEntity tenantEntity, WxCUserBasicInfo basicInfo, EnumAppPlat plat) { try{ //查询推荐人 - WxCUserBasicInfo basicInfo = selectOldByNew(tenantEntity, basicUserId, plat); + WxCUserBasicInfo oldBasicInfo = selectOldByNew(tenantEntity, basicInfo.getId(), plat); if(basicInfo == null){ return; } - wxCUserBasicInfoService.addCredit(basicInfo.getId(),basicUserId,tenantEntity, EnumScoreType.OLD_WITH_NEW); + WxCreditHistory oldAddCredit = new WxCreditHistory(); + oldAddCredit.setCUserId(oldBasicInfo.getId()); + oldAddCredit.setTenantId(oldBasicInfo.getFinalTenantId()); + oldAddCredit.setFinalTenantId(oldBasicInfo.getFinalTenantId()); + oldAddCredit.setCreateDate(new Date()); + oldAddCredit.setCreditType(EnumScoreType.OLD_WITH_NEW.getCode()); + oldAddCredit.setChangePurpose("推广会员["+basicInfo.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2")+"]授权手机号"); + oldAddCredit.setOperatorType(EnumUserType.CUSERBASIC.getCode()); + oldAddCredit.setOperatorId(basicInfo.getId()); + WxCreditHistory record = wxCreditHistoryService.saveOrUpdate(oldAddCredit,tenantEntity); }catch(Exception e){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java index 78f854d1f..85d36ea61 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -10,12 +10,14 @@ import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.msg.AfterAddCreditMsg; import com.iformall.domain.po.msg.WxMsg; import com.iformall.domain.vo.MerchantCreditRankingVo; import com.iformall.domain.vo.WxCreditHistoryVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; +import com.iformall.mq.MqBaseProducer; import com.iformall.service.*; import com.iformall.utils.Constant; import com.iformall.utils.CreditUtil; @@ -101,7 +103,11 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { private WxTemplateMsgService wxTemplateMsgService; @Autowired - private WxMemberCardService wxMemberCardService; + private MqBaseProducer mqBaseProducer; + + @Lazy + @Autowired + private WxCUserFromService wxCUserFromService; @Override public void clearCreditByYear() { @@ -136,7 +142,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { creditHistoryQ.setStartTime(date); List list = wxCreditHistoryMapper.getIsMemberCarAndClearCredit(creditHistoryQ); for (WxCreditHistory history:list) { - wxMemberCardService.sendsyncMemberCardBonusMsg(tenantInfo,null,history.getCUserId(),history.getId()); + this.sendAfterUpdateCreditMsg(tenantInfo,null,history.getCUserId(),history.getId()); } } @@ -634,7 +640,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { //发消息 sendCreditUpdRemind(wxCUserBasicInfo,record,tenantEntity); - wxMemberCardService.sendsyncMemberCardBonusMsg(tenantEntity,null,wxCUserBasicInfo.getId(),record.getId()); + this.sendAfterUpdateCreditMsg(tenantEntity,null,wxCUserBasicInfo.getId(),record.getId()); } else { //wxCreditHistoryMapper.updateById(record); @@ -752,6 +758,53 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { return creditMap; } + @Override + public void sendAfterUpdateCreditMsg(TenantEntity tenantEntity, Long cuserId, Long baseUserId, Long creditHistoryId) { + AfterAddCreditMsg msg = new AfterAddCreditMsg(); + msg.updateTenantInfo(tenantEntity); + msg.setMsgType(EnumMsgRecordType.AFTER_ADD_CREDIT.getCode()); + if(cuserId != null){ + msg.setCuserId(cuserId); + }else if(baseUserId != null){ + msg.setBasicUserId(baseUserId); + }else { + return; + } + msg.setCreditHistoryId(creditHistoryId); + mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + } + + @Override + public void oldAddCreditWithNewConsume(TenantEntity tenantEntity, WxCreditHistory wxCreditHistory, WxCUserBasicInfo basicInfo,EnumAppPlat plat) { + if(!EnumScoreType.SPEND_CREDIT.getCode().equals(wxCreditHistory.getCreditType()) + && !EnumScoreType.CONSUMPTION.getCode().equals(wxCreditHistory.getCreditType())){ + return; + } + + try{ + WxCUserBasicInfo oldBasicInfo = wxCUserFromService.selectOldByNew(tenantEntity, wxCreditHistory.getCUserId(), plat); + if(basicInfo == null){ + return; + } + WxCreditHistory oldAddCredit = new WxCreditHistory(); + oldAddCredit.setCUserId(oldBasicInfo.getId()); + oldAddCredit.setTenantId(oldBasicInfo.getFinalTenantId()); + oldAddCredit.setFinalTenantId(oldBasicInfo.getFinalTenantId()); + oldAddCredit.setCreateDate(new Date()); + oldAddCredit.setSpend(wxCreditHistory.getSpend()); + oldAddCredit.setCreditType(EnumScoreType.OLD_WITH_NEW_CONSUME.getCode()); + oldAddCredit.setChangePurpose("推广会员["+basicInfo.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2")+"]消费["+wxCreditHistory.getSpendStr()+"元]"); + oldAddCredit.setOperatorType(EnumUserType.CUSERBASIC.getCode()); + oldAddCredit.setOperatorId(basicInfo.getId()); + WxCreditHistory record = this.saveOrUpdate(oldAddCredit,tenantEntity); + + + }catch(Exception e){ + + } + + } + //根据积分类型计算"增加积分" private int creditIncrement(WxCreditHistory record,TenantEntity tenantEntity,WxCUserBasicInfo wxCUserBasicInfo,boolean hasBirthDateCredit) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMemberCardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMemberCardServiceImpl.java index 69de04691..c57257916 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMemberCardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMemberCardServiceImpl.java @@ -50,6 +50,9 @@ public class WxMemberCardServiceImpl implements WxMemberCardService { @Autowired WxCUserBasicInfoService wxCUserBasicInfoService; + @Autowired + WxCreditHistoryService wxCreditHistoryService; + @Autowired private MqBaseProducer mqBaseProducer; @@ -95,7 +98,7 @@ public class WxMemberCardServiceImpl implements WxMemberCardService { TenantEntity tenantEntity = new TenantEntity(); tenantEntity.setTenantId(record.getTenantId()); tenantEntity.setParentTenantId(record.getParentTenantId()); - this.sendsyncMemberCardBonusMsg(tenantEntity,record.getCuserId(),null,null); + wxCreditHistoryService.sendAfterUpdateCreditMsg(tenantEntity,record.getCuserId(),null,null); } }else{ record.setId(id); @@ -298,20 +301,4 @@ public class WxMemberCardServiceImpl implements WxMemberCardService { } } - @Override - public void sendsyncMemberCardBonusMsg(TenantEntity tenantEntity, Long cuserId, Long baseUserId, Long creditHistoryId) { - AfterAddCreditMsg msg = new AfterAddCreditMsg(); - msg.updateTenantInfo(tenantEntity); - msg.setMsgType(EnumMsgRecordType.AFTER_ADD_CREDIT.getCode()); - if(cuserId != null){ - msg.setCuserId(cuserId); - }else if(baseUserId != null){ - msg.setBasicUserId(baseUserId); - }else { - logger.error("商圈会员积分同步消息发送失败"); - } - msg.setCreditHistoryId(creditHistoryId); - mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); - } - } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/AfterAddCreditMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/AfterAddCreditMsgServiceImpl.java index 8315a23a5..976431001 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/AfterAddCreditMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/AfterAddCreditMsgServiceImpl.java @@ -11,10 +11,7 @@ import com.iformall.enums.EnumAppPlat; import com.iformall.enums.EnumBusinessType; import com.iformall.enums.EnumMemberCardStatus; import com.iformall.mapper.*; -import com.iformall.service.WxAppinfoService; -import com.iformall.service.WxCUserService; -import com.iformall.service.WxMemberCardService; -import com.iformall.service.WxPayAccountService; +import com.iformall.service.*; import com.iformall.service.msg.MsgSendService; import com.iformall.service.wechat.FmOpenService; import org.apache.commons.lang3.StringUtils; @@ -55,6 +52,12 @@ public class AfterAddCreditMsgServiceImpl implements MsgSendService { @Autowired private WxCreditHistoryMapper wxCreditHistoryMapper; + @Autowired + private WxCreditHistoryService wxCreditHistoryService; + + @Autowired + private WxCUserFromService wxCUserFromService; + @Override public void send(BaseMsg baseMsg) throws Exception{ @@ -84,6 +87,13 @@ public class AfterAddCreditMsgServiceImpl implements MsgSendService { afterAddCreditMsg.setCuserId(cuserId); } + if(afterAddCreditMsg.getBasicUserId() == null){ + WxCUser wxCUser = wxCUserMapper.selectById(afterAddCreditMsg.getCuserId(),afterAddCreditMsg.getTenantId()); + afterAddCreditMsg.setBasicUserId(wxCUser.getUserId()); + } + + WxCUserBasicInfo basicInfo = wxCUserBasicInfoMapper.selectById(afterAddCreditMsg.getBasicUserId(), tenantEntity.getFinalTenantId()); + WxMemberCard memberCardQ = new WxMemberCard(); memberCardQ.updateFinalTenantId(tenantEntity); memberCardQ.setCuserId(afterAddCreditMsg.getCuserId()); @@ -95,18 +105,13 @@ public class AfterAddCreditMsgServiceImpl implements MsgSendService { } String markid = null; Integer before_bonus_value = 0,bonus_value = 0; + WxCreditHistory wxCreditHistory = null; if(afterAddCreditMsg.getCreditHistoryId() == null){ - if(afterAddCreditMsg.getBasicUserId() == null){ - WxCUser wxCUser = wxCUserMapper.selectById(afterAddCreditMsg.getCuserId(),afterAddCreditMsg.getTenantId()); - afterAddCreditMsg.setBasicUserId(wxCUser.getUserId()); - } - - WxCUserBasicInfo basicInfo = wxCUserBasicInfoMapper.selectById(afterAddCreditMsg.getBasicUserId(), tenantEntity.getFinalTenantId()); markid = basicInfo.getId().toString(); bonus_value = basicInfo.getCredit(); }else{ - WxCreditHistory wxCreditHistory = wxCreditHistoryMapper.selectById(afterAddCreditMsg.getCreditHistoryId(), tenantEntity.getFinalTenantId()); + wxCreditHistory = wxCreditHistoryMapper.selectById(afterAddCreditMsg.getCreditHistoryId(), tenantEntity.getFinalTenantId()); markid = wxCreditHistory.getId().toString(); before_bonus_value = wxCreditHistory.getCreditAmount()-wxCreditHistory.getCreditNum(); bonus_value = wxCreditHistory.getCreditAmount(); @@ -120,5 +125,11 @@ public class AfterAddCreditMsgServiceImpl implements MsgSendService { logger.info(tenantEntity.getTenantId()+"--"+memberCard.getId()+"--微信商圈同步会员积分{}"+resultData.message); } + + if(wxCreditHistory != null){ + //老带新积分奖励 todo 先处理微信的逻辑 + wxCreditHistoryService.oldAddCreditWithNewConsume(tenantEntity,wxCreditHistory,basicInfo,EnumAppPlat.WX); + } + } } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideBasicUserPhoneFirstMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideBasicUserPhoneFirstMsgServiceImpl.java index 441c11fc1..2a8c6ba3b 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideBasicUserPhoneFirstMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideBasicUserPhoneFirstMsgServiceImpl.java @@ -61,9 +61,9 @@ public class FmInsideBasicUserPhoneFirstMsgServiceImpl implements MsgSendService // 成长值 wxScoreRulesService.addScore(tenantEntity, EnumScoreType.WECHAT_PHONE, basicInfo); // 增加积分 - wxCUserBasicInfoService.addCredit(basicInfo.getId(),basicInfo.getId(),tenantEntity,EnumScoreType.WECHAT_PHONE); + wxCUserBasicInfoService.addCredit(basicInfo.getId(),tenantEntity,EnumScoreType.WECHAT_PHONE); //老带新增加积分 todo 先处理微信的业务 - wxCUserFromService.oldAddCredit(tenantEntity,basicInfo.getId(),EnumAppPlat.WX); + wxCUserFromService.oldAddCreditWithNew(tenantEntity,basicInfo,EnumAppPlat.WX); // 外部注券 memCouponFromDspService.couponOrderFromDsp(tenantEntity, basicInfo.getPhone());