| @@ -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); | |||
| } | |||
| } | |||
| @@ -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); | |||
| @@ -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()); | |||
| } | |||
| } | |||
| } | |||
| @@ -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()); | |||
| } | |||
| } | |||
| } | |||
| @@ -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); | |||
| @@ -27,4 +27,6 @@ public interface WxCUserMapper extends CommonMapper<WxCUser, Long> { | |||
| long countByChannel(WxCUser wxCUser); | |||
| List<Map<String, Object>> checkCountByTenantOpenId(); | |||
| void updateUserId(WxCUser user); | |||
| } | |||
| @@ -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); | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -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 | |||
| @@ -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); | |||
| } | |||
| } | |||
| @@ -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) { | |||
| //性别 | |||
| @@ -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; | |||
| } | |||
| @@ -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: { | |||
| @@ -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"> | |||
| @@ -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> | |||
| @@ -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> | |||