This commit is contained in:
2025-12-09 18:41:30 +08:00
parent 82efd1886f
commit 76b93cf8b2
93 changed files with 2131 additions and 3112 deletions

View File

@@ -0,0 +1,14 @@
package com.czg.service.market.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.market.entity.MkPointsConfig;
/**
* 积分基本设置 映射层。
*
* @author ww
* @since 2025-12-08
*/
public interface MkPointsConfigMapper extends BaseMapper<MkPointsConfig> {
}

View File

@@ -0,0 +1,17 @@
package com.czg.service.market.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.market.entity.MkPointsGoods;
import java.util.List;
/**
* 积分商品设置 映射层。
*
* @author ww
* @since 2025-12-08
*/
public interface MkPointsGoodsMapper extends BaseMapper<MkPointsGoods> {
List<MkPointsGoods> getPointsGoodsPageByUser(Long shopId, Long userId);
}

View File

@@ -0,0 +1,14 @@
package com.czg.service.market.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.market.entity.MkPointsGoodsRecord;
/**
* 积分兑换记录 映射层。
*
* @author ww
* @since 2025-12-08
*/
public interface MkPointsGoodsRecordMapper extends BaseMapper<MkPointsGoodsRecord> {
}

View File

@@ -0,0 +1,14 @@
package com.czg.service.market.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.market.entity.MkPointsUser;
/**
* 会员积分账户 映射层。
*
* @author ww
* @since 2025-12-08
*/
public interface MkPointsUserMapper extends BaseMapper<MkPointsUser> {
}

View File

@@ -0,0 +1,14 @@
package com.czg.service.market.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.market.entity.MkPointsUserRecord;
/**
* 会员积分变动记录 映射层。
*
* @author ww
* @since 2025-12-08
*/
public interface MkPointsUserRecordMapper extends BaseMapper<MkPointsUserRecord> {
}

View File

@@ -0,0 +1,55 @@
package com.czg.service.market.service.impl;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.czg.market.enums.PointsConstant;
import com.czg.market.service.MkPointsUserService;
import com.czg.order.entity.OrderInfo;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.market.entity.MkPointsConfig;
import com.czg.market.service.MkPointsConfigService;
import com.czg.service.market.mapper.MkPointsConfigMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
/**
* 积分基本设置 服务层实现。
*
* @author ww
* @since 2025-12-08
*/
@Service
public class MkPointsConfigServiceImpl extends ServiceImpl<MkPointsConfigMapper, MkPointsConfig> implements MkPointsConfigService {
@Resource
private MkPointsUserService mkPointsUserService;
@Override
public void consumeAwardPoints(Long shopUserId, OrderInfo orderInfo) {
BigDecimal payAmount = orderInfo.getPayAmount();
if (NumberUtil.isLessOrEqual(payAmount, BigDecimal.ZERO)) {
return;
}
MkPointsConfig pointsConfig = getOne(query().eq(MkPointsConfig::getShopId, orderInfo.getShopId()));
if (pointsConfig == null) {
return;
}
Integer enableRewards = pointsConfig.getEnableRewards();
if (enableRewards == 0) {
return;
}
BigDecimal consumeAmount = pointsConfig.getConsumeAmount();
if (consumeAmount == null) {
return;
}
if (NumberUtil.isLessOrEqual(consumeAmount, BigDecimal.ZERO)) {
return;
}
BigDecimal awardPoints = NumberUtil.roundDown(NumberUtil.div(payAmount, consumeAmount), 0);
mkPointsUserService.alterPoints(null, shopUserId, orderInfo.getShopId(), PointsConstant.ADD,
awardPoints.intValue(), orderInfo.getId().toString(), StrUtil.format("消费¥{}送{}积分", payAmount, awardPoints.intValue()));
}
}

View File

