## 0元会员注册相关接口;get-info返回信息调整;

This commit is contained in:
cabbage 2025-09-10 14:48:30 +08:00
parent 11a5a8f758
commit d133aa0e5f
23 changed files with 346 additions and 370 deletions

View File

@ -6,14 +6,9 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
/** /**
* @Description: 会员信息DTO * 会员信息DTO
* @Author: jiang chao
* @Time: 2023/1/10 16:40
* @Classname: MemberDataDTO
* @PackageName: com.hzs.system.common.dto
*/ */
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@ -27,10 +22,6 @@ public class MemberDataDTO implements Serializable {
* 自然国ID * 自然国ID
*/ */
private Integer pkCountry; private Integer pkCountry;
/**
* 自然国翻译KEY
*/
private Integer pkCountryTransaction;
/** /**
* 自然国名称 * 自然国名称
*/ */
@ -39,19 +30,11 @@ public class MemberDataDTO implements Serializable {
* 自然国家圆形国旗 * 自然国家圆形国旗
*/ */
private String countryCircularIcon; private String countryCircularIcon;
/**
* 自然国家方形图旗
*/
private String countrySquareIcon;
/** /**
* 结算国ID * 结算国ID
*/ */
private Integer pkSettleCountry; private Integer pkSettleCountry;
/**
* 自然国翻译KEY
*/
private Integer pkSettleCountryTransaction;
/** /**
* 自然国名称 * 自然国名称
*/ */
@ -60,18 +43,6 @@ public class MemberDataDTO implements Serializable {
* 结算国家圆形国旗 * 结算国家圆形国旗
*/ */
private String settleCountryCircularIcon; private String settleCountryCircularIcon;
/**
* 结算国家方形国旗
*/
private String settleCountrySquareIcon;
/**
* 结算国家点亮名称
*/
private String settleCountryLightName;
/**
* 结算国家地图
*/
private String settleCountryImg;
/** /**
* 结算等级翻译 * 结算等级翻译
@ -96,23 +67,9 @@ public class MemberDataDTO implements Serializable {
*/ */
private String awardsIcon; private String awardsIcon;
/**
* 荣誉奖衔翻译
*/
private Integer pkMaxAwards;
/**
* 荣誉奖衔图标
*/
private String maxAwardsIcon;
/** /**
* 币种图标 * 币种图标
*/ */
private String currencyIcon; private String currencyIcon;
/**
* 汇率
*/
private BigDecimal exchangeRate;
} }

View File

@ -4,11 +4,7 @@ import java.util.Collection;
import java.util.Map; import java.util.Map;
/** /**
* @Description: 翻译公用操作 * 翻译公用操作
* @Author: jiang chao
* @Time: 2022/10/22 11:58
* @Classname: ITransactionCommonService
* @PackageName: com.hzs.common.service
*/ */
public interface ITransactionCommonService { public interface ITransactionCommonService {

View File

@ -12,11 +12,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* @Description: 翻译公用操作 * 翻译公用操作
* @Author: jiang chao
* @Time: 2022/10/22 11:58
* @Classname: TransactionCommonServiceImpl
* @PackageName: com.hzs.common.service.impl
*/ */
@Service @Service
public class TransactionCommonServiceImpl implements ITransactionCommonService { public class TransactionCommonServiceImpl implements ITransactionCommonService {

View File

@ -59,7 +59,6 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
/* /*
* 根据条件查询会员信息查询单表 * 根据条件查询会员信息查询单表
* @param: null null
**/ **/
List<CuMemberExt> queryMemberByCondition(CuMember cuMember); List<CuMemberExt> queryMemberByCondition(CuMember cuMember);

View File

@ -19,6 +19,7 @@ import com.hzs.member.handlebusiness.vo.BusinessMemberVO;
import com.hzs.member.handlebusiness.vo.HandleBusinessVO; import com.hzs.member.handlebusiness.vo.HandleBusinessVO;
import com.hzs.member.marketnews.param.MarketNewsParam; import com.hzs.member.marketnews.param.MarketNewsParam;
import com.hzs.member.marketnews.vo.UserInvestmentVo; import com.hzs.member.marketnews.vo.UserInvestmentVo;
import com.hzs.member.share.param.ShareRegisterParam;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO; import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -1012,4 +1013,13 @@ public interface ICuMemberService extends IService<CuMember> {
AjaxResult setRegion(MemberRegionParam param); AjaxResult setRegion(MemberRegionParam param);
/**
* 分享注册会员
*
* @param registerParam 分享注册入参
* @return
*/
CuMember shareRegisterMember(ShareRegisterParam registerParam);
} }

View File

@ -55,6 +55,7 @@ import com.hzs.member.handlebusiness.vo.BusinessMemberVO;
import com.hzs.member.handlebusiness.vo.HandleBusinessVO; import com.hzs.member.handlebusiness.vo.HandleBusinessVO;
import com.hzs.member.marketnews.param.MarketNewsParam; import com.hzs.member.marketnews.param.MarketNewsParam;
import com.hzs.member.marketnews.vo.UserInvestmentVo; import com.hzs.member.marketnews.vo.UserInvestmentVo;
import com.hzs.member.share.param.ShareRegisterParam;
import com.hzs.system.base.IAreaServiceApi; import com.hzs.system.base.IAreaServiceApi;
import com.hzs.system.base.IBdAwardsRegionConfigServiceApi; import com.hzs.system.base.IBdAwardsRegionConfigServiceApi;
import com.hzs.system.base.ICountryServiceApi; import com.hzs.system.base.ICountryServiceApi;
@ -138,20 +139,18 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
@Override @Override
public Boolean saveMember(CuMember cuMember) { public Boolean saveMember(CuMember cuMember) {
boolean save = false;
try { try {
if (cuMember.getIsMakerGift() == null) { if (cuMember.getIsMakerGift() == null) {
cuMember.setIsMakerGift(EYesNo.NO.getIntValue()); cuMember.setIsMakerGift(EYesNo.NO.getIntValue());
} }
Integer saveRow = baseMapper.insertCuMember(cuMember); if (baseMapper.insertCuMember(cuMember) > 0) {
if (saveRow > 0) { return true;
save = true;
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("保存会员失败", e);
throw new RuntimeException(e); throw new RuntimeException(e);
} }
return save; return false;
} }
@Override @Override
@ -1897,7 +1896,6 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
tree.putExtra("settleCountryName", allCountryData.get(treeNode.getPkSettleCountry()).getName()); tree.putExtra("settleCountryName", allCountryData.get(treeNode.getPkSettleCountry()).getName());
tree.putExtra("settleCountryUrl", allCountryData.get(treeNode.getPkSettleCountry()).getNationalFlag1()); tree.putExtra("settleCountryUrl", allCountryData.get(treeNode.getPkSettleCountry()).getNationalFlag1());
tree.putExtra("settleCountryUrl2", allCountryData.get(treeNode.getPkSettleCountry()).getNationalFlag2()); tree.putExtra("settleCountryUrl2", allCountryData.get(treeNode.getPkSettleCountry()).getNationalFlag2());
} }
for (BdAwards date : awardsDto.getData()) { for (BdAwards date : awardsDto.getData()) {
if (date.getPkId().equals(treeNode.getPkAwards())) { if (date.getPkId().equals(treeNode.getPkAwards())) {
@ -1910,7 +1908,6 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
tree.putExtra("countryName", allCountryData.get(treeNode.getPkCountry()).getName()); tree.putExtra("countryName", allCountryData.get(treeNode.getPkCountry()).getName());
tree.putExtra("countryUrl", allCountryData.get(treeNode.getPkCountry()).getNationalFlag1()); tree.putExtra("countryUrl", allCountryData.get(treeNode.getPkCountry()).getNationalFlag1());
tree.putExtra("countryUrl2", allCountryData.get(treeNode.getPkCountry()).getNationalFlag2()); tree.putExtra("countryUrl2", allCountryData.get(treeNode.getPkCountry()).getNationalFlag2());
} }
CuMember member = this.getMember(treeNode.getPkMember()); CuMember member = this.getMember(treeNode.getPkMember());
if (member != null) { if (member != null) {
@ -3422,7 +3419,8 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
checkRegionVO.setCounty(smallPv.compareTo(configAwards.getSmallAssess()) >= 0); checkRegionVO.setCounty(smallPv.compareTo(configAwards.getSmallAssess()) >= 0);
checkRegionVO.getData().setCountyData(regionDetail); checkRegionVO.getData().setCountyData(regionDetail);
break; break;
default: break; default:
break;
} }
} }
} }
@ -3559,11 +3557,77 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
} }
return smallFlag; return smallFlag;
} }
public static LocalDate getLastDayOfLastMonthLegacy() {
Calendar calendar = Calendar.getInstance(); @Transactional(rollbackFor = Exception.class)
calendar.add(Calendar.MONTH, -1); // 减1个月 @Override
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); public CuMember shareRegisterMember(ShareRegisterParam registerParam) {
return LocalDate.of(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, calendar.get(Calendar.DAY_OF_MONTH)); // 处理等级
GradeDTO gradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.START_UP.getValue(), CountryConstants.CHINA_COUNTRY).getData();
if (null == gradeDTO) {
return null;
}
// 新会员信息
CuMember cuMember = packageCuMember(registerParam, registerParam.getParentMember());
cuMember.setPkRegisterGrade(gradeDTO.getPkId());
cuMember.setPkSettleGrade(gradeDTO.getPkId());
cuMember.setPkAwards(gradeDTO.getPkAwards());
// 保存会员
this.saveMember(cuMember);
// 新会员生成账户保存账户
CuMemberAccount cuMemberAccount = CuMemberAccount.builder()
.pkMember(cuMember.getPkId())
.build();
cuMemberAccount.setPkCreator(cuMember.getPkCreator());
cuMemberAccount.setPkCountry(cuMember.getPkSettleCountry());
iCuMemberAccountService.save(cuMemberAccount);
// 用户注册信息
CuMemberRegister cuMemberRegister = BeanUtil.copyProperties(cuMember, CuMemberRegister.class);
cuMemberRegister.setPkMember(cuMember.getPkId());
iCuMemberRegisterService.save(cuMemberRegister);
return cuMember;
} }
private CuMember packageCuMember(ShareRegisterParam registerParam, CuMember parentMember) {
// 获取新的订单编号
CuMember cuMember = CuMember.builder()
.memberName(registerParam.getMemberName())
.nickName(registerParam.getMemberName())
.phone(registerParam.getPhone())
.pkSettleCountry(CountryConstants.CHINA_COUNTRY)
.loginPwd(SecurityUtils.encryptPassword(SysConstants.LOGIN_PASSWORD))
.loginPassword(SysConstants.LOGIN_PASSWORD)
.payPwd(SecurityUtils.encryptPassword(SysConstants.PAY_PASSWORD))
.payPassword(SysConstants.PAY_PASSWORD)
.source(registerParam.getSource() == null ? EDataSource.H5.getValue() : registerParam.getSource())
.pkParent(parentMember.getPkId())
.accountStatus(EAccountStatus.NORMAL.getValue())
.pkCenterCode(parentMember.getPkId())
// 这个时候是待支付等支付的时候变为支付可以跟待支付公用
.payStatus(EPayStatus.UNPAID.getValue())
.category(ECategory.NORMAL.getValue())
.orderSource(EOrderSource.SOLID.getValue())
.consumeMoney(BigDecimal.ZERO)
.consumeAchieve(BigDecimal.ZERO)
.registerAuthority(ERegistrationAuthority.ORDINARY.getValue())
.customerType(ECustomerType.NORMAL.getValue())
.pkVertex(parentMember.getPkVertex())
.systemType(ESystemType.DEFAULT.getValue())
.build();
cuMember.setPkCountry(parentMember.getPkSettleCountry());
cuMember.setCreationTime(new Date());
// 2024.05.29 会员续约需求有效期为购买时间次年的上月最后一天
cuMember.setExpireDate(DateUtils.beforeMonthLastDate(DateUtils.addYears(cuMember.getCreationTime(), 1)));
// 休止期普通会员6个月奖衔会员12个月先按6个月来后续MQ会统一处理同姓名同手机号会员
cuMember.setStopDate(DateUtils.addMonths(cuMember.getExpireDate(), 6));
// 获取会员编号会员主键
cuMember.setPkId(baseMapper.createMemberId());
CountryDTO countryDTO = iCountryServiceApi.getCountry(CountryConstants.CHINA_COUNTRY).getData();
cuMember.setMemberCode(this.createMemberCode(countryDTO.getCode(), null));
cuMember.setPkCreator(cuMember.getPkId());
return cuMember;
}
} }

