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

WxUserGrantController 除外部注卷

release_toaliyun_real
xhxu 5 лет назад
Родитель
Сommit
d8c97ce921
16 измененных файлов: 253 добавлений и 168 удалений
  1. +39
    -23
      mallinkCApi/src/main/java/com/iformall/controller/BaseController.java
  2. +16
    -16
      mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
  3. +15
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java
  4. +8
    -0
      mallinkService/src/main/java/com/iformall/domain/po/base/TenantEntity.java
  5. +3
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java
  6. +2
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java
  7. +3
    -1
      mallinkService/src/main/java/com/iformall/service/WxCUserService.java
  8. +13
    -5
      mallinkService/src/main/java/com/iformall/service/impl/MemCouponFromDspServiceImpl.java
  9. +30
    -32
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java
  10. +15
    -9
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java
  11. +3
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java
  12. +12
    -14
      mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java
  13. +71
    -57
      mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java
  14. +9
    -2
      mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml
  15. +6
    -0
      mallinkService/src/main/resources/mapper/WxCUserMapper.xml
  16. +8
    -6
      mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml

+ 39
- 23
mallinkCApi/src/main/java/com/iformall/controller/BaseController.java Просмотреть файл

@@ -148,39 +148,55 @@ public class BaseController {
if (StringUtils.isBlank(phone))
return;

List<WxCUserBasicInfo> list = wxCUserBasicInfoService.findByPhone(tenantEntity, phone);
if (list.size() > 0) {
WxCUserBasicInfo basicInfo = list.get(0);
WxCUserBasicInfo byId = null;
if(user.getUserId() != null){
byId = wxCUserBasicInfoService.getById(user.getUserId());
}

// List<WxCUserBasicInfo> list = wxCUserBasicInfoService.findByPhone(tenantEntity, phone);
WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(tenantEntity, phone);

if (basicInfo != null) {
// WxCUserBasicInfo basicInfo = list.get(0);
// 微信名称,统一成微信昵称
if (!Objects.equals(basicInfo.getNickName(), user.getNickName())) {
basicInfo.setNickName(user.getNickName());
}
// 性别
if (basicInfo.getSex() == null) {
basicInfo.setSex(user.getGender());
}
// 成长值
if (Objects.nonNull(user.getScore())) {
basicInfo.setPoins(user.getScore());
}
// 积分
if (Objects.nonNull(user.getCredit())) {
basicInfo.setCredit(user.getCredit());
}
wxCUserBasicInfoService.updateObj(basicInfo, user);
} else {
// if (!Objects.equals(basicInfo.getNickName(), user.getNickName())) {
// basicInfo.setNickName(user.getNickName());
// }
// // 性别
// if (basicInfo.getSex() == null) {
// basicInfo.setSex(user.getGender());
// }
// // 成长值
// if (Objects.nonNull(user.getScore())) {
// basicInfo.setPoins(user.getScore());
// }
// // 积分
// if (Objects.nonNull(user.getCredit())) {
// basicInfo.setCredit(user.getCredit());
// }

user.setUserId(basicInfo.getId());
wxCUserService.updateUserId(user);


//wxCUserBasicInfoService.updateObj(basicInfo, user);
} else if(byId != null){
byId.setPhone(phone);
byId.setNickName(user.getNickName());
wxCUserBasicInfoService.update(byId);
}else{
Date cur = new Date();
WxCUserBasicInfo basicInfo = new WxCUserBasicInfo();
basicInfo = new WxCUserBasicInfo();
basicInfo.setId(user.getId());
basicInfo.updateTenantInfo(tenantEntity);
basicInfo.setPhone(phone);
basicInfo.setNickName(user.getNickName());
basicInfo.setSex(user.getGender());
basicInfo.setPoins(user.getScore());
basicInfo.setCreateDate(cur);
basicInfo.setUpdateDate(cur);
basicInfo.setCredit(user.getCredit());
wxCUserBasicInfoService.save(basicInfo);
user.setUserId(basicInfo.getId());
wxCUserService.updateUserId(user);
}
}



+ 16
- 16
mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java Просмотреть файл

@@ -410,11 +410,11 @@ public class WxUserGrantController extends BaseController {
}

WxCUser user = getUser();
if (user.getTenantId().equalsIgnoreCase(tenantId)) {
if (user.getParentTenantId().equalsIgnoreCase(parentTenantId)) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
request.setAttribute(Constant.TENANT_ID, tenantId);
request.setAttribute(Constant.PARENT_TENANT_ID, parentTenantId);
user.setParentTenantId(parentTenantId);
user.setTenantId(tenantId);
userTokenService.saveOrUpdate(user);
}

@@ -640,10 +640,16 @@ public class WxUserGrantController extends BaseController {
}
wxCUserService.saveOrUpdate(user);

if (!user.getPhone().contains("*")) { // 用户手机非加密
// 更新到basicinfo
saveToBasicInfo(user);
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_PHONE, user);
}