@@ -0,0 +1,85 @@
package com.czg.service.market.service.impl;
import cn.hutool.core.util.NumberUtil;
import com.czg.account.entity.ShopUser;
import com.czg.account.service.ShopInfoService;
import com.czg.account.service.ShopUserService;
import com.czg.account.vo.PointsExchangeSummaryVo;
import com.czg.exception.CzgException;
import com.czg.market.dto.MkPointsGoodsRecordDTO;
import com.czg.market.dto.MkPointsGoodsRecordQueryDTO;
import com.czg.sa.StpKit;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.market.entity.MkPointsGoodsRecord;
import com.czg.market.service.MkPointsGoodsRecordService;
import com.czg.service.market.mapper.MkPointsGoodsRecordMapper;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
/**
* 积分兑换记录 服务层实现。
*
* @author ww
* @since 2025-12-08
*/
@Service
public class MkPointsGoodsRecordServiceImpl extends ServiceImpl<MkPointsGoodsRecordMapper, MkPointsGoodsRecord> implements MkPointsGoodsRecordService {
@DubboReference
private ShopInfoService shopInfoService;
@DubboReference
private ShopUserService shopUserService;
@Override
public Page<MkPointsGoodsRecordDTO> getGoodsRecordPage(MkPointsGoodsRecordQueryDTO param) {
Long mainIdByShopId = shopInfoService.getMainIdByShopId(param.getShopId());
Page<MkPointsGoodsRecordDTO> pages = pageAs(
Page.of(param.getPage(), param.getSize())
, query().eq(MkPointsGoodsRecord::getShopId, param.getShopId())
.eq(MkPointsGoodsRecord::getShopUserId, param.getShopUserId())
.eq(MkPointsGoodsRecord::getStatus, param.getStatus())
.like(MkPointsGoodsRecord::getPointsGoodsName, param.getPointsGoodsName())
.like(MkPointsGoodsRecord::getGoodsCategory, param.getGoodsCategory())
, MkPointsGoodsRecordDTO.class);
pages.getRecords().forEach(data -> {
ShopUser shopUser = shopUserService.getOne(query().eq(ShopUser::getId, data.getShopUserId()).eq(ShopUser::getMainShopId, mainIdByShopId));
data.setHeadImg(shopUser.getHeadImg());
data.setNickName(shopUser.getNickName());
data.setPhone(shopUser.getPhone());
});
return pages;
}
@Override
public PointsExchangeSummaryVo total(MkPointsGoodsRecordQueryDTO param) {
QueryWrapper queryWrapper = query().eq(MkPointsGoodsRecord::getShopId, param.getShopId())
.between(MkPointsGoodsRecord::getCreateTime, param.getStartTime(), param.getEndTime())
.eq(MkPointsGoodsRecord::getShopUserId, param.getShopUserId())
.eq(MkPointsGoodsRecord::getStatus, param.getStatus())
.like(MkPointsGoodsRecord::getPointsGoodsName, param.getPointsGoodsName())
.like(MkPointsGoodsRecord::getGoodsCategory, param.getGoodsCategory());
queryWrapper.select("count(*) as count,sum(extra_payment_amount) as totalAmount");
return getOneAs(queryWrapper, PointsExchangeSummaryVo.class);
}
@Override
public boolean checkout(String couponCode, Long shopId) {
MkPointsGoodsRecord record = getOne(query().eq(MkPointsGoodsRecord::getCouponCode, couponCode).eq(MkPointsGoodsRecord::getShopId, shopId));
if (record == null) {
throw new CzgException("未找到该兑换码");
}
if (!record.getStatus().equals("待核销") && !record.getStatus().equals("退款中")) {
throw new CzgException("核销失败,该商品不可核销");
}
MkPointsGoodsRecord upRecord = new MkPointsGoodsRecord();
upRecord.setCheckoutTime(LocalDateTime.now());
upRecord.setStatus("已完成");
return update(upRecord, query().eq(MkPointsGoodsRecord::getId, record.getId()));
}
}

View File

