From 6c340588edca370436c38f0b146e0edadcd32ff9 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 18 Mar 2026 16:22:15 +0800
Subject: [PATCH] fix(yinhe): 修复AI服务响应状态和排序问题
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 270 +++++++++++++++++++++++++-----------------------------
1 files changed, 125 insertions(+), 145 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index 2ff0da9..f92a99e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -1,7 +1,13 @@
package cc.mrbird.febs.mall.service.impl;
+import cc.mrbird.febs.ai.entity.AiCompany;
+import cc.mrbird.febs.ai.entity.AiCompanyMemberApply;
import cc.mrbird.febs.ai.entity.AiMember;
+import cc.mrbird.febs.ai.enumerates.AiCommonEnum;
+import cc.mrbird.febs.ai.mapper.AiCompanyMapper;
+import cc.mrbird.febs.ai.mapper.AiCompanyMemberApplyMapper;
import cc.mrbird.febs.ai.mapper.AiMemberMapper;
+import cc.mrbird.febs.ai.service.AiMemberService;
import cc.mrbird.febs.ai.utils.UUID;
import cc.mrbird.febs.common.configure.FebsConfigure;
import cc.mrbird.febs.common.entity.FebsResponse;
@@ -27,6 +33,12 @@
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.YHSysCompanyLevel;
+import cc.mrbird.febs.yinhe.entity.YhAiMember;
+import cc.mrbird.febs.yinhe.mapper.YHAiCompanyMapper;
+import cc.mrbird.febs.yinhe.mapper.YHSysCompanyLevelMapper;
+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;
@@ -70,6 +82,7 @@
@RequiredArgsConstructor
public class ApiMallMemberServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements IApiMallMemberService {
+ private final AiCompanyMapper aiCompanyMapper;
private final AiMemberMapper aiMemberMapper;
private final MallMemberWalletMapper mallMemberWalletMapper;
private final ICommonService commonService;
@@ -104,6 +117,8 @@
private final HappyMemberLabelRecordMapper happyMemberLabelRecordMapper;
private final HappyMemberLabelMapper happyMemberLabelMapper;
private final FebsConfigure febsConfigure;
+ private final AiMemberService aiMemberService;
+ private final AiCompanyMemberApplyMapper aiCompanyMemberApplyMapper;
@Value("${spring.profiles.active}")
@@ -280,8 +295,32 @@
MallMember mallMember = this.baseMapper.selectById(id);
-
MallMemberVo mallMemberVo = MallMemberConversion.INSTANCE.entityToVo(mallMember);
+ if (StrUtil.isNotEmpty(mallMember.getCompanyId())){
+ AiCompany aiCompany = aiCompanyMapper.selectById(mallMember.getCompanyId());
+ mallMemberVo.setCompanyName(aiCompany.getName());
+ mallMemberVo.setCompanyCode(aiCompany.getCode());
+ }
+
+ List<AiCompanyMemberApply> aiCompanyMemberApplies = aiCompanyMemberApplyMapper.selectList(
+ Wrappers.lambdaQuery(AiCompanyMemberApply.class)
+ .eq(AiCompanyMemberApply::getMemberId, mallMemberVo.getMemberUuid())
+ .in(AiCompanyMemberApply::getState, Arrays.asList(0, 1))
+ );
+ if (CollUtil.isEmpty(aiCompanyMemberApplies)){
+ mallMemberVo.setCompanyApplyState(0);
+ }else{
+ List<AiCompanyMemberApply> aiCompanyMemberApplyList = aiCompanyMemberApplyMapper.selectList(
+ Wrappers.lambdaQuery(AiCompanyMemberApply.class)
+ .eq(AiCompanyMemberApply::getMemberId, mallMemberVo.getMemberUuid())
+ .eq(AiCompanyMemberApply::getState, 0)
+ );
+ if (CollUtil.isNotEmpty(aiCompanyMemberApplyList)){
+ mallMemberVo.setCompanyApplyState(2);
+ }else{
+ mallMemberVo.setCompanyApplyState(1);
+ }
+ }
HappyMemberLevel happyMemberLevel = happyMemberLevelMapper.selectOne(
new LambdaQueryWrapper<HappyMemberLevel>()
@@ -663,8 +702,12 @@
private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class);
+ private final YhAiMemberMapper yhAiMemberMapper;
+ private final YHAiCompanyMapper yhAiCompanyMapper;
+ private final YHSysCompanyLevelMapper yhSysCompanyLevelMapper;
@Override
+ @Transactional
public FebsResponse xcxLogin(ApiXcxLoginDto apiXcxLoginDto) throws IOException {
log.info("登录请求参数:{}", JSONObject.toJSONString(apiXcxLoginDto));
FebsResponse febsResponse = new FebsResponse();
@@ -685,104 +728,68 @@
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);
- }
+ entity.setMemberUuid(UUID.getSimpleUUIDString());
+ if (StrUtil.isNotEmpty(apiXcxLoginDto.getCompanyId())){
+ YHAiCompany aiCompany = yhAiCompanyMapper.selectOne(
+ Wrappers.lambdaQuery(YHAiCompany.class)
+ .eq(YHAiCompany::getCode, apiXcxLoginDto.getCompanyId())
+ );
+ if (ObjectUtil.isEmpty(aiCompany)){
+ throw new FebsException("公司编码错误");
}
- }
- this.baseMapper.insert(mallMember);
-
- AiMember aiMember = new AiMember();
- aiMember.setId(UUID.getSimpleUUIDString());
- aiMember.setCreatedTime(new Date());
- aiMemberMapper.insert(aiMember);
-
- mallMember = this.baseMapper.selectMemberByOpenId(openId);
- String inviteId = ShareCodeUtil.toSerialCode(mallMember.getId());
- mallMember.setMemberUuid(aiMember.getId());
- mallMember.setInviteId(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);
- }
- }
+ String levelCode = aiCompany.getLevelCode();
+ YHSysCompanyLevel yhSysCompanyLevel = yhSysCompanyLevelMapper.selectOne(
+ Wrappers.lambdaQuery(YHSysCompanyLevel.class)
+ .eq(YHSysCompanyLevel::getCode, levelCode)
+ );
+ Integer memberNum = yhSysCompanyLevel.getMemberNum();
+ List<YhAiMember> yhAiMembers = yhAiMemberMapper.selectList(
+ Wrappers.lambdaQuery(YhAiMember.class)
+ .eq(YhAiMember::getCompanyId, aiCompany.getId())
+ .isNull(YhAiMember::getRoleId)
+ );
+ Integer realNum = CollUtil.isEmpty(yhAiMembers) ? 0 : yhAiMembers.size();
+ if (realNum >= memberNum){
+ throw new FebsException("公司会员已满");
}
+ entity.setCompanyId(aiCompany.getId());
}
+ entity.setCreateTime(systemTime);
+ entity.setUpdateTime(systemTime);
+ entity.setLastLoginTime(systemTime);
+ yhAiMemberMapper.insert(entity);
+
+ entity = yhAiMemberMapper.selectOne(
+ Wrappers.lambdaQuery(YhAiMember.class)
+ .eq(YhAiMember::getOpenId, openId)
+ );
+ String inviteId = ShareCodeUtil.toSerialCode(entity.getId());
+ entity.setInviteId(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);
@@ -790,13 +797,14 @@
redisUtils.del(existToken);
}
}
+ YhAiMember yhAiMember = yhAiMemberMapper.selectById(entity.getId());
String token = IdUtil.simpleUUID();
- redisUtils.set(token, JSONObject.toJSONString(mallMember), -1);
+ redisUtils.set(token, JSONObject.toJSONString(yhAiMember), -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", yhAiMember);
authInfo.put("rasToken", generateAsaToken(token));
febsResponse.success().data(authInfo);
} else {
@@ -806,84 +814,56 @@
}
@Override
+ @Transactional
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 = YHLoginUserUtil.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());
+ entity.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());
+ if(ObjectUtil.isNotEmpty(apiXcxSaveInfoDto.getGender())){
+ entity.setSex(1 == apiXcxSaveInfoDto.getGender() ? "女" : "男");
}
- mallMember.setSex(1 == apiXcxSaveInfoDto.getGender() ? "女" : "男");
- this.baseMapper.updateById(mallMember);
+ String companyId = apiXcxSaveInfoDto.getCompanyId();
+ if(ObjectUtil.isNotEmpty(companyId)){
+ YHAiCompany aiCompany = yhAiCompanyMapper.selectOne(
+ Wrappers.lambdaQuery(YHAiCompany.class)
+ .eq(YHAiCompany::getCode, companyId)
+ );
+ if (ObjectUtil.isEmpty(aiCompany)){
+ throw new FebsException("公司编码不存在");
+ }
+ if (ObjectUtil.isNotEmpty(aiCompany)){
+ companyId = aiCompany.getId();
+ }
+ }
+ entity.setCompanyId(companyId);
+ yhAiMemberMapper.updateById(entity);
-// //完善信息赠送新人礼
-// 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();
}
--
Gitblit v1.9.1