if(isFirstPhone) {
// 首次授权, 增加成长值及积分
// 成长值
user.setScore(user.getScore() + wxScoreRulesService.addScore(EnumScoreType.WECHAT_PHONE, user));
wxScoreRulesService.addScore(EnumScoreType.WECHAT_PHONE, user);
// 增加积分
wxCUserService.addCredit(user, EnumScoreType.WECHAT_PHONE);
// 外部注券
@@ -660,12 +666,6 @@ public class WxUserGrantController extends BaseController {
return new ResultData(ErrorCode.DB_FAIL.getCode(), "解密并保存出错", resultMap);
}

if (!user.getPhone().contains("*")) { // 用户手机非加密
// 更新到basicinfo
saveToBasicInfo(user);
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_PHONE, user);
}

return new ResultData(resultMap);
}

@@ -781,7 +781,7 @@ public class WxUserGrantController extends BaseController {
userVo.setUpgradeScore(levelTarget-userVo.getScore());
}

WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(user.getId());
WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(user.getUserId());
if (wxCUserBasicInfo != null) {
userVo.setName(wxCUserBasicInfo.getName());
userVo.setBirthdate(wxCUserBasicInfo.getBirthdate());
@@ -799,7 +799,7 @@ public class WxUserGrantController extends BaseController {
WxCUser user = getUser();
WxCUserCar userCar = new WxCUserCar();
userCar.updateTenantInfo(user);
userCar.setCUserId(user.getId());
userCar.setCUserId(user.getUserId());
Integer count = wxCUserCarService.countUserCar(userCar);
if (count > 0) {
Map returnMap = new HashMap();
@@ -821,7 +821,7 @@ public class WxUserGrantController extends BaseController {
public ResultData getCarList() {
WxCUserCar userCar = new WxCUserCar();
userCar.updateTenantInfo(getTenantInfo());
userCar.setCUserId(getUserId());
userCar.setCUserId(getUser().getUserId());
List<WxCUserCar> list = wxCUserCarService.getList(userCar);
return new ResultData(Result.SUCCESS, "获取查询成功", list);
}
@@ -875,7 +875,7 @@ public class WxUserGrantController extends BaseController {
public ResultData updateUserInfo(@RequestBody WxCUserBasicInfo wxCUserBasicInfo) {
if (wxCUserBasicInfo == null)
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
if (wxCUserBasicInfoService.getById(getUserId()) == null)
if (wxCUserBasicInfoService.getById(getUser().getUserId()) == null)
return new ResultData(ErrorCode.USER_IS_NOT_MEMBER);

TenantEntity tenantEntity = getTenantInfo();
@@ -890,7 +890,7 @@ public class WxUserGrantController extends BaseController {
record.setBirthdate(wxCUserBasicInfo.getBirthdate());
record.setSex(wxCUserBasicInfo.getSex());
record.setAddress(wxCUserBasicInfo.getAddress());
record.setId(getUserId());
record.setId(getUser().getUserId());
record.setUpdateDate(new Date());
wxCUserBasicInfoService.update(record);
wxScoreRulesService.addScore(EnumScoreType.COMPLETE_INFO, record);
@@ -901,7 +901,7 @@ public class WxUserGrantController extends BaseController {
wxCreditHistory.setCreateDate(new Date());
wxCreditHistory.setCreditType(EnumScoreType.COMPLETE_INFO.getCode());
wxCreditHistory.setOperatorType(EnumUserType.CUSER.getCode());
wxCreditHistory.setOperatorId(getUserId());
wxCreditHistory.setOperatorId(getUser().getUserId());
wxCreditHistoryService.saveOrUpdate(wxCreditHistory);
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, record);
}
@@ -935,7 +935,7 @@ public class WxUserGrantController extends BaseController {
List<WxLevelMerchantCVo> levelMerchantList = wxLevelConfigService.findListCVo(levelMerchant);

Map<String, Object> result = new HashMap();
result.put("id", user.getId());
result.put("id", user.getUserId());
result.put("level", level);
result.put("levelMerchantList", levelMerchantList);
return new ResultData(result);


+ 15
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java Просмотреть файл

@@ -11,6 +11,7 @@ import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils;

import javax.validation.constraints.NotNull;
import java.util.Date;
@@ -161,5 +162,19 @@ public class WxCUserBasicInfo extends TenantEntity {
public int hashCode() {
return Objects.hash(this.phone);
}
public void undateFinalTenantId(){
setFinalTenantId(getTenantId());
if(StringUtils.isNotBlank(getParentTenantId())){
setFinalTenantId(getParentTenantId());
}
}

public void undateFinalTenantId(TenantEntity tenantEntity){
setFinalTenantId(tenantEntity.getTenantId());
if(StringUtils.isNotBlank(tenantEntity.getParentTenantId())){
setFinalTenantId(tenantEntity.getParentTenantId());
}
}

}

+ 8
- 0
mallinkService/src/main/java/com/iformall/domain/po/base/TenantEntity.java Просмотреть файл

@@ -32,4 +32,12 @@ public class TenantEntity extends BaseEntity {
setParentTenantId(info.getParentTenantId());
}
}

public void updateFinalTenantInfo(TenantEntity info){
if (StringUtils.isNotBlank(info.getParentTenantId())) {
setParentTenantId(info.getParentTenantId());
}else{
setTenantId(info.getTenantId());
}
}
}

+ 3
- 0
mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java Просмотреть файл

@@ -19,6 +19,9 @@ public interface WxCUserBasicInfoMapper extends CommonMapper<WxCUserBasicInfo, S

void updateScore(WxCUserBasicInfo record);

void updateUpScore(WxCUserBasicInfo record);
void updateDownScore(WxCUserBasicInfo record);

void updateNewId(CUserBaseVo record);

long findCountBySex(WxCUserBasicInfoDto dto);


+ 2
- 0
mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java Просмотреть файл

@@ -27,4 +27,6 @@ public interface WxCUserMapper extends CommonMapper<WxCUser, Long> {
long countByChannel(WxCUser wxCUser);

List<Map<String, Object>> checkCountByTenantOpenId();

void updateUserId(WxCUser user);
}

+ 3
- 1
mallinkService/src/main/java/com/iformall/service/WxCUserService.java Просмотреть файл

@@ -136,5 +136,7 @@ public interface WxCUserService {
* @param enumScoreType
* @return
*/
WxCreditHistory addCredit(WxCUser wxCUser, EnumScoreType enumScoreType);
int addCredit(WxCUser wxCUser, EnumScoreType enumScoreType);

void updateUserId(WxCUser user);
}

+ 13
- 5
mallinkService/src/main/java/com/iformall/service/impl/MemCouponFromDspServiceImpl.java Просмотреть файл

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.domain.po.MemCouponFromDsp;
import com.iformall.domain.po.WxCUser;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxCoupon;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumCouponDspStatus;
@@ -12,6 +13,7 @@ import com.iformall.enums.EnumUserType;
import com.iformall.mapper.MemCouponFromDspMapper;
import com.iformall.mapper.WxCouponMapper;
import com.iformall.service.MemCouponFromDspService;
import com.iformall.service.WxCUserBasicInfoService;
import com.iformall.service.WxCUserService;
import com.iformall.service.WxOrderService;
import org.slf4j.Logger;
@@ -37,6 +39,8 @@ public class MemCouponFromDspServiceImpl implements MemCouponFromDspService {
private WxOrderService wxOrderService;
@Autowired
private WxCUserService wxCUserService;
@Autowired
private WxCUserBasicInfoService wxCUserBasicInfoService;


@Override
@@ -81,11 +85,15 @@ public class MemCouponFromDspServiceImpl implements MemCouponFromDspService {

@Override
public Integer couponOrder(MemCouponFromDsp record) {
// 获取C端用户
WxCUser user = wxCUserService.getByObject(new WxCUser() {{
updateTenantInfo(record);
setPhone(record.getPhone());
}});

WxCUserBasicInfo user = wxCUserBasicInfoService.findInfoByPhone(record, record.getPhone());


// // 获取C端用户
// WxCUser user = wxCUserService.getByObject(new WxCUser() {{
// updateTenantInfo(record);
// setPhone(record.getPhone());
// }});
if (user == null) {
return -1;
}


+ 30
- 32
mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java Просмотреть файл

@@ -568,12 +568,10 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService {
public WxCUserBasicInfo findInfoByPhone(TenantEntity tenantEntity, String phone) {
WxCUserBasicInfo basic = null;
WxCUserBasicInfo basicQ = new WxCUserBasicInfo();
basicQ.updateTenantInfo(tenantEntity);
basicQ.undateFinalTenantId(tenantEntity);
basicQ.setPhone(phone);
List<WxCUserBasicInfo> basicInfos = wxCUserBasicInfoMapper.selectList(new QueryWrapper(basicQ));
if (basicInfos.size() > 0) {
return basicInfos.get(0);
}

basic = wxCUserBasicInfoMapper.selectOne(new QueryWrapper(basicQ));
return basic;
}

@@ -600,33 +598,33 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService {
@Override
public void updateObj(WxCUserBasicInfo record, WxCUser user) {
// 1. update c_user_tags
CUserTagNewIdVo userTagVo = new CUserTagNewIdVo();
userTagVo.updateTenantInfo(record);
userTagVo.setUserId(record.getId());
userTagVo.setNewUserId(user.getId());
wxCUserTagsMapper.updateNewId(userTagVo);
// 2. update score history
WxScoreHistoryNewIdVo scoreHistoryNewIdVo = new WxScoreHistoryNewIdVo();
scoreHistoryNewIdVo.updateTenantInfo(record);
scoreHistoryNewIdVo.setCUserId(record.getId());
scoreHistoryNewIdVo.setNewUserId(user.getId());
scoreHistoryMapper.updateNewId(scoreHistoryNewIdVo);
// 3. update credit history
WxCreditHistoryNewIdVo creditHistoryNewIdVo = new WxCreditHistoryNewIdVo();
creditHistoryNewIdVo.updateTenantInfo(record);
creditHistoryNewIdVo.setCUserId(record.getId());
creditHistoryNewIdVo.setNewUserId(user.getId());
creditHistoryMapper.updateNewId(creditHistoryNewIdVo);
// 10. base info
CUserBaseVo userBaseVo = new CUserBaseVo();
org.springframework.beans.BeanUtils.copyProperties(record, userBaseVo);
userBaseVo.setNewId(user.getId());
//userBaseVo.setCredit(user.getCredit());
userBaseVo.setPoins(user.getScore());
wxCUserBasicInfoMapper.updateNewId(userBaseVo);
// CUserTagNewIdVo userTagVo = new CUserTagNewIdVo();
// userTagVo.updateTenantInfo(record);
// userTagVo.setUserId(record.getId());
// userTagVo.setNewUserId(user.getId());
// wxCUserTagsMapper.updateNewId(userTagVo);
//
// // 2. update score history
// WxScoreHistoryNewIdVo scoreHistoryNewIdVo = new WxScoreHistoryNewIdVo();
// scoreHistoryNewIdVo.updateTenantInfo(record);
// scoreHistoryNewIdVo.setCUserId(record.getId());
// scoreHistoryNewIdVo.setNewUserId(user.getId());
// scoreHistoryMapper.updateNewId(scoreHistoryNewIdVo);
//
// // 3. update credit history
// WxCreditHistoryNewIdVo creditHistoryNewIdVo = new WxCreditHistoryNewIdVo();
// creditHistoryNewIdVo.updateTenantInfo(record);
// creditHistoryNewIdVo.setCUserId(record.getId());
// creditHistoryNewIdVo.setNewUserId(user.getId());
// creditHistoryMapper.updateNewId(creditHistoryNewIdVo);
//
// // 10. base info
// CUserBaseVo userBaseVo = new CUserBaseVo();
// org.springframework.beans.BeanUtils.copyProperties(record, userBaseVo);
// userBaseVo.setNewId(user.getId());
// //userBaseVo.setCredit(user.getCredit());
// userBaseVo.setPoins(user.getScore());
// wxCUserBasicInfoMapper.updateNewId(userBaseVo);
}

@Override


+ 15
- 9
mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java Просмотреть файл

@@ -247,9 +247,7 @@ public class WxCUserServiceImpl implements WxCUserService {
}
// 积分
try {
WxCreditHistory wxCreditHistory = addCredit(user, EnumScoreType.LOGIN);
logger.info("wxCreditHistory_id" + wxCreditHistory.getId());
credit = wxCreditHistory.getCreditNum() == null ? 0 : wxCreditHistory.getCreditNum();
credit = addCredit(user, EnumScoreType.LOGIN);
logger.info("user_id:" + user.getId() + " 登录新增积分:" + credit);
} catch (MallinkException e) {
logger.error("c_user 积分 " + e.getMessage());
@@ -259,8 +257,8 @@ public class WxCUserServiceImpl implements WxCUserService {
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_LOGIN, user);

// 用户登陆后 更新最后一次活跃时间
if (user.getId() != null) {
WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(user.getId());
if (user.getUserId() != null) {
WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(user.getUserId());
if (wxCUserBasicInfo != null) {
WxCUserBasicInfo basicInfo = new WxCUserBasicInfo();
basicInfo.setId(user.getId());
@@ -297,18 +295,26 @@ public class WxCUserServiceImpl implements WxCUserService {
}

@Override
public WxCreditHistory addCredit(WxCUser user, EnumScoreType enumScoreType) {
public int addCredit(WxCUser user, EnumScoreType enumScoreType) {
if(user.getUserId() == null){
return 0;
}
WxCreditHistory wxCreditHistory = new WxCreditHistory();
wxCreditHistory.setCUserId(user.getId());
wxCreditHistory.setCUserId(user.getUserId());
wxCreditHistory.updateTenantInfo(user);
wxCreditHistory.setCreateDate(new Date());
wxCreditHistory.setCreditType(enumScoreType.getCode());
wxCreditHistory.setOperatorType(EnumUserType.CUSER.getCode());
wxCreditHistory.setOperatorId(user.getId());
wxCreditHistory.setOperatorId(user.getUserId());
wxCreditHistory.setCreditNum(user.getCredit());
wxCreditHistory.setCreditAmount(user.getCredit());
WxCreditHistory record = wxCreditHistoryService.saveOrUpdate(wxCreditHistory);
user.setCredit(record.getCreditAmount());
return record;
return record.getCreditAmount();
}

@Override
public void updateUserId(WxCUser user) {
wxCUserMapper.updateUserId(user);
}
}

+ 3
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java Просмотреть файл

@@ -646,7 +646,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService {
break;
case ASSIGN_TAGS_TRIGGER_PHONE: {
WxCUser param = (WxCUser) obj;
WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getId());
WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getUserId());
if (user != null) {
if (param.getPhone() != null) {
//来源
@@ -659,7 +659,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService {
break;
case ASSIGN_TAGS_TRIGGER_BUY:{
WxCUser param = (WxCUser) obj;
WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getId());
WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getUserId());
if (user != null) {
//消费类别
resList = assignTypeId14(user, param);
@@ -677,7 +677,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService {

case ASSIGN_TAGS_TRIGGER_LOGIN: {
WxCUser param = (WxCUser) obj;
WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getId());
WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getUserId());
if (user != null) {
if (param.getGender() != null) {
//性别


+ 12
- 14
mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java Просмотреть файл

@@ -199,9 +199,9 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public WxCreditHistory saveOrUpdate(WxCreditHistory record) {
WxCUser wxCUser = wxCUserMapper.selectById(record.getCUserId());
//WxCUser wxCUser = wxCUserMapper.selectById(record.getCUserId());
WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectById(record.getCUserId());
if (wxCUser == null && wxCUserBasicInfo == null) {
if (wxCUserBasicInfo == null) {
//验证此用户是否存在
throw new MallinkException(ErrorCode.USER_NOT_AUTH_PHONE);
}
@@ -214,9 +214,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
}
int currentCreditAmount = 0;
//获取当前用户总积分规则:优先获取wxCUser中数据 若不存在 再获取wxCUserBasicInfo表中数据
if (wxCUser != null && wxCUser.getCredit() != null && wxCUser.getCredit() > 0) {
currentCreditAmount = wxCUser.getCredit();
} else if (wxCUserBasicInfo != null && wxCUserBasicInfo.getCredit() != null && wxCUserBasicInfo.getCredit() > 0) {
if (wxCUserBasicInfo != null && wxCUserBasicInfo.getCredit() != null && wxCUserBasicInfo.getCredit() > 0) {
currentCreditAmount = wxCUserBasicInfo.getCredit();
}
if (record.getCreditAmount() == null) {
@@ -230,7 +228,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
if (record.getCreditType().equals(EnumScoreType.CONSUMPTION.getCode()) || record.getCreditType().equals(EnumScoreType.SPEND_CREDIT.getCode())) {
//等级积分配置
try {
creditChangeNum = CreditUtil.calUserCredit(creditChangeNumOrigin, wxCUser, wxCUserBasicInfo, wxScoreRulesService,wxLevelConfigMapper);
creditChangeNum = CreditUtil.calUserCredit(creditChangeNumOrigin, null, wxCUserBasicInfo, wxScoreRulesService,wxLevelConfigMapper);
if (Objects.nonNull(CreditUtil.getIsBirthDayScale())) {
hasBirthDateCredit = true;
}
@@ -260,12 +258,12 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
record.setCreateDate(new Date());
wxCreditHistoryMapper.insert(record);
//将计算出来新的总积分 更新到两张用户表里
if (wxCUser != null) {
WxCUser wxCUserNew = new WxCUser();
wxCUserNew.setId(wxCUser.getId());
wxCUserNew.setCredit(record.getCreditAmount());
wxCUserMapper.updateById(wxCUserNew);
}
// if (wxCUser != null) {
// WxCUser wxCUserNew = new WxCUser();
// wxCUserNew.setId(wxCUser.getId());
// wxCUserNew.setCredit(record.getCreditAmount());
// wxCUserMapper.updateById(wxCUserNew);
// }
if (wxCUserBasicInfo != null) {
WxCUserBasicInfo wxCUserBasicInfoNew = new WxCUserBasicInfo();
wxCUserBasicInfoNew.setId(wxCUserBasicInfo.getId());
@@ -344,9 +342,9 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
wxCreditHistory.setSpend(new BigDecimal(spendStr).multiply(new BigDecimal(100)).intValue());
credit = payAddCredit(wxCreditHistory);
if (Objects.nonNull(userId)) {
WxCUser wxCUser = wxCUserMapper.selectById(userId);
//WxCUser wxCUser = wxCUserMapper.selectById(userId);
WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectById(userId);
creditNew = CreditUtil.calUserCredit(credit, wxCUser, wxCUserBasicInfo, wxScoreRulesService,wxLevelConfigMapper);
creditNew = CreditUtil.calUserCredit(credit, null, wxCUserBasicInfo, wxScoreRulesService,wxLevelConfigMapper);
} else {
creditNew = credit;
}


+ 71
- 57
mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java Просмотреть файл

@@ -15,6 +15,7 @@ import com.iformall.mapper.*;
import com.iformall.service.WxCUserService;
import com.iformall.service.WxScoreRulesService;
import com.iformall.utils.Constant;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -104,8 +105,14 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {

@Override
public WxScoreRules getScoreRules(TenantEntity tenantEntity) {
String tenantId = "";
if(StringUtils.isNotBlank(tenantEntity.getParentTenantId())){
tenantId = tenantEntity.getParentTenantId();
}else{
tenantId = tenantEntity.getTenantId();
}
// get pushLime from cache
String key = Constant.SCORE_RULES_KEY_PREV + tenantEntity.getTenantId();
String key = Constant.SCORE_RULES_KEY_PREV + tenantId;

// 缓存存在
if (scoreRulesRedisTemplate.hasKey(key)) {
@@ -115,7 +122,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
}

WxScoreRules scoreRules = new WxScoreRules();
scoreRules.updateTenantInfo(tenantEntity);
scoreRules.setTenantId(tenantId);
scoreRules.setType(EnumScoreRules.SCORE.getCode());
List<WxScoreRules> list = wxScoreRulesMapper.findList(scoreRules);
if (list.size() > 0) {
@@ -180,8 +187,14 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {

@Override
public WxScoreRules getCreditRules(TenantEntity tenantEntity) {
String tenantId = "";
if(StringUtils.isNotBlank(tenantEntity.getParentTenantId())){
tenantId = tenantEntity.getParentTenantId();
}else{
tenantId = tenantEntity.getTenantId();
}
// get pushLime from cache
String key = Constant.CREDIT_RULES_KEY_PREV + tenantEntity.getTenantId();
String key = Constant.CREDIT_RULES_KEY_PREV + tenantId;

// 缓存存在
if (scoreRulesRedisTemplate.hasKey(key)) {
@@ -191,7 +204,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
}

WxScoreRules scoreRules = new WxScoreRules();
scoreRules.updateTenantInfo(tenantEntity);
scoreRules.setTenantId(tenantId);
scoreRules.setType(EnumScoreRules.CREDIT.getCode());
List<WxScoreRules> list = wxScoreRulesMapper.findList(scoreRules);
if (list.size() > 0) {
@@ -290,33 +303,33 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
}

private void updateScore(Long userId, int addedScoreNumber) {
// 1. 获取cUser
WxCUser wxCUser = wxCUserService.getById(userId);
if (wxCUser.getScore() == null) {
wxCUser.setScore(0);
WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectById(userId);
if (wxCUserBasicInfo.getPoins() == null) {
wxCUserBasicInfo.setPoins(0);
}
int newScore = wxCUserBasicInfo.getPoins() + addedScoreNumber;
wxCUserBasicInfo.setPoins(newScore);
wxCUserBasicInfoMapper.updateScore(wxCUserBasicInfo);

int newScore = wxCUser.getScore() + addedScoreNumber;

// 2. update score
wxCUser.setScore(newScore);
wxCUserService.saveOrUpdate(wxCUser);
// // 1. 获取cUser
// WxCUser wxCUser = wxCUserService.getById(userId);
// if (wxCUser.getScore() == null) {
// wxCUser.setScore(0);
// }
//
// int newScore = wxCUser.getScore() + addedScoreNumber;
//
// // 2. update score
// wxCUser.setScore(newScore);
// wxCUserService.saveOrUpdate(wxCUser);


// 3. 修改basic points
if (wxCUser.getPhone() != null) {
//修改basic表积分
WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo();
wxCUserBasicInfo.setId(wxCUser.getId());
wxCUserBasicInfo.updateTenantInfo(wxCUser);
wxCUserBasicInfo.setPhone(wxCUser.getPhone());
wxCUserBasicInfo.setPoins(newScore);
wxCUserBasicInfoMapper.updateScore(wxCUserBasicInfo);
}
}



private void resetBasicUserScore(Long userId, int scoreNumber) {
/*private void resetBasicUserScore(Long userId, int scoreNumber) {
// 1. basicUser
WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(userId);
if(user == null) {
@@ -339,7 +352,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
wxCUserService.saveOrUpdate(wxCUser);
}
}
}
}*/

private void resetBasicUserScore(WxCUserBasicInfo user, boolean bHaveCUser) {
// 1. basicUser
@@ -360,15 +373,15 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
}
}

private int checkTodayLoginScoreCount(WxCUser cUser) {
private int checkTodayLoginScoreCount(WxCUserBasicInfo cUser) {
WxScoreHistory scoreHistory = new WxScoreHistory();
scoreHistory.updateTenantInfo(cUser);
scoreHistory.updateFinalTenantInfo(cUser);
scoreHistory.setCUserId(cUser.getId());
scoreHistory.setScoreType(EnumScoreType.LOGIN.getCode());
return wxScoreHistoryMapper.countTodayList(scoreHistory);
}

private int loginAddScore(WxCUser user) {
private int loginAddScore(WxCUserBasicInfo user) {
int addScoreNumber = 0;

if (checkTodayLoginScoreCount(user) > 0)
@@ -380,7 +393,6 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
// 2. 增长的成长值
addScoreNumber = scoreRules.getRule(EnumScoreType.LOGIN,WxScoreRules.SCORE);
updateScore(user.getId(), addScoreNumber);
user.setScore(addScoreNumber);

// 3. 记录历史
recordScoreHistory(addScoreNumber, user, user.getId(), EnumScoreType.LOGIN);
@@ -447,23 +459,23 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
}


private int bindCarAddScore(WxCUserCar userCar) {
private int bindCarAddScore(WxCUserBasicInfo user) {
int addScoreNumber = 0;
// 1. 获取score rules
WxScoreRules scoreRules = getScoreRules(userCar);
WxScoreRules scoreRules = getScoreRules(user);

// 2. 获取成长值
addScoreNumber = scoreRules.getRule(EnumScoreType.BIND_CAR,WxScoreRules.SCORE);

// 3. 增长的成长值
updateScore(userCar.getCUserId(), addScoreNumber);
updateScore(user.getId(), addScoreNumber);

// 4. 记录历史
recordScoreHistory(addScoreNumber, userCar, userCar.getCUserId(), EnumScoreType.BIND_CAR);
recordScoreHistory(addScoreNumber, user, user.getId(), EnumScoreType.BIND_CAR);
return addScoreNumber;
}

private int personAddScore(WxCUser user) {
private int personAddScore(WxCUserBasicInfo user) {
int addScoreNumber = 0;
// 1. 获取score rules
WxScoreRules scoreRules = getScoreRules(user);
@@ -479,7 +491,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
return addScoreNumber;
}

private int phoneAddScore(WxCUser user) {
private int phoneAddScore(WxCUserBasicInfo user) {
int addScoreNumber = 0;
// 1. 获取score rules
WxScoreRules scoreRules = getScoreRules(user);
@@ -495,19 +507,17 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
return addScoreNumber;
}

private int checkCompleteInfoScoreCount(WxCUser cUser) {
private int checkCompleteInfoScoreCount(WxCUserBasicInfo user) {
WxScoreHistory scoreHistory = new WxScoreHistory();
scoreHistory.updateTenantInfo(cUser);
scoreHistory.setCUserId(cUser.getId());
scoreHistory.updateFinalTenantInfo(user);
scoreHistory.setCUserId(user.getId());
scoreHistory.setScoreType(EnumScoreType.COMPLETE_INFO.getCode());
return wxScoreHistoryMapper.countList(scoreHistory);
}

private int infoAddScore(WxCUserBasicInfo userInfo) {
private int infoAddScore(WxCUserBasicInfo user) {
int addScoreNumber = 0;
WxCUser user = wxCUserService.getById(userInfo.getId());

if (user == null || checkCompleteInfoScoreCount(user) > 0)
if (checkCompleteInfoScoreCount(user) > 0)
return 0;

// 1. 获取score rules
@@ -538,18 +548,18 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
int score = userInfo.getPoins() - scoreNum;

// 1. update score/ 修改basic表积分
userInfo.setPoins(score);
wxCUserBasicInfoMapper.updateScore(userInfo);
userInfo.setPoins(scoreNum);
wxCUserBasicInfoMapper.updateDownScore(userInfo);

// 2. 修改 c_user表积分 score
if (userInfo.getPhone() != null) {
WxCUser wxCUser = new WxCUser();
wxCUser.setId(userInfo.getId());
wxCUser.updateTenantInfo(userInfo);
wxCUser.setPhone(userInfo.getPhone());
wxCUser.setScore(score);
wxCUserService.saveOrUpdate(wxCUser);;
}
// if (userInfo.getPhone() != null) {
// WxCUser wxCUser = new WxCUser();
// wxCUser.setId(userInfo.getId());
// wxCUser.updateTenantInfo(userInfo);
// wxCUser.setPhone(userInfo.getPhone());
// wxCUser.setScore(score);
// wxCUserService.saveOrUpdate(wxCUser);;
// }

// 2. 记录历史
recordReduceScoreHistory(scoreNum, reason, userInfo, userInfo.getId(), EnumScoreType.MEM_REDUCE);
@@ -618,7 +628,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
Long userId = null;
if (param instanceof WxCUser) {
wxCUser = (WxCUser) param;
userId = wxCUser.getId();
userId = wxCUser.getUserId();
}
if (param instanceof WxCUserCar) {
userCar = (WxCUserCar) param;
@@ -628,6 +638,10 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
userBasicInfo = (WxCUserBasicInfo) param;
userId = userBasicInfo.getId();
}
if(userId == null){
logger.info("暂未成为会员:cUserId" + userId);
return 0;
}
WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectById(userId);
if (wxCUserBasicInfo != null && wxCUserBasicInfo.getStatus().equals(EnumCUserBasicInfoStatus.LOCKED.getCode())) {
logger.info("会员权益被锁定:cUserId:" + userId);
@@ -635,19 +649,19 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
}
switch (scoreType){
case LOGIN: {
return loginAddScore(wxCUser);
return loginAddScore(wxCUserBasicInfo);
}
case BIND_CAR:{
return bindCarAddScore(userCar);
return bindCarAddScore(wxCUserBasicInfo);
}
case WECHAT_PERSION:{
return personAddScore(wxCUser);
return personAddScore(wxCUserBasicInfo);
}
case WECHAT_PHONE:{
return phoneAddScore(wxCUser);
return phoneAddScore(wxCUserBasicInfo);
}
case COMPLETE_INFO:{
return infoAddScore(userBasicInfo);
return infoAddScore(wxCUserBasicInfo);
}

default: {


+ 9
- 2
mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml Просмотреть файл

@@ -140,8 +140,15 @@

<update id="updateScore" parameterType="com.iformall.domain.po.WxCUserBasicInfo">
update wx_c_user_basic_info set poins=#{poins}
where phone=#{phone}
and id=#{id}
where id=#{id}
</update>
<update id="updateUpScore" parameterType="com.iformall.domain.po.WxCUserBasicInfo">
update wx_c_user_basic_info set poins=poins+#{poins}
where id=#{id}
</update>
<update id="updateDownScore" parameterType="com.iformall.domain.po.WxCUserBasicInfo">
update wx_c_user_basic_info set poins=poins-#{poins}
where id=#{id}
</update>

<update id="updateNewId" parameterType="com.iformall.domain.vo.CUserBaseVo">


+ 6
- 0
mallinkService/src/main/resources/mapper/WxCUserMapper.xml Просмотреть файл

@@ -365,4 +365,10 @@
select * from (select tenant_id, open_id, count(tenant_id+open_id) as u_count from wx_c_user group by tenant_id, open_id) t where t.u_count >= 2
</select>


<update id="updateUserId" parameterType="com.iformall.domain.po.WxCUser">
update wx_c_user set user_id=#{userId}
where id = #{id}
</update>

</mapper>

+ 8
- 6
mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml Просмотреть файл

@@ -179,12 +179,14 @@
<select id="loginCount" parameterType="com.iformall.domain.po.WxCreditHistory" resultType="java.lang.Integer">
select COUNT(0) from wx_credit_history
where 1=1
<if test=" null != tenantId and '' != tenantId">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and `parent_tenant_id` = #{parentTenantId}
</if>
<choose>
<when test=" null != parentTenantId and '' != parentTenantId">
and `parent_tenant_id` = #{parentTenantId}
</when>
<otherwise>
and `tenant_id` = #{tenantId}
</otherwise>
</choose>
<if test=" null != cUserId ">
and `c_user_id` = #{cUserId}
</if>


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