@@ -0,0 +1,105 @@
package com.czg.service.market.service.impl;
import com.czg.BaseQueryParam;
import com.czg.exception.CzgException;
import com.czg.market.entity.MkPointsGoodsRecord;
import com.czg.market.entity.MkPointsUserRecord;
import com.czg.market.service.MkPointsGoodsRecordService;
import com.czg.order.dto.PointGoodsRefundDTO;
import com.czg.utils.PageUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.market.entity.MkPointsGoods;
import com.czg.market.service.MkPointsGoodsService;
import com.czg.service.market.mapper.MkPointsGoodsMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
/**
* 积分商品设置 服务层实现。
*
* @author ww
* @since 2025-12-08
*/
@Service
public class MkPointsGoodsServiceImpl extends ServiceImpl<MkPointsGoodsMapper, MkPointsGoods> implements MkPointsGoodsService {
@Resource
private MkPointsGoodsRecordService goodsRecordService;
@Override
public Page<MkPointsGoods> getPointsGoodsPage(BaseQueryParam param, Long shopId) {
return page(Page.of(param.getPage(), param.getSize()),
query()
.eq(MkPointsGoods::getShopId, shopId)
.eq(MkPointsGoods::getDelFlag, 0)
.orderBy(MkPointsGoods::getSort, false)
.orderBy(MkPointsGoods::getId, false)
);
}
@Override
public Page<MkPointsGoods> getPointsGoodsPageByUser(Integer page, Integer size, Long shopId, Long userId) {
PageHelper.startPage(page, size);
List<MkPointsGoods> list = mapper.getPointsGoodsPageByUser(shopId, userId);
return PageUtil.convert(new PageInfo<>(list));
}
@Override
public Page<MkPointsGoodsRecord> getGoodsRecordPage(Integer page, Integer size, Long shopId, Long userId) {
return goodsRecordService.page(Page.of(page, size), query().eq(MkPointsGoodsRecord::getUserId, userId).eq(MkPointsGoodsRecord::getShopId, shopId));
}
@Override
public boolean applyRefund(PointGoodsRefundDTO param, Long userId) {
MkPointsGoodsRecord record = new MkPointsGoodsRecord();
record.setStatus("退款中");
record.setCancelOrRefundReason(param.getReason());
record.setCancelOrRefundTime(LocalDateTime.now());
return goodsRecordService.update(record, query()
.eq(MkPointsGoodsRecord::getId, param.getRecordId())
.eq(MkPointsGoodsRecord::getOrderNo, param.getOrderNo())
.eq(MkPointsGoodsRecord::getUserId, userId)
);
}
@Override
public boolean cancelRefund(PointGoodsRefundDTO param, Long userId) {
MkPointsGoodsRecord record1 = goodsRecordService.getById(param.getRecordId());
if (record1 == null) {
throw new CzgException("取消失败,订单不存在");
}
if (record1.getStatus().equals("退款中")) {
throw new CzgException("取消失败,订单不处于退款中");
}
MkPointsGoodsRecord record = new MkPointsGoodsRecord();
if (record1.getCheckoutTime() != null) {
record.setStatus("已完成");
}else {
record.setStatus("待核销");
}
record.setCancelOrRefundReason(param.getReason());
record.setCancelOrRefundTime(LocalDateTime.now());
return goodsRecordService.update(record, query()
.eq(MkPointsGoodsRecord::getId, param.getRecordId())
.eq(MkPointsGoodsRecord::getOrderNo, param.getOrderNo())
.eq(MkPointsGoodsRecord::getUserId, userId)
);
}
@Override
public boolean upNumberById(Long id, Integer quantity, Integer totalExchangeCount) {
MkPointsGoods goodUp = new MkPointsGoods();
goodUp.setQuantity(quantity);
goodUp.setTotalExchangeCount(totalExchangeCount);
return updateById(goodUp);
}
}

View File

@@ -0,0 +1,28 @@
package com.czg.service.market.service.impl;
import com.czg.account.vo.PointsShopListVO;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.market.entity.MkPointsUserRecord;
import com.czg.market.service.MkPointsUserRecordService;
import com.czg.service.market.mapper.MkPointsUserRecordMapper;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 会员积分变动记录 服务层实现。
*
* @author ww
* @since 2025-12-08
*/
@Service
public class MkPointsUserRecordServiceImpl extends ServiceImpl<MkPointsUserRecordMapper, MkPointsUserRecord> implements MkPointsUserRecordService {
@Override
public Page<MkPointsUserRecord> pageByPointsUserId(Integer page, Integer size, Long mkPointsUserId) {
return page(Page.of(page, size), query().eq(MkPointsUserRecord::getMkPointsUserId, mkPointsUserId).orderBy(MkPointsUserRecord::getCreateTime, false));
}
}

View File

