diff --git a/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java b/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java index ec1ca568a..3fb0474dc 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java @@ -148,39 +148,55 @@ public class BaseController { if (StringUtils.isBlank(phone)) return; - List 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 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); } } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index bc6557de3..83c7e7db4 100755 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/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 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 levelMerchantList = wxLevelConfigService.findListCVo(levelMerchant); Map 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); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java index b7aa7055b..2123c225f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java +++ b/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()); + } + } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/base/TenantEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/base/TenantEntity.java index 2b93e8a36..3840d552e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/base/TenantEntity.java +++ b/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()); + } + } } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java index 7d4910979..55800c4b6 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java @@ -19,6 +19,9 @@ public interface WxCUserBasicInfoMapper extends CommonMapper { long countByChannel(WxCUser wxCUser); List> checkCountByTenantOpenId(); + + void updateUserId(WxCUser user); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserService.java index 607aab594..a03887bb6 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserService.java +++ b/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); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MemCouponFromDspServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MemCouponFromDspServiceImpl.java index bdd1371eb..c1f40065c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MemCouponFromDspServiceImpl.java +++ b/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; } 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 9fc729a40..178958632 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/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 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 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java index a880aa329..e25c2f5e0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java +++ b/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); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java index e10af9a23..2478b08db 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java +++ b/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) { //性别 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 633ec5678..2dccb7aeb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/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; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java index 71d5cae38..54d44f0fb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java +++ b/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 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 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: { diff --git a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml index f83f58412..c642b7bb3 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml @@ -140,8 +140,15 @@ update wx_c_user_basic_info set poins=#{poins} - where phone=#{phone} - and id=#{id} + where id=#{id} + + + update wx_c_user_basic_info set poins=poins+#{poins} + where id=#{id} + + + update wx_c_user_basic_info set poins=poins-#{poins} + where id=#{id} diff --git a/mallinkService/src/main/resources/mapper/WxCUserMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserMapper.xml index 39bdf87dd..1dc7250a3 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserMapper.xml +++ b/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 + + + update wx_c_user set user_id=#{userId} + where id = #{id} + + diff --git a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml index 3ec5cb34d..db9d2a0c5 100644 --- a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml @@ -179,12 +179,14 @@