Просмотр исходного кода

//credit_score_rules

release_toaliyun_real
xhxu 3 лет назад
Родитель
Сommit
b0a60e5191
12 измененных файлов: 119 добавлений и 43 удалений
  1. +1
    -1
      mallinkAdmin/src/main/resources/db/migration/V2023033000001_upd_merchant_credit_locked.sql
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java
  3. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java
  4. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxCUserFromService.java
  5. +13
    -0
      mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java
  6. +0
    -2
      mallinkService/src/main/java/com/iformall/service/WxMemberCardService.java
  7. +1
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java
  8. +17
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserFromServiceImpl.java
  9. +56
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java
  10. +4
    -17
      mallinkService/src/main/java/com/iformall/service/impl/WxMemberCardServiceImpl.java
  11. +22
    -11
      mallinkService/src/main/java/com/iformall/service/msg/impl/AfterAddCreditMsgServiceImpl.java
  12. +2
    -2
      mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideBasicUserPhoneFirstMsgServiceImpl.java

+ 1
- 1
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;




+ 1
- 1
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) {


+ 1
- 1
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);



+ 1
- 1
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);
}

+ 13
- 0
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<WxCreditHistoryVo> 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);
}

+ 0
- 2
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);

}

+ 1
- 1
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;
}


+ 17
- 3
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){



+ 56
- 3
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<WxCreditHistory> 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) {


+ 4
- 17
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());
}

}

+ 22
- 11
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);
}

}
}

+ 2
- 2
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());



Загрузка…
Отмена
Сохранить