@@ -0,0 +1,146 @@
package com.czg.service.market.service.impl;
import cn.hutool.core.util.StrUtil;
import com.czg.account.entity.ShopInfo;
import com.czg.account.entity.ShopUser;
import com.czg.account.service.ShopInfoService;
import com.czg.account.service.ShopUserService;
import com.czg.account.vo.PointsShopListVO;
import com.czg.exception.CzgException;
import com.czg.market.dto.MkPointsUserDTO;
import com.czg.market.entity.MkPointsUserRecord;
import com.czg.market.enums.PointsConstant;
import com.czg.market.service.MkPointsUserRecordService;
import com.czg.sa.StpKit;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.market.entity.MkPointsUser;
import com.czg.market.service.MkPointsUserService;
import com.czg.service.market.mapper.MkPointsUserMapper;
import jakarta.annotation.Resource;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;
import org.stringtemplate.v4.ST;
import java.util.List;
/**
* 会员积分账户 服务层实现。
*
* @author ww
* @since 2025-12-08
*/
@Service
public class MkPointsUserServiceImpl extends ServiceImpl<MkPointsUserMapper, MkPointsUser> implements MkPointsUserService {
@DubboReference
private ShopInfoService shopInfoService;
@DubboReference
private ShopUserService shopUserService;
@Resource
private MkPointsUserRecordService pointsUserRecordService;
@Override
public Page<MkPointsUserDTO> getPointsUserPage(String phone, Integer page, Integer size) {
Long shopUserId = null;
Long mainIdByShopId = shopInfoService.getMainIdByShopId(StpKit.USER.getShopId());
if (StrUtil.isBlankIfStr(phone)) {
ShopUser one = shopUserService.getOne(query().eq(ShopUser::getPhone, phone).eq(ShopUser::getMainShopId, mainIdByShopId));
if (one == null) {
return new Page<>();
}
shopUserId = one.getId();
}
Page<MkPointsUserDTO> pages = pageAs(Page.of(page, size), query()
.eq(MkPointsUser::getShopId, StpKit.USER.getShopId())
.eq(MkPointsUser::getShopUserId, shopUserId)
.orderBy(MkPointsUser::getUpdateTime, false),
MkPointsUserDTO.class);
pages.getRecords().forEach(s -> {
ShopUser shopUser = shopUserService.getOne(query().eq(ShopUser::getId, s.getShopUserId()).eq(ShopUser::getMainShopId, mainIdByShopId));
s.setHeadImg(shopUser.getHeadImg());
s.setNickName(shopUser.getNickName());
s.setPhone(shopUser.getPhone());
});
return pages;
}
@Override
public List<PointsShopListVO> pointsShopList(Long userId, String shopName) {
return listAs(query().select(MkPointsUser::getShopId).select(ShopInfo::getShopName, ShopInfo::getLogo, ShopInfo::getCoverImg)
.eq(MkPointsUser::getUserId, userId).leftJoin(ShopInfo.class).on(MkPointsUser::getShopId, ShopInfo::getId),
PointsShopListVO.class);
}
public MkPointsUser getPointsUser(Long shopId, Long shopUserId, Long userId) {
MkPointsUser pointsUser;
if (userId == null && shopUserId == null) {
throw new CzgException("积分操作失败用户ID和店铺用户ID不能同时为空");
}
if (shopUserId != null) {
pointsUser = getOne(query().eq(MkPointsUser::getShopUserId, shopUserId).eq(MkPointsUser::getShopId, shopId));
if (pointsUser == null) {
ShopUser shopUser = shopUserService.getById(shopUserId);
if (shopUser == null) {
throw new CzgException("积分操作失败,店铺用户不存在");
}
pointsUser = MkPointsUser.builder()
.userId(userId)
.shopId(shopId)
.shopUserId(shopUserId)
.pointBalance(0L)
.build();
}
} else {
pointsUser = getOne(query().eq(MkPointsUser::getUserId, userId).eq(MkPointsUser::getShopId, shopId));
if (pointsUser == null) {
ShopUser shopUser = shopUserService.getUserInfo(shopId, userId);
if (shopUser == null) {
throw new CzgException("积分操作失败,店铺用户不存在");
}
pointsUser = MkPointsUser.builder()
.userId(userId)
.shopId(shopId)
.shopUserId(shopUser.getId())
.pointBalance(0L)
.build();
}
}
return pointsUser;
}
@Override
public Long alterPoints(Long userId, Long shopUserId, Long shopId, PointsConstant floatType, Integer points, String sourceId, String reason) {
MkPointsUser pointsUser = getPointsUser(shopId, shopUserId, userId);
if (floatType == null) {
throw new CzgException("积分变动类型不能为空");
}
switch (floatType) {
case ADD:
pointsUser.setPointBalance(pointsUser.getPointBalance() + points);
break;
case SUB:
pointsUser.setPointBalance(pointsUser.getPointBalance() - points);
if (pointsUser.getPointBalance() < 0) {
throw new CzgException("积分操作失败,积分不足");
}
points = -points;
break;
default:
throw new CzgException("不支持的积分变动类型:" + floatType);
}
saveOrUpdate(pointsUser);
MkPointsUserRecord record = MkPointsUserRecord.builder()
.mkPointsUserId(pointsUser.getId())
.floatType(floatType.getValue())
.floatPoints(points)
.sourceId(sourceId)
.content(reason)
.build();
boolean save = pointsUserRecordService.save(record);
if (!save) {
throw new CzgException("积分操作失败,积分记录保存失败");
}
return record.getId();
}
}

