| | |
| | | import cc.mrbird.febs.vip.VipSettingUnAliveSettingBo; |
| | | import cc.mrbird.febs.vip.entity.MallVipConfig; |
| | | import cc.mrbird.febs.vip.mapper.MallVipConfigMapper; |
| | | import cc.mrbird.febs.yinhe.entity.YHAiCompany; |
| | | import cc.mrbird.febs.yinhe.entity.YhAiMember; |
| | | import cc.mrbird.febs.yinhe.mapper.YHAiCompanyMapper; |
| | | import cc.mrbird.febs.yinhe.mapper.YhAiMemberMapper; |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | |
| | | |
| | | |
| | | private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class); |
| | | private final YhAiMemberMapper yhAiMemberMapper; |
| | | private final YHAiCompanyMapper yhAiCompanyMapper; |
| | | |
| | | @Override |
| | | public FebsResponse xcxLogin(ApiXcxLoginDto apiXcxLoginDto) throws IOException { |
| | |
| | | String sessionKey = json.getString("session_key"); |
| | | log.info("openId={},sessionKey={}", openId, sessionKey); |
| | | // 查询用户是否存在 |
| | | MallMember mallMember = null; |
| | | YhAiMember entity = null; |
| | | synchronized (this) { |
| | | mallMember = this.baseMapper.selectMemberByOpenId(openId); |
| | | if (ObjectUtil.isEmpty(mallMember)) { |
| | | Date systemTime = new Date(); |
| | | entity = yhAiMemberMapper.selectOne( |
| | | Wrappers.lambdaQuery(YhAiMember.class) |
| | | .eq(YhAiMember::getOpenId, openId) |
| | | ); |
| | | if (ObjectUtil.isEmpty(entity)) { |
| | | // 新增用户 |
| | | mallMember = new MallMember(); |
| | | mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); |
| | | mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL); |
| | | mallMember.setOpenId(openId); |
| | | mallMember.setSessionKey(sessionKey); |
| | | mallMember.setTradePassword(SecureUtil.md5("123456")); |
| | | entity = new YhAiMember(); |
| | | entity.setOpenId(openId); |
| | | entity.setSessionKey(sessionKey); |
| | | |
| | | if (StrUtil.isNotBlank(apiXcxLoginDto.getInviteId())) { |
| | | MallMember member = this.baseMapper.selectInfoByInviteId(apiXcxLoginDto.getInviteId()); |
| | | if (member != null) { |
| | | mallMember.setReferrerId(member.getInviteId()); |
| | | |
| | | //推荐人和推荐人链 |
| | | boolean flag = false; |
| | | String parentId = mallMember.getReferrerId(); |
| | | if (StrUtil.isBlank(parentId)) { |
| | | flag = true; |
| | | } |
| | | String ids = ""; |
| | | while (!flag) { |
| | | if (StrUtil.isBlank(ids)) { |
| | | ids += parentId; |
| | | } else { |
| | | ids += ("," + parentId); |
| | | } |
| | | MallMember parentMember = this.baseMapper.selectInfoByInviteId(parentId); |
| | | if (parentMember == null) { |
| | | break; |
| | | } |
| | | parentId = parentMember.getReferrerId(); |
| | | if (StrUtil.isBlank(parentMember.getReferrerId())) { |
| | | flag = true; |
| | | } |
| | | } |
| | | |
| | | if (StrUtil.isNotBlank(ids)) { |
| | | mallMember.setReferrerIds(ids); |
| | | } |
| | | } |
| | | } |
| | | this.baseMapper.insert(mallMember); |
| | | |
| | | AiMember aiMember = new AiMember(); |
| | | aiMember.setId(UUID.getSimpleUUIDString()); |
| | | entity.setMemberUuid(UUID.getSimpleUUIDString()); |
| | | if (StrUtil.isNotEmpty(apiXcxLoginDto.getCompanyId())){ |
| | | AiCompany aiCompany = aiCompanyMapper.selectOne( |
| | | Wrappers.lambdaQuery(AiCompany.class) |
| | | .eq(AiCompany::getCode, apiXcxLoginDto.getCompanyId()) |
| | | .last("limit 1") |
| | | YHAiCompany aiCompany = yhAiCompanyMapper.selectOne( |
| | | Wrappers.lambdaQuery(YHAiCompany.class) |
| | | .eq(YHAiCompany::getCode, apiXcxLoginDto.getCompanyId()) |
| | | ); |
| | | if (ObjectUtil.isNotEmpty(aiCompany)){ |
| | | aiMember.setCompanyId(aiCompany.getId()); |
| | | entity.setCompanyId(aiCompany.getId()); |
| | | } |
| | | } |
| | | aiMember.setCreatedTime(new Date()); |
| | | aiMemberMapper.insert(aiMember); |
| | | entity.setCreateTime(systemTime); |
| | | entity.setUpdateTime(systemTime); |
| | | entity.setLastLoginTime(systemTime); |
| | | yhAiMemberMapper.insert(entity); |
| | | |
| | | mallMember = this.baseMapper.selectMemberByOpenId(openId); |
| | | String inviteId = ShareCodeUtil.toSerialCode(mallMember.getId()); |
| | | mallMember.setMemberUuid(aiMember.getId()); |
| | | if (StrUtil.isNotEmpty(aiMember.getCompanyId())){ |
| | | mallMember.setCompanyId(aiMember.getCompanyId()); |
| | | } |
| | | mallMember.setInviteId(inviteId); |
| | | mallMember.setName("新用户"+inviteId); |
| | | this.baseMapper.updateById(mallMember); |
| | | MallMemberWallet wallet = new MallMemberWallet(); |
| | | wallet.setBalance(BigDecimal.ZERO); |
| | | wallet.setMemberId(mallMember.getId()); |
| | | mallMemberWalletMapper.insert(wallet); |
| | | |
| | | //分销员的邀请码赠送优惠卷 |
| | | if (StrUtil.isNotBlank(apiXcxLoginDto.getInviteId())) { |
| | | String couponUUID = IdUtil.simpleUUID(); |
| | | //通过邀请人信息,获取能领取的优惠卷信息 |
| | | MallMember refMember = this.baseMapper.selectInfoByInviteId(apiXcxLoginDto.getInviteId()); |
| | | if(ObjectUtil.isNotEmpty(refMember)){ |
| | | SalemanCoupon salemanCoupon = salemanCouponMapper.selectByMemberId(refMember.getId()); |
| | | if(ObjectUtil.isNotEmpty(salemanCoupon)){ |
| | | Long couponId = salemanCoupon.getCouponId(); |
| | | List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdCouponIdWithOutInviteId(mallMember.getId(), couponId); |
| | | if(CollUtil.isEmpty(mallMemberCoupons)){ |
| | | //商品优惠卷如果绑定了,那么当前登陆者获取一张卷 |
| | | MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId); |
| | | MallMemberCoupon mallMemberCoupon = new MallMemberCoupon(); |
| | | mallMemberCoupon.setCouponId(couponId); |
| | | mallMemberCoupon.setCouponName(mallGoodsCoupon.getName()); |
| | | mallMemberCoupon.setMemberId(mallMember.getId()); |
| | | mallMemberCoupon.setCouponUuid(couponUUID); |
| | | mallMemberCoupon.setInviteId(refMember.getInviteId()); |
| | | mallMemberCoupon.setState(1); |
| | | mallMemberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(),mallGoodsCoupon.getExpireDay())); |
| | | mallMemberCouponMapper.insert(mallMemberCoupon); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | entity = yhAiMemberMapper.selectOne( |
| | | Wrappers.lambdaQuery(YhAiMember.class) |
| | | .eq(YhAiMember::getOpenId, openId) |
| | | ); |
| | | String inviteId = ShareCodeUtil.toSerialCode(entity.getId()); |
| | | entity.setInviteId(inviteId); |
| | | entity.setName("XCX"+inviteId); |
| | | yhAiMemberMapper.updateById(entity); |
| | | } else { |
| | | if (MallMember.ACCOUNT_STATUS_DISABLED.equals(mallMember.getAccountStatus())) { |
| | | if ("1".equals(entity.getAccountStatus())) { |
| | | throw new FebsException("账号已停用"); |
| | | } |
| | | mallMember.setSessionKey(sessionKey); |
| | | this.baseMapper.updateById(mallMember); |
| | | entity.setSessionKey(sessionKey); |
| | | entity.setLastLoginTime(systemTime); |
| | | yhAiMemberMapper.updateById(entity); |
| | | } |
| | | } |
| | | // 存放redis |
| | | String redisKey = AppContants.XCX_LOGIN_PREFIX + mallMember.getId(); |
| | | String redisKey = AppContants.XCX_LOGIN_PREFIX + entity.getMemberUuid(); |
| | | String existToken = redisUtils.getString(redisKey); |
| | | if (StrUtil.isNotBlank(existToken)) { |
| | | Object o = redisUtils.get(existToken); |
| | |
| | | } |
| | | } |
| | | String token = IdUtil.simpleUUID(); |
| | | redisUtils.set(token, JSONObject.toJSONString(mallMember), -1); |
| | | redisUtils.set(token, JSONObject.toJSONString(entity), -1); |
| | | redisUtils.set(redisKey, token, -1); |
| | | Map<String, Object> authInfo = new HashMap<>(); |
| | | authInfo.put("token", token); |
| | | authInfo.put("appid", xcxProperties.getXcxAppid()); |
| | | authInfo.put("member", mallMember); |
| | | authInfo.put("member", entity); |
| | | authInfo.put("rasToken", generateAsaToken(token)); |
| | | febsResponse.success().data(authInfo); |
| | | } else { |
| | |
| | | public FebsResponse xcxSaveInfo(ApiXcxSaveInfoDto apiXcxSaveInfoDto) { |
| | | log.info("name={},phone={},avatar={},sex={}", |
| | | apiXcxSaveInfoDto.getNickName(),apiXcxSaveInfoDto.getPhone(),apiXcxSaveInfoDto.getAvatarUrl(),apiXcxSaveInfoDto.getGender()); |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | MallMember mallMember = this.baseMapper.selectById(memberId); |
| | | String memberId = LoginUserUtil.getLoginUser().getMemberUuid(); |
| | | YhAiMember entity = yhAiMemberMapper.selectOne( |
| | | Wrappers.lambdaQuery(YhAiMember.class) |
| | | .eq(YhAiMember::getMemberUuid, memberId) |
| | | ); |
| | | String nickName = apiXcxSaveInfoDto.getNickName(); |
| | | if(StrUtil.isNotEmpty(nickName)){ |
| | | mallMember.setName(nickName); |
| | | entity.setName(nickName); |
| | | } |
| | | String phone = apiXcxSaveInfoDto.getPhone(); |
| | | if(StrUtil.isNotEmpty(phone)){ |
| | | mallMember.setPhone(phone); |
| | | entity.setPhone(phone); |
| | | } |
| | | String avatarUrl = apiXcxSaveInfoDto.getAvatarUrl(); |
| | | if(StrUtil.isNotEmpty(avatarUrl)){ |
| | | mallMember.setAvatar(avatarUrl); |
| | | entity.setAvatar(avatarUrl); |
| | | } |
| | | |
| | | if (StrUtil.isNotBlank(apiXcxSaveInfoDto.getRealName())) { |
| | | mallMember.setRealName(apiXcxSaveInfoDto.getRealName()); |
| | | entity.setRealName(apiXcxSaveInfoDto.getRealName()); |
| | | } |
| | | |
| | | if (apiXcxSaveInfoDto.getBirthday() != null) { |
| | | mallMember.setBirthday(apiXcxSaveInfoDto.getBirthday()); |
| | | } |
| | | |
| | | List<MallVipConfig> configs = mallVipConfigMapper.selectVipConfigList(); |
| | | if (StrUtil.isBlank(mallMember.getLevel()) && CollUtil.isNotEmpty(configs)) { |
| | | MallVipConfig mallVipConfig = configs.get(0); |
| | | mallMember.setLevel(mallVipConfig.getCode()); |
| | | entity.setBirthday(apiXcxSaveInfoDto.getBirthday()); |
| | | } |
| | | |
| | | if(ObjectUtil.isNotEmpty(apiXcxSaveInfoDto.getGender())){ |
| | | mallMember.setSex(1 == apiXcxSaveInfoDto.getGender() ? "女" : "男"); |
| | | entity.setSex(1 == apiXcxSaveInfoDto.getGender() ? "女" : "男"); |
| | | } |
| | | |
| | | String companyId = apiXcxSaveInfoDto.getCompanyId(); |
| | | if(ObjectUtil.isNotEmpty(apiXcxSaveInfoDto.getCompanyId())){ |
| | | AiCompany aiCompany = aiCompanyMapper.selectOne( |
| | | Wrappers.lambdaQuery(AiCompany.class) |
| | | .eq(AiCompany::getCode, apiXcxSaveInfoDto.getCompanyId()) |
| | | .last("limit 1") |
| | | if(ObjectUtil.isNotEmpty(companyId)){ |
| | | YHAiCompany aiCompany = yhAiCompanyMapper.selectOne( |
| | | Wrappers.lambdaQuery(YHAiCompany.class) |
| | | .eq(YHAiCompany::getCode, companyId) |
| | | ); |
| | | if (ObjectUtil.isEmpty(aiCompany)){ |
| | | throw new FebsException("公司编码不存在"); |
| | |
| | | companyId = aiCompany.getId(); |
| | | } |
| | | } |
| | | mallMember.setCompanyId(companyId); |
| | | this.baseMapper.updateById(mallMember); |
| | | entity.setCompanyId(companyId); |
| | | yhAiMemberMapper.updateById(entity); |
| | | |
| | | String memberUuid = mallMember.getMemberUuid(); |
| | | AiMember aiMember = aiMemberService.getById(memberUuid); |
| | | if (ObjectUtil.isNotEmpty(aiMember) && StrUtil.isNotEmpty(mallMember.getCompanyId())){ |
| | | aiMemberService.update(null, |
| | | Wrappers.lambdaUpdate(AiMember.class) |
| | | .set(AiMember::getCompanyId, mallMember.getCompanyId()) |
| | | .eq(AiMember::getId, aiMember.getId()) |
| | | ); |
| | | } |
| | | |
| | | |
| | | // //完善信息赠送新人礼 |
| | | // if (StrUtil.isNotBlank(mallMember.getPhone()) && mallMember.getNewGift() == 0) { |
| | | // DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | // CommonDictionaryEnum.NEW_GIFT_SETTING.getType(), |
| | | // CommonDictionaryEnum.NEW_GIFT_SETTING.getCode() |
| | | // ); |
| | | // mallMember.setNewGift(1); |
| | | // this.baseMapper.updateById(mallMember); |
| | | // |
| | | // ApiNewGiftSettingDto apiNewGiftSettingDto = JSONObject.parseObject(dic.getValue(), ApiNewGiftSettingDto.class); |
| | | // if (apiNewGiftSettingDto.getState() == 1) { |
| | | // String prizeScore = apiNewGiftSettingDto.getPrizeScore(); |
| | | // BigDecimal bigDecimal = new BigDecimal(prizeScore).setScale(0, RoundingMode.HALF_DOWN); |
| | | // if (bigDecimal.compareTo(BigDecimal.ZERO) > 0) { |
| | | // walletService.add(bigDecimal, mallMember.getId(), "prizeScore"); |
| | | // mallMoneyFlowService.addMoneyFlow( |
| | | // mallMember.getId(), |
| | | // bigDecimal, |
| | | // ScoreFlowTypeEnum.MEMBER_INFO_GIFT.getValue(), |
| | | // MallUtils.getOrderNum(), |
| | | // FlowTypeEnum.PRIZE_SCORE.getValue(), |
| | | // StrUtil.format(ScoreFlowTypeEnum.MEMBER_INFO_GIFT.getDesc(),bigDecimal), |
| | | // 2 |
| | | // ); |
| | | // } |
| | | // if (apiNewGiftSettingDto.getCouponId() != null) { |
| | | // MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(apiNewGiftSettingDto.getCouponId()); |
| | | // if(ObjectUtil.isNotEmpty(mallGoodsCoupon)){ |
| | | // MallMemberCoupon memberCoupon = new MallMemberCoupon(); |
| | | // memberCoupon.setCouponId(mallGoodsCoupon.getId()); |
| | | // memberCoupon.setCouponName(mallGoodsCoupon.getName()); |
| | | // memberCoupon.setInviteId(mallMember.getInviteId()); |
| | | // memberCoupon.setCouponUuid(IdUtil.simpleUUID()); |
| | | // memberCoupon.setState(1); |
| | | // memberCoupon.setFromType(3); |
| | | // memberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(), mallGoodsCoupon.getExpireDay())); |
| | | // memberCoupon.setMemberId(mallMember.getId()); |
| | | // mallMemberCouponMapper.insert(memberCoupon); |
| | | // } |
| | | // } |
| | | // |
| | | // } |
| | | // } |
| | | return new FebsResponse().success(); |
| | | } |
| | | |