package com.sinata.rest.modular.member.service.impl;
|
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.sinata.common.enums.*;
|
import com.sinata.common.enums.mall.EnumMallGoodsGroupType;
|
import com.sinata.rest.common.ApiUtils;
|
import com.sinata.rest.core.easemob.ConstEasemobKeyPrefix;
|
import com.sinata.rest.core.easemob.EasemobApi;
|
import com.sinata.rest.core.easemob.HttpRequestUtil;
|
import com.sinata.rest.core.util.SqlUtil;
|
import com.sinata.rest.core.util.ToolUtil;
|
import com.sinata.rest.modular.mall.controller.body.BodyApplySaleUser;
|
import com.sinata.rest.modular.mall.controller.body.BodyUserRegister;
|
import com.sinata.rest.modular.mall.controller.vo.VoUserAndShareInfo;
|
import com.sinata.rest.modular.mall.model.MallOrder;
|
import com.sinata.rest.modular.mall.service.IMallOrderService;
|
import com.sinata.rest.modular.member.controller.common.body.BodyRegister;
|
import com.sinata.rest.modular.member.dao.MemUserMapper;
|
import com.sinata.rest.modular.member.model.MemUser;
|
import com.sinata.rest.modular.member.model.MemUserBankDetail;
|
import com.sinata.rest.modular.member.model.MemUserRelation;
|
import com.sinata.rest.modular.member.model.MemUserShowId;
|
import com.sinata.rest.modular.member.service.IMemUserBankDetailService;
|
import com.sinata.rest.modular.member.service.IMemUserRelationService;
|
import com.sinata.rest.modular.member.service.IMemUserService;
|
import com.sinata.rest.modular.member.service.IMemUserShowIdService;
|
import com.sinata.rest.modular.system.model.SystemNotice;
|
import com.sinata.rest.modular.system.service.ISmsRecordService;
|
import com.sinata.rest.modular.system.service.ISystemSetService;
|
import java.util.List;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Isolation;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.StringUtils;
|
|
import java.math.BigDecimal;
|
import java.time.LocalDateTime;
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
/**
|
* <p>
|
* 会员用户信息 服务实现类
|
* </p>
|
*
|
* @author goku
|
* @since 2023-03-23
|
*/
|
@Slf4j
|
@Service
|
public class MemUserServiceImpl extends ServiceImpl<MemUserMapper, MemUser> implements IMemUserService {
|
|
@Autowired
|
private IMemUserRelationService relationService;
|
|
@Autowired
|
private ISmsRecordService smsRecordService;
|
|
@Autowired
|
private IMallOrderService mallOrderService;
|
|
@Autowired
|
private IMemUserRelationService memUserRelationService;
|
|
@Autowired
|
private IMemUserShowIdService showIdService;
|
|
@Autowired
|
private ISystemSetService systemSetService;
|
|
|
@Autowired
|
private IMemUserBankDetailService memoryUserBankDetailService;
|
|
//ShowId最新记录(禁止直接使用)
|
private static AtomicInteger showIdCounter = null;
|
|
private MemUserShowId showId;
|
|
public AtomicInteger getShowIdCounter() {
|
if (showIdCounter == null) {
|
synchronized (MemUserServiceImpl.class) {
|
if (showIdCounter == null) {
|
showId = showIdService.getById(1);
|
if (showId != null) {
|
showIdCounter = new AtomicInteger(-1);
|
showIdCounter.set(showId.getShowId());
|
} else {
|
MemUser last = baseMapper.selectLast();
|
showIdCounter.set(Integer.parseInt(last.getShowId()));
|
}
|
}
|
}
|
}
|
return showIdCounter;
|
}
|
|
@Override
|
@Transactional(isolation = Isolation.READ_COMMITTED)
|
public String registerUser(BodyRegister register) {
|
//验证手机号是否注册
|
LambdaQueryWrapper<MemUser> wrapper = new LambdaQueryWrapper();
|
wrapper.eq(MemUser::getPhone, register.phone);
|
if (getOne(wrapper) != null) {
|
return "该手机号已被注册";
|
}
|
/* //验证邀请码是否存在
|
LambdaQueryWrapper<MemUserRelation> relationWrapper = new LambdaQueryWrapper();
|
relationWrapper.eq(MemUserRelation::getInviteCode, register.inviteCode);
|
MemUserRelation relation = relationService.getOne(relationWrapper);
|
if (relation == null) {
|
return "邀请码无效";
|
}
|
if (!isAuth(relation.getId())) {
|
return "邀请码无效";
|
}
|
//验证验证码
|
String msg = smsRecordService.verifyCode(1, register.phone, register.code);
|
if (!StringUtils.isEmpty(msg)) {
|
return msg;
|
}*/
|
//生成用户
|
MemUser user = new MemUser();
|
user.setShowId("0");
|
user.setPhone(register.phone);
|
user.setPassword(register.password);
|
user.setCityCode(register.cityCode);
|
user.setNickName("用户" + ToolUtil.getRandomString(4));
|
user.setMemberGradeId(EnumMemberGrade.G_1.index);
|
user.setWxOpenId(register.getWxOpenId());
|
user.insert();
|
|
if (register.shareUserId != null) {
|
// 推荐新用户注册成功各自获得X积分
|
this.addIntegralShare(user.getId(), register.shareUserId);
|
}
|
|
/* //环信注册
|
RingLetterRegister(user.getId(), null);
|
//生成Bank记录
|
MemUserBank bank = new MemUserBank();
|
bank.setId(user.getId());
|
bank.setCreditScore(score);
|
bank.insert();
|
//生成Relation记录
|
MemUserRelation rel = new MemUserRelation();
|
rel.setId(user.getId());
|
rel.setInviteCode(user.getShowId());
|
rel.setParentId(relation.getId());
|
rel.setRelationPath(relation.getRelationPath() + "/" + user.getId());
|
rel.insert();
|
//更新直接邀请者的邀请人数
|
relation.setInviteCount(relation.getInviteCount() + 1);
|
relation.updateById();
|
//可能会更新邀请者等级
|
msg = gradeService.checkAndUpdateGradeWhenMemberGradeChange(user.getId(), EnumMemberGrade.G_1.index);
|
//如果注册都没有问题就把当前正常id存进数据库
|
if (StringUtils.isEmpty(msg) && showId != null) {
|
AtomicInteger counter = getShowIdCounter();
|
synchronized (counter) {
|
showId.setShowId(counter.get());
|
showIdService.saveOrUpdate(showId);
|
}
|
}*/
|
return "";
|
}
|
|
@Transactional(isolation = Isolation.READ_COMMITTED)
|
@Override
|
public String mallRegisterUser(BodyUserRegister register) {
|
//验证手机号是否被绑定
|
LambdaQueryWrapper<MemUser> wrapper = new LambdaQueryWrapper();
|
wrapper.eq(MemUser::getPhone, register.getPhone());
|
if (getOne(wrapper) != null) {
|
return "该手机号已被注册";
|
}
|
//验证验证码
|
String msg = smsRecordService.verifyCode(1, register.getPhone(), register.getCode());
|
if (!StringUtils.isEmpty(msg)) {
|
return msg;
|
}
|
//验证邀请码是否存在
|
LambdaQueryWrapper<MemUserRelation> relationWrapper = new LambdaQueryWrapper();
|
relationWrapper.eq(MemUserRelation::getInviteCode, register.getInviteCode());
|
MemUserRelation relation = relationService.getOne(relationWrapper);
|
if (relation == null) {
|
return "邀请码无效";
|
}
|
if (!isAuth(relation.getId())) {
|
return "邀请码无效";
|
}
|
|
//生成用户
|
MemUser user = new MemUser();
|
user.setShowId(generateShowId());
|
user.setPhone(register.getPhone());
|
user.setPassword(register.getPassword());
|
user.setCityCode(register.getCityCode());
|
if (org.apache.commons.lang3.StringUtils.isNotBlank(register.getTripartiteAvatar())) {
|
user.setAvatar(register.getTripartiteAvatar());
|
}
|
if (org.apache.commons.lang3.StringUtils.isNotBlank(register.getTripartiteNickname())) {
|
user.setNickName(register.getTripartiteNickname());
|
} else {
|
user.setNickName("用户" + ToolUtil.getRandomString(4));
|
}
|
user.setMemberGradeId(EnumMemberGrade.G_1.index);
|
if (register.getType() == 1) {
|
user.setWxOpenId(register.getWxOpenId());
|
} else if (register.getType() == 2) {
|
user.setQqAccount(register.getQqAccount());
|
} else if (register.getType() == 3) {
|
user.setAppleOpenId(register.getAppleOpenId());
|
}
|
user.insert();
|
//环信注册
|
RingLetterRegister(user.getId(), null);
|
//生成Relation记录
|
MemUserRelation rel = new MemUserRelation();
|
rel.setId(user.getId());
|
rel.setInviteCode(user.getShowId());
|
rel.setParentId(relation.getId());
|
rel.setRelationPath(relation.getRelationPath() + "/" + user.getId());
|
rel.insert();
|
//更新直接邀请者的邀请人数
|
relation.setInviteCount(relation.getInviteCount() + 1);
|
relation.updateById();
|
//如果注册都没有问题就把当前正常id存进数据库
|
if (StringUtils.isEmpty(msg) && showId != null) {
|
AtomicInteger counter = getShowIdCounter();
|
synchronized (counter) {
|
showId.setShowId(counter.get());
|
showIdService.saveOrUpdate(showId);
|
}
|
}
|
return msg;
|
}
|
|
@Override
|
public String editUserPhone(Integer userId, String phone) {
|
synchronized (phone.intern()) {
|
LambdaQueryWrapper<MemUser> wr = new LambdaQueryWrapper<>();
|
wr.eq(MemUser::getPhone, phone);
|
MemUser u = getOne(wr);
|
if (u == null) {
|
u = getById(userId);
|
if (u == null) {
|
return "用户不存在";
|
}
|
u.setPhone(phone);
|
saveOrUpdate(u);
|
} else {
|
return "该手机号已被绑定";
|
}
|
}
|
return "";
|
}
|
|
@Override
|
public Boolean isAuth(Integer userId) {
|
MemUser u = getById(userId);
|
if (u == null) {
|
return false;
|
}
|
if (null == u.getRealName()) {
|
return false;
|
}
|
if (null == u.getIdCard()) {
|
return false;
|
}
|
if (0 != u.getIsLock()) {
|
return false;
|
}
|
return 0 == u.getIsDelete();
|
}
|
|
@Override
|
public Object RingLetterRegister(Integer userId, String nickname) {
|
String username = ConstEasemobKeyPrefix.USER + userId;
|
// 【环信注册】
|
Map<String, Object> reqMap = new HashMap<>(3);
|
reqMap.put("username", username); // 环信 ID ;也就是 IM 用户名的唯一登录账号
|
reqMap.put("password", EasemobApi.password);// 登录密码
|
if (ToolUtil.isNotEmpty(nickname)) {
|
reqMap.put("nickname", nickname);// 昵称(可选),在 iOS Apns 推送时会使用的昵称
|
}
|
// 请求注册接口
|
String postResult = HttpRequestUtil.post(EasemobApi.registerUrl, JSON.toJSONString(reqMap), null);
|
Map resultJson = ToolUtil.fromJson(postResult, Map.class);
|
if (resultJson != null) {
|
String error = "error_description";
|
String exitError = "duplicate_unique_property_exists";
|
if (resultJson.containsKey(error) && !resultJson.containsValue(exitError)) {
|
return ApiUtils.returnNG(null,"环信注册失败!");
|
} else {
|
MemUser user = new MemUser();
|
user.setImAccount(username);
|
user.setImPassword(EasemobApi.password);
|
user.setId(userId);
|
user.updateById();
|
}
|
|
// 封装数据
|
Map<String, Object> map = new HashMap<>();
|
map.put("imAccount", username); // 环信 id ;也就是 im 用户名的唯一登录账号
|
map.put("imPassword", EasemobApi.password);// 登录密码
|
return map;
|
}
|
return null;
|
}
|
|
@Override
|
public Integer updateWxOpenId(Integer id) {
|
return baseMapper.updateWxOpenId(id);
|
}
|
|
@Override
|
public Integer updateQqAccount(Integer id) {
|
return baseMapper.updateQqAccount(id);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void bindWx(String wxOpenId, String wxName, Integer userId) {
|
MemUser user = baseMapper.selectById(userId);
|
user.setWxOpenId(wxOpenId);
|
user.updateById();
|
}
|
|
//判断是不是限制号或者已注册的号
|
private boolean isLockedId(Integer id) {
|
LambdaQueryWrapper<MemUserShowId> wr = new LambdaQueryWrapper<>();
|
wr.eq(MemUserShowId::getShowId, id).or(or -> or.eq(MemUserShowId::getId, 1).gt(MemUserShowId::getShowId, id));
|
return showIdService.count(wr) > 0;
|
}
|
|
private String generateShowId() {
|
AtomicInteger counter = getShowIdCounter();
|
synchronized (counter) {
|
int i = 1;
|
int next = counter.get() + i;
|
while (isLockedId(next)) {
|
i++;
|
next = counter.get() + i;
|
}
|
counter.getAndAdd(i);
|
return String.valueOf(next);
|
}
|
}
|
|
@Override
|
public Boolean deleteUser(Integer userId) {
|
return baseMapper.deleteUser(userId);
|
}
|
|
@Override
|
public Integer updateUserGradeByCreditScore(Integer creditScoreSetId, Integer byGrade, Integer setGrade) {
|
return baseMapper.updateUserGradeByCreditScore(creditScoreSetId, byGrade, setGrade);
|
}
|
|
@Override
|
public VoUserAndShareInfo getUserAndSharerById(Integer userId) {
|
return baseMapper.getUserAndSharerById(userId);
|
}
|
|
@Override
|
@Transactional
|
public ApiUtils applySaleUser(BodyApplySaleUser body) {
|
log.info("推荐他人入司,入参:{}", body);
|
MallOrder mallOrder = mallOrderService.getById(body.getOrderNo());
|
log.info("推荐他人入司,订单:{}", mallOrder);
|
if (mallOrder == null || mallOrder.getOrderType() == EnumMallGoodsGroupType.GOODS.index || mallOrder.getUseUserId() != 0) {
|
return ApiUtils.returnNG("订单信息无效!");
|
}
|
|
// 获取邀请人信息
|
MemUserRelation shareUserRelation = memUserRelationService.getById(mallOrder.getSaleUserId());
|
if (shareUserRelation == null) {
|
return ApiUtils.returnNG("销售员信息无效!");
|
}
|
|
MemUser user = body.getId() != null ? this.getById(body.getId()) : null;
|
if (user == null) {
|
// 查询用户手机是否注册
|
user = this.getOne(
|
Wrappers.<MemUser>query().lambda()
|
.eq(MemUser::getPhone, body.getPhone())
|
.eq(MemUser::getIsDelete, EnumIsDelete.EXISTED.index)
|
.last("LIMIT 1")
|
);
|
if (user == null) {
|
// 注册流程
|
user = MemUser.builder()
|
.id(body.getId())
|
.nickName("用户" + RandomUtil.randomString(4))
|
.phone(body.getPhone())
|
.cardType(body.getCardType())
|
.realName(body.getRealName())
|
.idCard(body.getIdCard())
|
.sex(body.getSex())
|
.birthday(body.getBirthday())
|
.bankName(body.getBankName())
|
.bankOpen(body.getBankOpen())
|
.bankNumber(body.getBankNumber())
|
.idCardFrontImage(body.getIdCardFrontImage())
|
.idCardBackImage(body.getIdCardBackImage())
|
.idCardHandImage(body.getIdCardHandImage())
|
.signImage(body.getSignImage())
|
.equityUserId(mallOrder.getUserId())
|
.equityOrderNo(mallOrder.getOrderNo())
|
.isLeaveOffice(1)
|
.applyTime(DateUtil.date())
|
.auditState(EnumAuditState.WAIT_AUDIT.index)
|
.build();
|
user.insert();
|
} else {
|
if (user.getMemberGradeId() >= EnumMemberGrade.G_3.index && user.getIsLeaveOffice() == 0) {
|
return ApiUtils.returnNG("该用户已经申请入司!");
|
}
|
|
// 更新入司用户信息
|
applySaleUserUpdate(body, user, mallOrder.getUserId(), mallOrder.getOrderNo());
|
}
|
} else {
|
if (user.getMemberGradeId() >= EnumMemberGrade.G_3.index && user.getIsLeaveOffice() == 0) {
|
return ApiUtils.returnNG("该用户已经申请入司!");
|
}
|
|
// 更新入司用户信息
|
applySaleUserUpdate(body, user, mallOrder.getUserId(), mallOrder.getOrderNo());
|
}
|
// 当用户已申请并通过成为营销员,用户所在城市需显示营销员的城市,营销员的城市取套餐推荐人的所在城市
|
MemUser saleUser = this.getById(mallOrder.getSaleUserId());
|
if (saleUser != null && StrUtil.isNotBlank(saleUser.getCityCode())) {
|
String province = StrUtil.sub(saleUser.getCityCode(), 0, 2) + "0000";
|
String city = StrUtil.sub(saleUser.getCityCode(), 0, 4) + "00";
|
String county = saleUser.getCityCode();
|
user.setAgentProvinceCode(province);
|
user.setAgentCityCode(city);
|
user.setAgentCountyCode(county);
|
user.updateById();
|
}
|
|
// if (mallOrder.getUseUserId() != null && !mallOrder.getUseUserId().equals(mallOrder.getUserId())) {
|
// // 被推荐使用权益的
|
// MemUserRelation orderUserRelation = memUserRelationService.getById(mallOrder.getUserId());
|
// if (orderUserRelation != null) {
|
// MemUserRelation.builder()
|
// .id(user.getId())
|
// .parentId(orderUserRelation.getId())
|
// .relationPath(orderUserRelation.getRelationPath() + "/" + user.getId())
|
// .build().insert();
|
// } else {
|
// MemUserRelation.builder()
|
// .id(user.getId())
|
// .parentId(shareUserRelation.getId())
|
// .relationPath(shareUserRelation.getRelationPath() + "/" + user.getId())
|
// .build().insert();
|
// }
|
// } else {
|
// 添加更新用户关系
|
memUserRelationService.saveOrUpdate(
|
MemUserRelation.builder()
|
.id(user.getId())
|
.parentId(shareUserRelation.getId())
|
.relationPath(shareUserRelation.getRelationPath() + "/" + user.getId())
|
.build()
|
);
|
// }
|
|
// 订单材料受赠人,0未申请入司
|
mallOrder.setUseUserId(user.getId());
|
mallOrder.updateById();
|
|
return ApiUtils.returnOK();
|
}
|
|
public void applySaleUserUpdate(BodyApplySaleUser body, MemUser user, Integer equityUserId, String equityOrderNo) {
|
// 判断是否已经申请入司
|
Assert.isFalse(user.getAuditState()==1 && user.getIsLeaveOffice() == 0, "该用户已有入司申请!");
|
|
user = user.setCardType(body.getCardType())
|
.setRealName(body.getRealName())
|
.setIdCard(body.getIdCard())
|
.setSex(body.getSex())
|
.setBirthday(body.getBirthday())
|
.setBankName(body.getBankName())
|
.setBankOpen(body.getBankOpen())
|
.setBankNumber(body.getBankNumber())
|
.setIdCardFrontImage(body.getIdCardFrontImage())
|
.setIdCardBackImage(body.getIdCardBackImage())
|
.setIdCardHandImage(body.getIdCardHandImage())
|
.setSignImage(body.getSignImage())
|
.setEquityUserId(equityUserId)
|
.setEquityOrderNo(equityOrderNo)
|
.setIsLeaveOffice(1)
|
.setApplyTime(DateUtil.date())
|
.setAuditState(EnumAuditState.WAIT_AUDIT.index);
|
user.updateById();
|
|
SystemNotice.builder()
|
.param(user.getId())
|
.type(EnumIsSystemNotice.TYPE_1.index)
|
.content("平台有新的营销员入司申请,请核实审核!")
|
.build()
|
.insert();
|
}
|
|
@Override
|
@Transactional
|
public void addIntegralOrder(Integer userId, BigDecimal orderAmount, String orderNo) {
|
BigDecimal set101 = systemSetService.getBigDecimalById(EnumSystemSetKey.SET_101.index);
|
BigDecimal set102 = systemSetService.getBigDecimalById(EnumSystemSetKey.SET_102.index);
|
|
// 计算增加积分
|
BigDecimal addIntegral = BigDecimal.ZERO;
|
if (set101.compareTo(BigDecimal.ZERO) != 0) {
|
addIntegral = orderAmount.multiply(set102).divide(set101);
|
}
|
if (addIntegral.compareTo(BigDecimal.ZERO) > 0) {
|
// 获取用户信息
|
MemUser user = this.getById(userId);
|
if (user != null) {
|
BigDecimal oldAmount = user.getIntegral();
|
// 增加积分
|
user.setIntegral(user.getIntegral().add(addIntegral));
|
this.updateById(user);
|
|
// 添加账户明细记录
|
MemUserBankDetail.builder()
|
.type(EnumUserBankDetailType.INTEGRAL.index)
|
.doneType(EnumUserBankDetailDoneType.ADD_INTEGRAL_ORDER)
|
.mark(EnumUserBankDetailDoneType.ADD_INTEGRAL_ORDER.mark)
|
.userId(userId)
|
.amount(addIntegral)
|
.oldAmount(oldAmount)
|
.orderNo(orderNo)
|
.build()
|
.insert();
|
}
|
}
|
}
|
|
@Override
|
@Transactional
|
public void subIntegralCancelOrder(String orderNo) {
|
MemUserBankDetail bankDetail = memoryUserBankDetailService.getOne(
|
Wrappers.<MemUserBankDetail>query().lambda()
|
.eq(MemUserBankDetail::getOrderNo, orderNo)
|
.last("LIMIT 1")
|
);
|
|
if (bankDetail != null) {
|
// 计算增加积分
|
BigDecimal subIntegral = bankDetail.getAmount().multiply(BigDecimal.valueOf(-1));
|
if (subIntegral.compareTo(BigDecimal.ZERO) <= 0) {
|
// 获取用户信息
|
MemUser user = this.getById(bankDetail.getUserId());
|
if (user != null) {
|
BigDecimal oldAmount = user.getIntegral();
|
// 增加积分
|
user.setIntegral(user.getIntegral().add(subIntegral));
|
this.updateById(user);
|
|
// 添加账户明细记录
|
bankDetail
|
.setId(null)
|
.setType(EnumUserBankDetailType.INTEGRAL.index)
|
.setDoneType(EnumUserBankDetailDoneType.SUB_INTEGRAL_CANCEL_ORDER)
|
.setMark(EnumUserBankDetailDoneType.SUB_INTEGRAL_CANCEL_ORDER.mark)
|
.setOldAmount(oldAmount)
|
.setAmount(subIntegral)
|
.setCreateTime(LocalDateTime.now())
|
.insert();
|
}
|
}
|
}
|
|
}
|
|
@Override
|
@Transactional
|
public void addIntegralShare(Integer userId, Integer beUserId) {
|
BigDecimal addIntegral = systemSetService.getBigDecimalById(EnumSystemSetKey.SET_103.index);
|
|
// 获取用户信息
|
MemUser user = this.getById(userId);
|
if (user != null) {
|
BigDecimal oldAmount = user.getIntegral();
|
// 增加积分
|
user.setIntegral(user.getIntegral().add(addIntegral));
|
this.updateById(user);
|
|
// 添加账户明细记录
|
MemUserBankDetail.builder()
|
.type(EnumUserBankDetailType.INTEGRAL.index)
|
.doneType(EnumUserBankDetailDoneType.ADD_INTEGRAL_SHARE)
|
.mark(EnumUserBankDetailDoneType.ADD_INTEGRAL_SHARE.mark)
|
.userId(userId)
|
.amount(addIntegral)
|
.oldAmount(oldAmount)
|
.build()
|
.insert();
|
}
|
// 获取用户信息
|
MemUser beUser = this.getById(beUserId);
|
if (beUser != null) {
|
BigDecimal oldAmount = beUser.getIntegral();
|
// 增加积分
|
beUser.setIntegral(beUser.getIntegral().add(addIntegral));
|
this.updateById(beUser);
|
|
// 添加账户明细记录
|
MemUserBankDetail.builder()
|
.type(EnumUserBankDetailType.INTEGRAL.index)
|
.doneType(EnumUserBankDetailDoneType.ADD_INTEGRAL_SHARE)
|
.mark(EnumUserBankDetailDoneType.ADD_INTEGRAL_SHARE.mark)
|
.userId(beUserId)
|
.amount(addIntegral)
|
.oldAmount(oldAmount)
|
.build()
|
.insert();
|
}
|
}
|
|
@Override
|
@Transactional
|
public void addIntegralShareCommission(Integer userId, BigDecimal orderAmount) {
|
BigDecimal set105 = systemSetService.getBigDecimalById(EnumSystemSetKey.SET_105.index);
|
|
BigDecimal addIntegral = orderAmount.multiply(set105);
|
|
// 获取用户信息
|
MemUser user = this.getById(userId);
|
if (user != null) {
|
BigDecimal oldAmount = user.getIntegral();
|
// 增加积分
|
user.setIntegral(user.getIntegral().add(addIntegral));
|
this.updateById(user);
|
|
// 添加账户明细记录
|
MemUserBankDetail.builder()
|
.type(EnumUserBankDetailType.INTEGRAL.index)
|
.doneType(EnumUserBankDetailDoneType.ADD_INTEGRAL_SHARE_COMMISSION)
|
.mark(EnumUserBankDetailDoneType.ADD_INTEGRAL_SHARE_COMMISSION.mark)
|
.userId(userId)
|
.amount(addIntegral)
|
.oldAmount(oldAmount)
|
.build()
|
.insert();
|
}
|
}
|
|
@Override
|
public List<MemUser> queryLevelUpUserList() {
|
return baseMapper.queryLevelUpUserList();
|
}
|
}
|