View File

@@ -4,10 +4,8 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONArray;
import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO;
import com.czg.account.entity.ShopConfig;
import com.czg.account.entity.ShopInfo;
import com.czg.account.entity.ShopUser;
import com.czg.account.service.MemberPointsService;
import com.czg.account.service.ShopConfigService;
import com.czg.account.service.ShopInfoService;
import com.czg.account.service.ShopUserService;
@@ -16,29 +14,22 @@ import com.czg.exception.CzgException;
import com.czg.market.dto.CouponInfoDTO;
import com.czg.market.dto.MkRewardCouponDTO;
import com.czg.market.dto.MkShopRechargeDTO;
import com.czg.market.dto.MkShopRechargeDetailDTO;
import com.czg.market.entity.MkShopRechargeDetail;
import com.czg.market.entity.ShopCoupon;
import com.czg.market.service.MkShopCouponRecordService;
import com.czg.market.service.MkShopRechargeDetailService;
import com.czg.market.service.ShopCouponService;
import com.czg.market.enums.PointsConstant;
import com.czg.market.service.*;
import com.czg.market.vo.*;
import com.czg.order.entity.OrderInfo;
import com.czg.service.market.enums.OrderStatusEnums;
import com.czg.utils.AssertUtil;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.market.entity.MkShopRecharge;
import com.czg.market.service.MkShopRechargeService;
import com.czg.service.market.mapper.MkShopRechargeMapper;
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 java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
@@ -57,8 +48,8 @@ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper,
private ShopCouponService shopCouponService;
@DubboReference
private ShopUserService shopUserService;
@DubboReference
private MemberPointsService memberPointsService;
@Resource
private MkPointsUserService pointsUserService;
@Resource
private MkShopCouponRecordService shopCouponRecordService;
@DubboReference
@@ -190,11 +181,11 @@ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper,
.setBizEnum(ShopUserFlowBizEnum.AWARD_IN)
.setRelationId(paymentId);
shopUserMoneyEditRewardDTO.setMoney(rechargeDetail.getRewardAmount());
shopUserService.updateMoney(shopUserMoneyEditRewardDTO);
Long editId = shopUserService.updateMoney(shopUserMoneyEditRewardDTO);
// 发放积分
if (rechargeDetail.getRewardPoints() != null) {
memberPointsService.addPoints(shopUserId, rechargeDetail.getRewardPoints(), "会员消费送积分", null);
pointsUserService.alterPoints(null, shopUserId, shopUser.getMainShopId(), PointsConstant.ADD, rechargeDetail.getRewardPoints(), editId.toString(), "会员充值送积分");
}
// 发放优惠券
@@ -205,7 +196,7 @@ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper,
.setNum(item.getNum())
.setUserId(shopUser.getUserId())
.setShopId(shopId), "充值赠券");
}catch (Exception e) {
} catch (Exception e) {
log.warn("发放优惠券失败", e);
}
});
@@ -254,7 +245,7 @@ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper,
});
});
shopIdList = null;
}else {
} else {
shopIdList.add(shopId);
queryWrapper.in(ShopInfo::getId, shopIdList);
}

View File

