shopUserService额外处理

This commit is contained in:
2025-12-05 14:31:59 +08:00
parent 0879143285
commit 8632fac9b4
7 changed files with 147 additions and 145 deletions

View File

@@ -35,6 +35,7 @@ import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
@@ -48,28 +49,28 @@ import java.util.List;
* @since 2025-02-08
*/
@Slf4j
@DubboService
@Service
public class AShopUserServiceImpl implements AShopUserService {
@Resource
private ShopUserService shopUserService;
@Resource
private ShopUserMapper shopUserMapper;
@Resource
private ShopInfoService shopInfoService;
@Resource
private UserInfoService userInfoService;
@DubboReference
private SysParamsService sysParamsService;
@DubboReference
private OrderInfoService orderInfoService;
@Resource
private UserInfoService userInfoService;
@DubboReference
private MkShopCouponRecordService couponRecordService;
@Resource
private ShopInfoService shopInfoService;
@DubboReference
private MemberLevelConfigService memberLevelConfigService;
@DubboReference
private TbMemberConfigService memberConfigService;
@DubboReference
private MkShopConsumeDiscountRecordService consumeDiscountService;
// @DubboReference
// private MkShopConsumeDiscountRecordService consumeDiscountService;
private ShopUser getUserInfo(Long shopUserId) {
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getId, shopUserId).one();
@@ -136,15 +137,6 @@ public class AShopUserServiceImpl implements AShopUserService {
}
}
@Override
public List<ShopUser> getPushEventUserList(SmsPushEventUser smsPushEventUser) {
Long mainShopId = shopInfoService.getMainIdByShopId(smsPushEventUser.getShopId());
smsPushEventUser.checkIsAll();
// 调用Mapper层查询
List<ShopUser> shopUsers = shopUserMapper.selectPushEventUser(mainShopId,
smsPushEventUser.getShopId(), smsPushEventUser);
return shopUsers;
}
@Override
public Boolean updateInfo(Long shopId, ShopUserEditDTO shopUserEditDTO) {

View File

@@ -2,6 +2,8 @@ package com.czg.service.account.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.RandomUtil;
import com.czg.account.dto.shopuser.ShopUserAddDTO;
import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO;
import com.czg.account.entity.ShopUser;
import com.czg.account.entity.ShopUserFlow;
@@ -13,11 +15,16 @@ import com.czg.account.service.UserInfoService;
import com.czg.enums.ShopUserFlowBizEnum;
import com.czg.exception.CzgException;
import com.czg.market.entity.MemberLevelConfig;
import com.czg.market.entity.SmsPushEventUser;
import com.czg.market.service.MemberLevelConfigService;
import com.czg.market.service.OrderInfoService;
import com.czg.market.service.TbMemberConfigService;
import com.czg.market.vo.InviteUserVO;
import com.czg.market.vo.MemberConfigVO;
import com.czg.order.entity.OrderInfo;
import com.czg.service.account.mapper.ShopUserMapper;
import com.czg.system.entity.SysParams;
import com.czg.system.service.SysParamsService;
import com.czg.utils.PageUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@@ -51,9 +58,13 @@ public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> i
@Resource
private ShopInfoService shopInfoService;
@DubboReference
private OrderInfoService orderInfoService;
@DubboReference
private MemberLevelConfigService memberLevelConfigService;
@DubboReference
private TbMemberConfigService memberConfigService;
@DubboReference
private SysParamsService sysParamsService;
private ShopUser getUserInfo(Long shopUserId) {
ShopUser shopUser = queryChain().eq(ShopUser::getId, shopUserId).one();
@@ -181,4 +192,97 @@ public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> i
public void updateOneOrTwoAmount(Long shopUserId, Long shopId, BigDecimal bigDecimal, Integer isOne) {
mapper.updateOneOrTwoAmount(shopUserId, shopId, bigDecimal, isOne);
}
@Override
public List<ShopUser> getPushEventUserList(SmsPushEventUser smsPushEventUser) {
Long mainShopId = shopInfoService.getMainIdByShopId(smsPushEventUser.getShopId());
smsPushEventUser.checkIsAll();
// 调用Mapper层查询
List<ShopUser> shopUsers = mapper.selectPushEventUser(mainShopId,
smsPushEventUser.getShopId(), smsPushEventUser);
return shopUsers;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean join(Long shopId, Long userId, ShopUserAddDTO shopUserAddDTO) {
Long mainId = shopInfoService.getMainIdByShopId(shopId);
// 当前用户信息
UserInfo userInfo = userInfoService.getById(userId);
ShopUser shopUser = getShopUserInfo(shopId, userId);
// 查询系统添加的会员
UserInfo oriInfo = userInfoService.getOne(new QueryWrapper().eq(UserInfo::getPhone, shopUserAddDTO.getPhone()));
if (oriInfo != null && !oriInfo.getId().equals(userId)) {
// 迁移订单
OrderInfo orderInfo = new OrderInfo();
orderInfo.setUserId(userId);
orderInfoService.update(orderInfo, new QueryWrapper().eq(OrderInfo::getUserId, oriInfo.getId()));
// 删除多余用户信息
userInfoService.removeById(oriInfo.getId());
BeanUtil.copyProperties(oriInfo, userInfo, "id", "alipayOpenId", "wechatOpenId");
ShopUser oldUserInfo = getOne(new QueryWrapper().eq(ShopUser::getMainShopId, mainId).eq(ShopUser::getUserId, oriInfo.getId()));
if (oldUserInfo != null) {
removeById(oldUserInfo.getId());
BeanUtil.copyProperties(oldUserInfo, shopUser, "id", "userId");
}
}
BeanUtil.copyProperties(shopUserAddDTO, shopUser, "accountPoints", "amount");
BeanUtil.copyProperties(shopUserAddDTO, userInfo);
userInfoService.updateById(userInfo);
if (cn.hutool.core.util.StrUtil.isBlank(shopUser.getCode())) {
shopUser.setCode(generateCode(shopId));
}
if (cn.hutool.core.util.StrUtil.isBlank(shopUser.getBirthDay())) {
shopUser.setBirthDay(null);
}
shopUser.setJoinTime(shopUser.getJoinTime() == null ? DateUtil.date().toLocalDateTime() : shopUser.getJoinTime());
return saveOrUpdate(shopUser);
}
public String generateCode(long shopId) {
String code = "shop_user_code_val%d".formatted(shopId);
SysParams sysParam = sysParamsService.getOne(new QueryWrapper().eq(SysParams::getParamCode, code));
if (sysParam == null) {
SysParams sysParams = new SysParams()
.setParamValue("1")
.setParamType(1)
.setCreateTime(DateUtil.date().toLocalDateTime())
.setParamCode(code);
sysParamsService.save(sysParams);
return generateRandomCode(1);
}
long parseLong = Long.parseLong(sysParam.getParamValue());
long l = ++parseLong;
sysParam.setParamValue(String.valueOf(l));
sysParamsService.updateById(sysParam);
return generateRandomCode(l);
}
// 使用Hutool生成十六进制代码并随机填充字母
private String generateRandomCode(long value) {
// 生成十六进制代码确保为10位
String hexCode = String.format("%010X", value);
// 计算需要补充的字母数量
int missingLength = 10 - hexCode.length();
StringBuilder codeBuilder = new StringBuilder(hexCode);
for (int i = 0; i < missingLength; i++) {
// 生成随机字母
char randomChar = RandomUtil.randomChar("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
codeBuilder.append(randomChar);
}
return codeBuilder.toString();
}
}

View File

@@ -1,9 +1,7 @@
package com.czg.service.account.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.czg.account.dto.shopuser.ShopUserAddDTO;
import com.czg.account.dto.shopuser.ShopUserDetailDTO;
import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO;
@@ -14,14 +12,9 @@ import com.czg.config.RedisCst;
import com.czg.exception.CzgException;
import com.czg.market.entity.MkShopCouponRecord;
import com.czg.market.service.MkShopCouponRecordService;
import com.czg.market.service.TbMemberConfigService;
import com.czg.order.entity.OrderInfo;
import com.czg.market.service.OrderInfoService;
import com.czg.resp.CzgResult;
import com.czg.service.RedisService;
import com.czg.service.account.mapper.ShopConfigMapper;
import com.czg.system.entity.SysParams;
import com.czg.system.service.SysParamsService;
import com.czg.utils.AssertUtil;
import com.czg.utils.JoinQueryWrapper;
import com.czg.utils.PageUtil;
@@ -29,8 +22,7 @@ import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import jakarta.annotation.Resource;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -41,20 +33,14 @@ import java.util.List;
* @author Administrator
* @since 2025-02-08
*/
@DubboService
@Service
public class UShopUserServiceImpl implements UShopUserService {
@Resource
private ShopUserService shopUserService;
@DubboReference
private SysParamsService sysParamsService;
@DubboReference
private OrderInfoService orderInfoService;
@Resource
private UserInfoService userInfoService;
@Resource
private RedisService redisService;
@DubboReference
private MkShopCouponRecordService couponRecordService;
@Resource
private ShopInfoService shopInfoService;
@Resource
@@ -64,7 +50,7 @@ public class UShopUserServiceImpl implements UShopUserService {
@Resource
private ShopConfigMapper shopConfigMapper;
@DubboReference
private TbMemberConfigService memberConfigService;
private MkShopCouponRecordService couponRecordService;
@Override
public ShopUser getShopUserInfo(Long shopId, long userId) {
@@ -89,6 +75,11 @@ public class UShopUserServiceImpl implements UShopUserService {
return CzgResult.success(dynamicCode);
}
@Override
public boolean join(Long shopId, Long userId, ShopUserAddDTO shopUserAddDTO) {
return shopUserService.join(shopId, userId, shopUserAddDTO);
}
public String generatePaymentCode(String shopId, String platformNumber) {
// 获取当前毫秒时间戳的后四位
String date = String.format("%04d", System.currentTimeMillis() % 10000);
@@ -104,88 +95,6 @@ public class UShopUserServiceImpl implements UShopUserService {
return date + platformNumber + shopIdLastTwoDigits + randomPart;
}
public String generateCode(long shopId) {
String code = "shop_user_code_val%d".formatted(shopId);
SysParams sysParam = sysParamsService.getOne(new QueryWrapper().eq(SysParams::getParamCode, code));
if (sysParam == null) {
SysParams sysParams = new SysParams()
.setParamValue("1")
.setParamType(1)
.setCreateTime(DateUtil.date().toLocalDateTime())
.setParamCode(code);
sysParamsService.save(sysParams);
return generateRandomCode(1);
}
long parseLong = Long.parseLong(sysParam.getParamValue());
long l = ++parseLong;
sysParam.setParamValue(String.valueOf(l));
sysParamsService.updateById(sysParam);
return generateRandomCode(l);
}
// 使用Hutool生成十六进制代码并随机填充字母
private String generateRandomCode(long value) {
// 生成十六进制代码确保为10位
String hexCode = String.format("%010X", value);
// 计算需要补充的字母数量
int missingLength = 10 - hexCode.length();
StringBuilder codeBuilder = new StringBuilder(hexCode);
for (int i = 0; i < missingLength; i++) {
// 生成随机字母
char randomChar = RandomUtil.randomChar("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
codeBuilder.append(randomChar);
}
return codeBuilder.toString();
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean join(Long shopId, Long userId, ShopUserAddDTO shopUserAddDTO) {
Long mainId = shopInfoService.getMainIdByShopId(shopId);
// 当前用户信息
UserInfo userInfo = userInfoService.getById(userId);
ShopUser shopUser = shopUserService.getShopUserInfo(shopId, userId);
// 查询系统添加的会员
UserInfo oriInfo = userInfoService.getOne(new QueryWrapper().eq(UserInfo::getPhone, shopUserAddDTO.getPhone()));
if (oriInfo != null && !oriInfo.getId().equals(userId)) {
// 迁移订单
OrderInfo orderInfo = new OrderInfo();
orderInfo.setUserId(userId);
orderInfoService.update(orderInfo, new QueryWrapper().eq(OrderInfo::getUserId, oriInfo.getId()));
// 删除多余用户信息
userInfoService.removeById(oriInfo.getId());
BeanUtil.copyProperties(oriInfo, userInfo, "id", "alipayOpenId", "wechatOpenId");
ShopUser oldUserInfo = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getMainShopId, mainId).eq(ShopUser::getUserId, oriInfo.getId()));
if (oldUserInfo != null) {
shopUserService.removeById(oldUserInfo.getId());
BeanUtil.copyProperties(oldUserInfo, shopUser, "id", "userId");
}
}
BeanUtil.copyProperties(shopUserAddDTO, shopUser, "accountPoints", "amount");
BeanUtil.copyProperties(shopUserAddDTO, userInfo);
userInfoService.updateById(userInfo);
if (StrUtil.isBlank(shopUser.getCode())) {
shopUser.setCode(generateCode(shopId));
}
if (StrUtil.isBlank(shopUser.getBirthDay())) {
shopUser.setBirthDay(null);
}
shopUser.setJoinTime(shopUser.getJoinTime() == null ? DateUtil.date().toLocalDateTime() : shopUser.getJoinTime());
return shopUserService.saveOrUpdate(shopUser);
}
@Override
public ShopUserDetailDTO getInfo(Long shopId, long userId) {
Long mainId = shopInfoService.getMainIdByShopId(shopId);