View File

@ -39,11 +39,7 @@ public class MemberInfoServiceImpl implements IMemberInfoService {
private ICuMemberService iCuMemberService; private ICuMemberService iCuMemberService;
@Autowired @Autowired
private ICuMemberChangeLogService iCuMemberChangeLogService; private ICuMemberChangeLogService iCuMemberChangeLogService;
@Autowired
private ITransactionCommonService iTransactionCommonService;
@DubboReference
ICurrencyServiceApi iCurrencyServiceApi;
@DubboReference @DubboReference
ICommonServiceApi iCommonServiceApi; ICommonServiceApi iCommonServiceApi;
@ -61,33 +57,19 @@ public class MemberInfoServiceImpl implements IMemberInfoService {
.pkSettleCountry(cuMember.getPkSettleCountry()) .pkSettleCountry(cuMember.getPkSettleCountry())
.pkGrade(cuMember.getPkSettleGrade()) .pkGrade(cuMember.getPkSettleGrade())
.pkAwards(cuMember.getPkAwards()) .pkAwards(cuMember.getPkAwards())
// .pkMaxAwards(cuMember.getPkMaxAwards())
.build()) .build())
.getData(); .getData();
BigDecimal consumeAchieve = cuMember.getConsumeAchieve(); BigDecimal consumeAchieve = cuMember.getConsumeAchieve();
if (CountryConstants.CHINA_COUNTRY.equals(cuMember.getPkSettleCountry())) {
// 中国会员汇率处理
consumeAchieve = consumeAchieve.multiply(memberDataDTO.getExchangeRate());
}
// 会员名称优先取昵称没有取名称 // 会员名称优先取昵称没有取名称
String memberName = StringUtils.isNotEmpty(cuMember.getNickName()) ? cuMember.getNickName() : cuMember.getMemberName(); String memberName = StringUtils.isNotEmpty(cuMember.getNickName()) ? cuMember.getNickName() : cuMember.getMemberName();
// 自然国家
String pkCountryVal = memberDataDTO.getPkCountryVal();
// 结算国家
String pkSettleCountryVal = memberDataDTO.getPkSettleCountryVal();
// 国家翻译 // 特殊登录处理
Map<Integer, String> transactionMap = iTransactionCommonService.enumTransactionByDBFromPkId(Arrays.asList(memberDataDTO.getPkCountryTransaction(), memberDataDTO.getPkSettleCountryTransaction()));
if (null != transactionMap.get(memberDataDTO.getPkCountryTransaction())) {
pkCountryVal = transactionMap.get(memberDataDTO.getPkCountryTransaction());
}
if (null != transactionMap.get(memberDataDTO.getPkSettleCountryTransaction())) {
pkSettleCountryVal = transactionMap.get(memberDataDTO.getPkSettleCountryTransaction());
}
// 特殊登录处理两个特殊账号登录之后单独处理
int loginType = 0; int loginType = 0;
if (null == cuMember.getPkPlaceParent()) {
loginType = 1;
}
// 封装返回信息 // 封装返回信息
return MemberInfoVO.builder() return MemberInfoVO.builder()
@ -95,25 +77,17 @@ public class MemberInfoServiceImpl implements IMemberInfoService {
.memberName(memberName) .memberName(memberName)
.registerTime(cuMember.getPayTime()) .registerTime(cuMember.getPayTime())
.pkCountry(cuMember.getPkCountry()) .pkCountry(cuMember.getPkCountry())
.pkCountryVal(pkCountryVal) .pkCountryVal(memberDataDTO.getPkCountryVal())
.countryCircularIcon(memberDataDTO.getCountryCircularIcon()) .countryCircularIcon(memberDataDTO.getCountryCircularIcon())
.countrySquareIcon(memberDataDTO.getCountrySquareIcon())
.pkSettleCountry(cuMember.getPkSettleCountry()) .pkSettleCountry(cuMember.getPkSettleCountry())
.pkSettleCountryVal(pkSettleCountryVal) .pkSettleCountryVal(memberDataDTO.getPkSettleCountryVal())
.settleCountryCircularIcon(memberDataDTO.getSettleCountryCircularIcon()) .settleCountryCircularIcon(memberDataDTO.getSettleCountryCircularIcon())
.settleCountrySquareIcon(memberDataDTO.getSettleCountrySquareIcon())
.settleCountryLightName(memberDataDTO.getSettleCountryLightName())
.settleCountryImg(memberDataDTO.getSettleCountryImg())
.pkGradeId(cuMember.getPkSettleGrade()) .pkGradeId(cuMember.getPkSettleGrade())
.pkGrade(memberDataDTO.getPkGrade()) .pkGrade(memberDataDTO.getPkGrade())
.gradeIcon(memberDataDTO.getGradeIcon())
.pkAwardsId(cuMember.getPkAwards()) .pkAwardsId(cuMember.getPkAwards())
.pkAwards(memberDataDTO.getPkAwards()) .pkAwards(memberDataDTO.getPkAwards())
.pkAwardsValue(memberDataDTO.getPkAwardsValue()) .pkAwardsValue(memberDataDTO.getPkAwardsValue())
.awardsIcon(memberDataDTO.getAwardsIcon()) .awardsIcon(memberDataDTO.getAwardsIcon())
// .pkMaxAwardsId(cuMember.getPkMaxAwards())
// .pkMaxAwards(memberDataDTO.getPkMaxAwards())
// .maxAwardsIcon(memberDataDTO.getMaxAwardsIcon())
.currencyIcon(memberDataDTO.getCurrencyIcon()) .currencyIcon(memberDataDTO.getCurrencyIcon())
.registerAuthority(cuMember.getRegisterAuthority()) .registerAuthority(cuMember.getRegisterAuthority())
.headPath(cuMember.getHeadPath()) .headPath(cuMember.getHeadPath())
@ -137,24 +111,6 @@ public class MemberInfoServiceImpl implements IMemberInfoService {
memberDataVO.setPhone(DesensitizedUtil.mobilePhone(memberDataVO.getPhone())); memberDataVO.setPhone(DesensitizedUtil.mobilePhone(memberDataVO.getPhone()));
// 证件号码脱敏 // 证件号码脱敏
memberDataVO.setIdCardAuth(DesensitizedUtil.idCardNum(memberDataVO.getIdCardAuth(), 6, 6)); memberDataVO.setIdCardAuth(DesensitizedUtil.idCardNum(memberDataVO.getIdCardAuth(), 6, 6));
if (CountryConstants.CHINA_COUNTRY.equals(memberDataVO.getPkSettleCountry())) {
// 汇率
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(memberDataVO.getPkSettleCountry()).getData();
// 中国会员汇率处理
memberDataVO.setConsumeAchieve(memberDataVO.getConsumeAchieve().multiply(currencyDTO.getInExchangeRate()));
}
// 国家翻译
Map<Integer, String> transactionMap = iTransactionCommonService.enumTransactionByDBFromPkId(Arrays.asList(memberDataVO.getPkCountryTransaction(), memberDataVO.getPkSettleCountryTransaction()));
if (null != transactionMap.get(memberDataVO.getPkCountryTransaction())) {
memberDataVO.setCountryName(transactionMap.get(memberDataVO.getPkCountryTransaction()));
}
if (null != transactionMap.get(memberDataVO.getPkSettleCountryTransaction())) {
memberDataVO.setSettleCountryName(transactionMap.get(memberDataVO.getPkSettleCountryTransaction()));
}
return memberDataVO; return memberDataVO;
} }