@@ -12,6 +12,7 @@ import com.czg.market.dto.*;
import com.czg.account.entity.*;
import com.czg.account.service.*;
import com.czg.market.entity.*;
import com.czg.market.enums.PointsConstant;
import com.czg.market.service.*;
import com.czg.market.vo.*;
import com.czg.order.entity.OrderInfo;
@@ -55,8 +56,8 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
private OrderInfoService orderInfoService;
@DubboReference
private OrderPaymentService paymentService;
@DubboReference
private MemberPointsService memberPointsService;
@Resource
private MkPointsUserService pointsUserService;
@Resource
private MemberOrderService memberOrderService;
@Resource
@@ -69,7 +70,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
private ShopConfigService shopConfigService;
@Override
public MemberConfigVO detail(Long shopId) {
public MemberConfigVO detail(Long shopId) {
shopId = shopInfoService.getMainIdByShopId(shopId);
TbMemberConfig memberConfig = getOne(new QueryWrapper().eq(TbMemberConfig::getShopId, shopId));
if (memberConfig == null) {
@@ -188,8 +189,8 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
memberConfig.setMemberPriceShopIdList(JSONObject.toJSONString(memberDTO.getMemberPriceShopIdList()));
}
shopConfigService.editStatusByShopIdList(memberConfig.getShopId(), memberConfig.getIsOpen().intValue() == 1 && memberConfig.getIsMemberPrice() == 1 ? 1 : 0,false, "is_member_price",
"ALL".equals(memberConfig.getMemberPriceShopType()) ? "all" : "part",
shopConfigService.editStatusByShopIdList(memberConfig.getShopId(), memberConfig.getIsOpen().intValue() == 1 && memberConfig.getIsMemberPrice() == 1 ? 1 : 0, false, "is_member_price",
"ALL".equals(memberConfig.getMemberPriceShopType()) ? "all" : "part",
StrUtil.isNotBlank(memberConfig.getMemberPriceShopIdList()) ? JSONArray.parseArray(memberConfig.getMemberPriceShopIdList()).toList(Long.class) : new ArrayList<>());
return updateById(memberConfig, false);
@@ -235,7 +236,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
}
@Override
public Boolean editLevel(Long shopId, MemberLevelDTO levelDTO) {
public Boolean editLevel(Long shopId, MemberLevelDTO levelDTO) {
MemberLevelConfig levelConfig = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getId, levelDTO.getId()).eq(MemberLevelConfig::getShopId, shopId));
Optional.ofNullable(levelConfig).orElseThrow(() -> new CzgException("会员等级不存在"));
Integer oldVal = levelConfig.getExperienceValue();
@@ -253,7 +254,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
if (!levelDTO.getExperienceValue().equals(oldVal)) {
List<ShopUser> shopUserList = shopUserService.list(new QueryWrapper().eq(ShopUser::getMainShopId, mainShopid));
shopUserList.forEach(item -> {
MemberLevelConfig configServiceOne = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, mainShopid)
MemberLevelConfig configServiceOne = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, mainShopid)
.le(MemberLevelConfig::getExperienceValue, item.getExperience()).orderBy(MemberLevelConfig::getExperienceValue, false).limit(1));
item.setMemberLevelId(configServiceOne == null ? item.getMemberLevelId() : configServiceOne.getId());
});
@@ -278,20 +279,6 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
return memberLevelVOS;
}
static void main() {
Integer expVal = 10;
TableValueConstant.MemberExpFlow.Type type = TableValueConstant.MemberExpFlow.Type.PAY;
long exp = 0;
switch (type) {
case PAY -> {
exp = expVal;
}
}
System.out.println(exp);
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deliver(ShopUser shopUser, TableValueConstant.MemberExpFlow.Type type, BigDecimal money, Integer expVal, Long sourceId) {
@@ -331,7 +318,8 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
int points = (int) (money.floatValue() / levelVO.getCostRewardPoints());
log.info("消费送积分: {}", points);
if (points > 0) {
memberPointsService.addPoints(shopUser.getId(), points, "会员消费送积分", null);
pointsUserService.alterPoints(null, shopUser.getId(), shopUser.getMainShopId(), PointsConstant.ADD, points, sourceId.toString(), "会员消费送积分");
}
}
}
@@ -345,7 +333,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
if (levelVO.getIsCycleReward() == 1) {
if (levelVO.getCycleRewardPoints() != null) {
int points = levelVO.getCycleRewardPoints();
memberPointsService.addPoints(shopUser.getId(), points, "会员任务奖励", null);
pointsUserService.alterPoints(null, shopUser.getId(), shopUser.getMainShopId(), PointsConstant.ADD, points, sourceId.toString(), "会员奖励");
}
if (levelVO.getCycleRewardCouponList() != null && !levelVO.getCycleRewardCouponList().isEmpty()) {

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.market.mapper.MkPointsConfigMapper">
</mapper>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.market.mapper.MkPointsGoodsMapper">
<select id="getPointsGoodsPageByUser" resultType="com.czg.market.entity.MkPointsGoods">
select goods.*, count(record.id) as boughtCount
from mk_points_goods goods
left join mk_points_user_record record
on record.mk_points_goods_id = goods.id and record.user_id = #{userId} and record.status != '已退款'
where goods.shop_id = #{shopId}
and goods.del_flag = 0
and goods.status = 1
order by goods.sort desc, goods.id desc
</select>
</mapper>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.market.mapper.MkPointsGoodsRecordMapper">
</mapper>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.market.mapper.MkPointsUserMapper">
</mapper>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.market.mapper.MkPointsUserRecordMapper">
</mapper>