View File

@ -1,7 +1,6 @@
package com.hzs.member.base.vo; package com.hzs.member.base.vo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hzs.common.core.annotation.Transaction; import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants; import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.Data; import lombok.Data;
@ -10,11 +9,7 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
* @Description: 会员资料VO * 会员资料VO
* @Author: jiang chao
* @Time: 2023/1/11 15:15
* @Classname: MemberDataVO
* @PackageName: com.hzs.member.base.vo
*/ */
@Data @Data
public class MemberDataVO { public class MemberDataVO {
@ -48,10 +43,6 @@ public class MemberDataVO {
* 自然国家 * 自然国家
*/ */
private Integer pkCountry; private Integer pkCountry;
/**
* 自然国家翻译
*/
private Integer pkCountryTransaction;
/** /**
* 自然国家名称 * 自然国家名称
*/ */
@ -61,10 +52,6 @@ public class MemberDataVO {
* 结算国家 * 结算国家
*/ */
private Integer pkSettleCountry; private Integer pkSettleCountry;
/**
* 结算国家翻译
*/
private Integer pkSettleCountryTransaction;
/** /**
* 结算国家名称 * 结算国家名称
*/ */
@ -90,16 +77,6 @@ public class MemberDataVO {
*/ */
private String settleGradeVal; private String settleGradeVal;
/**
* 代理等级
*/
@Transaction(transactionKey = EnumsPrefixConstants.KEY_GRADE)
private Integer agentGrade;
/**
* 代理等级显示
*/
private String agentGradeVal;
/** /**
* 真实奖衔 * 真实奖衔
*/ */
@ -110,16 +87,6 @@ public class MemberDataVO {
*/ */
private String awardsVal; private String awardsVal;
/**
* 荣誉奖衔
*/
@Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
private Integer maxAwards;
/**
* 荣誉奖衔显示
*/
private String maxAwardsVal;
/** /**
* 创建日期 * 创建日期
*/ */

View File

@ -12,11 +12,7 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
* @Description: 会员登录信息 * 会员登录信息
* @Author: jiang chao
* @Time: 2023/1/10 15:23
* @Classname: MemberInfo
* @PackageName: com.hzs.member.base.vo
*/ */
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@ -51,10 +47,6 @@ public class MemberInfoVO {
* 自然国家圆形国旗 * 自然国家圆形国旗
*/ */
private String countryCircularIcon; private String countryCircularIcon;
/**
* 自然国家方形图旗
*/
private String countrySquareIcon;
/** /**
* 结算国ID * 结算国ID
@ -68,18 +60,6 @@ public class MemberInfoVO {
* 结算国家圆形国旗 * 结算国家圆形国旗
*/ */
private String settleCountryCircularIcon; private String settleCountryCircularIcon;
/**
* 结算国家方形国旗
*/
private String settleCountrySquareIcon;
/**
* 结算国家点亮名称
*/
private String settleCountryLightName;
/*
* 结算国家地图
*/
private String settleCountryImg;
/** /**
* 等级ID * 等级ID
@ -94,10 +74,6 @@ public class MemberInfoVO {
* 等级名称 * 等级名称
*/ */
private String pkGradeVal; private String pkGradeVal;
/**
* 等级图标
*/
private String gradeIcon;
/** /**
* 奖衔ID * 奖衔ID
@ -118,26 +94,6 @@ public class MemberInfoVO {
*/ */
private String awardsIcon; private String awardsIcon;
/**
* 荣誉奖衔ID
*/
private Integer pkMaxAwardsId;
/**
* 荣誉奖衔翻译ID
*/
@Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
private Integer pkMaxAwards;
/**
* 荣誉奖衔名称
*/
private String pkMaxAwardsVal;
/**
* 荣誉奖衔图标
*/
private String maxAwardsIcon;
/** /**
* 币种图标 * 币种图标
*/ */

View File

@ -7,13 +7,6 @@ import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
/**
* @Description:
* @Author: sui q
* @Time: 2023/3/15 11:07
* @Classname: MemberShare
* @PackageName: com.hzs.member.base.vo
*/
@Data @Data
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@ -69,4 +62,10 @@ public class MemberShare implements Serializable {
*/ */
private String android; private String android;
/**
* 自动登录uuid
*/
private String uuid;
} }

View File

@ -3,8 +3,10 @@ package com.hzs.member.login.controller;
import cn.hutool.core.codec.Base64Decoder; import cn.hutool.core.codec.Base64Decoder;
import com.hzs.common.auth.LoginBody; import com.hzs.common.auth.LoginBody;
import com.hzs.common.core.annotation.RepeatSubmitSimple; import com.hzs.common.core.annotation.RepeatSubmitSimple;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.constant.MagicNumberConstants; import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.constant.SysConstants; import com.hzs.common.core.constant.SysConstants;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.utils.StringUtils;
import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.domain.member.base.CuMemberShare; import com.hzs.common.domain.member.base.CuMemberShare;
@ -21,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
/** /**
* 会员端 token 控制 * 会员端 token 控制
@ -38,6 +41,8 @@ public class MemberTokenController {
@Autowired @Autowired
private IMemberLoginService iMemberLoginService; private IMemberLoginService iMemberLoginService;
@Autowired
private RedisService redisService;
/** /**
* 会员登录 * 会员登录
@ -113,4 +118,22 @@ public class MemberTokenController {
return AjaxResult.error(); return AjaxResult.error();
} }
/**
* 0元会员自动登录
*/
@RepeatSubmitSimple
@PostMapping("/share-login")
public AjaxResult shareLogin(@Valid @RequestBody AutoLoginParam param) {
String tmpUuid = redisService.getCacheObject(CacheConstants.AUTO_LOGIN + param.getUsername());
if (!param.getUuid().equals(tmpUuid)) {
// 没有自动登录标记 或者 标记不对则不能自动登录
return AjaxResult.error("当前会员已不能快速登录");
}
// 用户登录
LoginMember loginMember = iMemberLoginService.login(param.getUsername(), param.getPassword());
// 获取登录token
return AjaxResult.success(memberTokenService.createToken(loginMember));
}
} }

View File

@ -2,8 +2,11 @@ package com.hzs.member.login.param;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
/** /**
* 海粉自动注册登录入参 * 自动注册登录入参
*/ */
@Data @Data
public class AutoLoginParam { public class AutoLoginParam {
@ -13,4 +16,25 @@ public class AutoLoginParam {
*/ */
private String pkParent; private String pkParent;
/**
* 会员编号
*/
@NotEmpty(message = "会员编号不能为空")
@Size(message = "会员编号不能超过{max}位", max = 20)
private String username;
/**
* 登录密码
*/
@NotEmpty(message = "登录密码不能为空")
@Size(message = "登录密码不能超过{max}位", max = 20)
private String password;
/**
* 自动登录标记
*/
@NotEmpty(message = "缺少参数")
private String uuid;
} }

View File

@ -106,10 +106,13 @@ public class MemberLoginServiceImpl implements IMemberLoginService {
// 用户未支付状态 // 用户未支付状态
if (EPayStatus.UNPAID.getValue() == member.getPayStatus()) { if (EPayStatus.UNPAID.getValue() == member.getPayStatus()) {
if (null != member.getPkPlaceParent()) {
// 兼容0元注册有安置的为正常会员需要判断支付状态
recordLoginLog(null, EStatus.NO, username + " 登录用户不存在"); recordLoginLog(null, EStatus.NO, username + " 登录用户不存在");
// 登录用户: %s 不存在 // 登录用户: %s 不存在
throw new ServiceException(TransactionUtils.getContent(SystemMsgConstants.USER_NOT_EXIST, username)); throw new ServiceException(TransactionUtils.getContent(SystemMsgConstants.USER_NOT_EXIST, username));
} }
}
// 非正常点位死点已注销不能登录 // 非正常点位死点已注销不能登录
if (ECategory.NORMAL.getValue() != member.getCategory()) { if (ECategory.NORMAL.getValue() != member.getCategory()) {
recordLoginLog(loginMember.getPkId(), EStatus.NO, "非正常用户不能进行登录"); recordLoginLog(loginMember.getPkId(), EStatus.NO, "非正常用户不能进行登录");

View File

@ -1,20 +1,37 @@
package com.hzs.member.share.controller.api; package com.hzs.member.share.controller.api;
import cn.hutool.core.codec.Base64Decoder;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hzs.common.core.annotation.RepeatSubmitSimple;
import com.hzs.common.core.config.BdConfig;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.constant.CountryConstants;
import com.hzs.common.core.domain.R; import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.ECategory;
import com.hzs.common.core.enums.EDelFlag;
import com.hzs.common.core.enums.EShareType; import com.hzs.common.core.enums.EShareType;
import com.hzs.common.core.enums.ESystemConfig;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.utils.sign.Base64Util; import com.hzs.common.core.utils.sign.Base64Util;
import com.hzs.common.core.utils.uuid.IdUtils;
import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.security.utils.SecurityUtils; import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.member.base.service.ICuMemberService;
import com.hzs.member.base.vo.MemberShare;
import com.hzs.member.share.param.ShareRegisterParam;
import com.hzs.system.base.ISystemConfigServiceApi;
import com.hzs.third.share.IShareServiceApi; import com.hzs.third.share.IShareServiceApi;
import com.hzs.third.share.dto.ShareServiceDTO; import com.hzs.third.share.dto.ShareServiceDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit;
/** /**
* 会员分享相关控制器 * 会员分享相关控制器
@ -24,29 +41,16 @@ import java.util.Map;
@RequestMapping("/api/share") @RequestMapping("/api/share")
public class ApiShareController { public class ApiShareController {
@Autowired
private ICuMemberService iCuMemberService;
@Autowired
private RedisService redisService;
@DubboReference @DubboReference
IShareServiceApi iShareServiceApi; IShareServiceApi iShareServiceApi;
@DubboReference
ISystemConfigServiceApi iSystemConfigServiceApi;
// /**
// * 获取海粉分享码
// *
// * @return
// */
// @GetMapping("/fans-code")
// public AjaxResult fansCode() {
// Long userId = SecurityUtils.getUserId();
// // 海粉注册分享人就是自己
// R<String> resultR = iShareServiceApi.queryShareCode(ShareServiceDTO.builder()
// .eShareType(EShareType.FANS)
// .pkBusiness(userId)
// .pkCountry(SecurityUtils.getPkCountry())
// .userId(userId)
// .build());
// if (resultR.isSuccess()) {
// return AjaxResult.success("", resultR.getData());
// }
// return AjaxResult.error();
// }
/** /**
* 获取188分享码H5 * 获取188分享码H5
@ -73,50 +77,77 @@ public class ApiShareController {
return AjaxResult.error(); return AjaxResult.error();
} }
// /**
// * 获取分享专区分享码 ////////////////////////////// 0元注册 //////////////////////////////
// *
// * @return
// */ /**
// @GetMapping("/share-code") * 分享查询推荐人编号 -- 不需要登录
// public AjaxResult shareCode() { *
// Long userId = SecurityUtils.getUserId(); * @param parentCode 推荐人加密
// // 分享专区分享人就是自己 * @return
// R<String> resultR = iShareServiceApi.queryShareCode(ShareServiceDTO.builder() */
// .eShareType(EShareType.SHARE) @GetMapping("/find-share-code/{parentCode}")
// .pkBusiness(userId) public AjaxResult findShareCode(@PathVariable("parentCode") String parentCode) {
// .pkCountry(SecurityUtils.getPkCountry()) CuMember cuMember = iCuMemberService.getMemberById(Long.parseLong(new String(Base64Decoder.decode(parentCode))));
// .userId(userId) if (null != cuMember) {
// .build()); return AjaxResult.success("", cuMember.getMemberCode());
// if (resultR.isSuccess()) { }
// return AjaxResult.success("", resultR.getData()); return AjaxResult.error();
// } }
// return AjaxResult.error();
// } /**
// * 分享注册 -- 不需要登录
// /** *
// * 获取分享专区分享码H5 * @param registerParam 分享注册入参
// * * @return
// * @return */
// */ @RepeatSubmitSimple
// @GetMapping("/share-code-h5") @PostMapping("/share-register")
// public AjaxResult shareCodeH5() { public AjaxResult shareRegister(@Valid @RequestBody ShareRegisterParam registerParam,
// Long userId = SecurityUtils.getUserId(); @RequestHeader("Source") Integer source) {
// // 分享专区分享人就是自己 // 设置数据来源
// R<String> resultR = iShareServiceApi.queryShareCode(ShareServiceDTO.builder() registerParam.setSource(source);
// .eShareType(EShareType.SHARE)
// .pkBusiness(userId) // 验证推荐人
// .pkCountry(SecurityUtils.getPkCountry()) CuMember parentMember = iCuMemberService.getMember(registerParam.getParentCode());
// .userId(userId) if (null == parentMember) {
// .build()); return AjaxResult.error("推荐编号不存在");
// if (resultR.isSuccess()) { }
// Map<String, String> resultMap = new HashMap<>(); registerParam.setParentMember(parentMember);
// resultMap.put("dataUrl", resultR.getData());
// // 前端无法根据URL生成海报此处需要转一下base64 // 手机号注册次数
// resultMap.put("dataStr", Base64Util.toUrlBase64(resultR.getData())); String value = iSystemConfigServiceApi.getBonusSystemConfig(CountryConstants.CHINA_COUNTRY, ESystemConfig.REGISTER_NUMBER.getKey()).getData();
// return AjaxResult.success(resultMap); int phoneCount = iCuMemberService.count(Wrappers.<CuMember>lambdaQuery()
// } .eq(CuMember::getPhone, registerParam.getPhone())
// return AjaxResult.error(); .eq(CuMember::getDelFlag, EDelFlag.UN_DELETE.getValue())
// } .eq(CuMember::getCategory, ECategory.NORMAL.getValue())
);
if (phoneCount > Integer.parseInt(value)) {
return AjaxResult.error("会员信息已存在");
}
CuMember newCuMember = iCuMemberService.shareRegisterMember(registerParam);
if (null != newCuMember) {
// 自动登录 uuid 标记
String uuid = IdUtils.simpleUUID();
// 根据会员编号放一个登录 uuid 做为自动登录校验使用60分钟有效
redisService.setCacheObject(CacheConstants.AUTO_LOGIN + newCuMember.getMemberCode(), uuid, CacheConstants.LOGIN_TOKEN_REFRESH_TIME, TimeUnit.MINUTES);
MemberShare memberShare = MemberShare.builder()
.memberCode(newCuMember.getMemberCode())
.memberName(newCuMember.getMemberName())
.phone(newCuMember.getPhone())
.loginPassword(newCuMember.getLoginPassword())
.payPassword(newCuMember.getPayPassword())
.urlAddress(BdConfig.getPc())
.uuid(uuid)
.build();
return AjaxResult.success(memberShare);
} else {
return AjaxResult.error("注册失败,请重试");
}
}
} }

View File

@ -0,0 +1,47 @@
package com.hzs.member.share.param;
import com.hzs.common.domain.member.base.CuMember;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.io.Serializable;
/**
* 分享注册入参
*/
@Data
public class ShareRegisterParam implements Serializable {
/**
* 推荐编号
*/
@NotEmpty(message = "推荐编号不能为空")
@Size(max = 20, message = "推荐编号不能超过20位")
private String parentCode;
/**
* 会员姓名
*/
@NotEmpty(message = "会员姓名不能为空")
@Size(max = 40, message = "会员姓名不能超过40位")
private String memberName;
/**
* 联系方式
*/
@NotEmpty(message = "联系方式不能为空")
@Size(max = 40, message = "联系方式不能超过40位")
private String phone;
/**
* 推荐会员
*/
private CuMember parentMember;
/**
* 数据来源 -- EDataSource
*/
private Integer source;
}

View File

@ -89,6 +89,10 @@ public class MemberStructureController extends BaseController {
CuMember member = iCuMemberService.getMemberByCode(memberCode); CuMember member = iCuMemberService.getMemberByCode(memberCode);
if (null != member) { if (null != member) {
pkMember = member.getPkId(); pkMember = member.getPkId();
if (null == member.getPkPlaceParent()) {
// 0元会员返回为空
return AjaxResult.success();
}
} }
} }
if (null == pkMember) { if (null == pkMember) {

View File

@ -1044,9 +1044,7 @@
ba.pk_transaction awards, ba.pk_transaction awards,
bam.pk_transaction max_awards, bam.pk_transaction max_awards,
bc.short_name country_name, bc.short_name country_name,
bc.pk_transaction pk_country_transaction,
bcs.short_name settle_country_name, bcs.short_name settle_country_name,
bcs.pk_transaction pk_settle_country_transaction,
cmau.id_card id_card_auth cmau.id_card id_card_auth
from cu_member cm from cu_member cm
left join BD_GRADE bgr left join BD_GRADE bgr

View File

@ -7,7 +7,6 @@ import com.hzs.common.domain.system.base.BdCurrency;
import com.hzs.common.domain.system.config.BdAwards; import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.domain.system.config.BdGrade; import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.system.base.ICurrencyServiceApi; import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.base.service.IBdCountryService; import com.hzs.system.base.service.IBdCountryService;
import com.hzs.system.base.service.IBdCurrencyService; import com.hzs.system.base.service.IBdCurrencyService;
import com.hzs.system.common.ICommonServiceApi; import com.hzs.system.common.ICommonServiceApi;
@ -18,11 +17,7 @@ import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
/** /**
* @Description: 公用dubbo接口 * 公用dubbo接口
* @Author: jiang chao
* @Time: 2023/1/10 16:10
* @Classname: CommonServiceProvider
* @PackageName: com.hzs.system.common.provider
*/ */
@DubboService @DubboService
public class CommonServiceProvider implements ICommonServiceApi { public class CommonServiceProvider implements ICommonServiceApi {
@ -35,20 +30,15 @@ public class CommonServiceProvider implements ICommonServiceApi {
private IBdAwardsService iBdAwardsService; private IBdAwardsService iBdAwardsService;
@Autowired @Autowired
private IBdCurrencyService iBdCurrencyService; private IBdCurrencyService iBdCurrencyService;
@Autowired
private ICurrencyServiceApi iCurrencyServiceApi;
@Override @Override
public R<MemberDataDTO> getMemberData(MemberDataDTO memberDataDTO) { public R<MemberDataDTO> getMemberData(MemberDataDTO memberDataDTO) {
// 自然国 // 自然国
if (null != memberDataDTO.getPkCountry()) { if (null != memberDataDTO.getPkCountry()) {
BdCountry bdCountry = iBdCountryService.getCountry(memberDataDTO.getPkCountry()); BdCountry bdCountry = iBdCountryService.getCountry(memberDataDTO.getPkCountry());
if (null != bdCountry) { if (null != bdCountry) {
memberDataDTO.setPkCountryVal(bdCountry.getShortName()); memberDataDTO.setPkCountryVal(bdCountry.getShortName());
memberDataDTO.setCountryCircularIcon(bdCountry.getNationalFlag1()); memberDataDTO.setCountryCircularIcon(bdCountry.getNationalFlag1());
memberDataDTO.setCountrySquareIcon(bdCountry.getNationalFlag2());
memberDataDTO.setPkCountryTransaction(bdCountry.getPkTransaction());
} }
} }
// 结算国 // 结算国
@ -57,17 +47,8 @@ public class CommonServiceProvider implements ICommonServiceApi {
if (null != bdSettleCountry) { if (null != bdSettleCountry) {
memberDataDTO.setPkSettleCountryVal(bdSettleCountry.getShortName()); memberDataDTO.setPkSettleCountryVal(bdSettleCountry.getShortName());
memberDataDTO.setSettleCountryCircularIcon(bdSettleCountry.getNationalFlag1()); memberDataDTO.setSettleCountryCircularIcon(bdSettleCountry.getNationalFlag1());
memberDataDTO.setSettleCountrySquareIcon(bdSettleCountry.getNationalFlag2());
memberDataDTO.setSettleCountryLightName(bdSettleCountry.getLightName());
memberDataDTO.setSettleCountryImg(bdSettleCountry.getImg());
memberDataDTO.setPkSettleCountryTransaction(bdSettleCountry.getPkTransaction());
} }
// 汇率
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(memberDataDTO.getPkSettleCountry()).getData();
memberDataDTO.setExchangeRate(currencyDTO.getInExchangeRate());
} }
// 等级 // 等级
if (null != memberDataDTO.getPkGrade()) { if (null != memberDataDTO.getPkGrade()) {
BdGrade bdGrade = iBdGradeService.getBdGrade(memberDataDTO.getPkGrade()); BdGrade bdGrade = iBdGradeService.getBdGrade(memberDataDTO.getPkGrade());
@ -89,17 +70,6 @@ public class CommonServiceProvider implements ICommonServiceApi {
} }
} }
} }
// // 荣誉奖衔
// if (null != memberDataDTO.getPkMaxAwards()) {
// BdAwards bdAwards = iBdAwardsService.getBdAwardsOne(memberDataDTO.getPkMaxAwards());
// if (null != bdAwards) {
// memberDataDTO.setPkMaxAwards(bdAwards.getPkTransaction());
// if (EAwards.MEMBER.getValue() != bdAwards.getAwardsValue()) {
// // 奖衔如果是会员级别不返回图标
// memberDataDTO.setMaxAwardsIcon(bdAwards.getImage());
// }
// }
// }
// 币种 // 币种
if (null != memberDataDTO.getPkSettleCountry()) { if (null != memberDataDTO.getPkSettleCountry()) {
BdCurrency bdCurrency = iBdCurrencyService.getCurrency(memberDataDTO.getPkSettleCountry()); BdCurrency bdCurrency = iBdCurrencyService.getCurrency(memberDataDTO.getPkSettleCountry());

View File

@ -325,4 +325,9 @@ public class CacheConstants {
*/ */
public final static String RETAIL_REGION = CACHE_PREFIX + "retail:region:%s:%s:%s"; public final static String RETAIL_REGION = CACHE_PREFIX + "retail:region:%s:%s:%s";
/**
* 自动登录缓存KEY
*/
public final static String AUTO_LOGIN = CACHE_PREFIX + "auth:login:";
} }

View File

@ -6,8 +6,6 @@ import lombok.Getter;
/** /**
* 账户状态会员登录账号状态 * 账户状态会员登录账号状态
*
* @author: hzs
*/ */
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter

View File

@ -11,10 +11,6 @@ import lombok.Getter;
@Getter @Getter
public enum EAwards { public enum EAwards {
// /**
// * -1=海粉
// */
// SEA_FLOUR(0,-1, "海粉", 1, EnumsPrefixConstants.AWARDS + "-1"),
/** /**
* 0=会员 -- Q0 * 0=会员 -- Q0
*/ */
@ -114,28 +110,4 @@ public enum EAwards {
*/ */
private final String key; private final String key;
public static String getAwards(int value) {
for (EAwards eAwards : EAwards.values()) {
if (eAwards.value == value) {
return eAwards.label;
}
}
return null;
}
public static Integer getGradeValueByValue(int value) {
if (EGrade.START_UP.getValue() == value) {
return EAwards.MEMBER.getValue();
} else if (EGrade.HAI_FAN.getValue() == value) {
return EAwards.HEADER.getValue();
} else if (EGrade.YOU_KE.getValue() == value) {
return EAwards.MANAGER.getValue();
} else if (EGrade.MAKER.getValue() == value) {
return EAwards.HIGH_MANAGER.getValue();
} else if (EGrade.VIP.getValue() == value) {
return EAwards.SENIOR_MANAGER.getValue();
} else if (EGrade.S_VIP.getValue() == value) {
return EAwards.CHIEF.getValue();
}
return 0;
}
} }

View File

@ -6,8 +6,6 @@ import lombok.Getter;
/** /**
* 注册权限枚举类 * 注册权限枚举类
*
* @author hzs
*/ */
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter

View File

@ -182,6 +182,9 @@ security:
- /member/api/member/fans-order/* - /member/api/member/fans-order/*
# 库存商品同步 # 库存商品同步
- /sale/api/all-product/sync-data - /sale/api/all-product/sync-data
# 0元注册白名单
- /member/api/share/find-share-code/*
- /member/api/share/share-register
# 日志配置 # 日志配置
logging: logging: