diff --git a/ExchangePointProductsServiceImpl.java b/ExchangePointProductsServiceImpl.java deleted file mode 100644 index 1d9d961..0000000 --- a/ExchangePointProductsServiceImpl.java +++ /dev/null @@ -1,250 +0,0 @@ -package com.rabbiter.market.service.sale_management.exchange_point_products.impl; - -import com.rabbiter.market.common.redis.service.RedisTemplateService; -import com.rabbiter.market.domain.goods_management.goods.Goods; -import com.rabbiter.market.domain.goods_management.point_products.PointProducts; -import com.rabbiter.market.domain.member_management.member.Member; -import com.rabbiter.market.domain.personnel_management.employee.Employee; -import com.rabbiter.market.domain.sale_management.exchange_point_products.ExchangePointProducts; -import com.rabbiter.market.mapper.sale_management.exchange_point_products.ExchangePointProductsMapper; -import com.rabbiter.market.qo.exchange_point_products_records.QueryExchangePointProductsRecords; -import com.rabbiter.market.service.goods_management.goods.IGoodsService; -import com.rabbiter.market.service.goods_management.point_products.IPointProductsService; -import com.rabbiter.market.service.member_management.member.IMemberService; -import com.rabbiter.market.service.sale_management.exchange_point_products.IExchangePointProductsService; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; - -import java.util.*; - -@Service -public class ExchangePointProductsServiceImpl extends ServiceImpl implements IExchangePointProductsService { -// 依赖注入... - - /** - * 根据会员ID查询可兑换商品选项 - * @param memberId 会员ID(可为空) - * @return 包含商品ID和名称的Map列表 - * 逻辑说明: - * - 当memberId为空时,返回所有需要积分的商品 - * - 当memberId存在时,只返回会员当前积分可兑换的商品 - */ - @Autowired - private IMemberService memberService; - @Autowired - private IPointProductsService pointProductsService; - @Autowired - private RedisTemplateService redisTemplateService; - @Autowired - private IGoodsService goodsService; - - @Override - public List> queryPointProductBymemberId(Long memberId) { - /** - * 通过商品ID获取积分商品详情 - * @param goodsId 商品ID - * @return 积分商品实体 - */ - Member member = memberService.getById(memberId); - - QueryWrapper pointProductsQueryWrapper = new QueryWrapper(); - if (memberId == null) { - pointProductsQueryWrapper.gt("integral", 0L); - } else { - pointProductsQueryWrapper.le("integral", member.getIntegral()); - } - - List list = pointProductsService.list(pointProductsQueryWrapper); - List> mapArrayList = new ArrayList<>(); - for (PointProducts pointProducts : list) { - Map map = new HashMap<>(); - map.put("id", pointProducts.getGoodsId()); - map.put("name", pointProducts.getGoodsName()); - mapArrayList.add(map); - } - return mapArrayList; - } - - @Override - public PointProducts queryPointProductByGoodsId(Long goodsId) { - /** - * 保存积分兑换记录 - * @param exchangePointProducts 兑换记录实体 - * @param token 用户令牌 - * 核心逻辑: - * 1. 生成唯一兑换单号 - * 2. 设置操作人信息(从Redis获取) - * 3. 更新会员积分 - * 4. 保存兑换记录 - */ - PointProducts pointProducts = pointProductsService.getOne(new QueryWrapper().eq(goodsId != null, "goods_id", goodsId)); - return pointProducts; - } - - @Override - public void saveExchangePointProductRecords(ExchangePointProducts exchangePointProducts, String token) { - /** - * 查询有兑换记录的会员手机号选项 - * @return 包含会员ID和手机号的Map列表 - * 注意:仅查询状态正常的兑换记录 - */ - Employee employee = JSONObject.parseObject(redisTemplateService.getCacheObject(token), Employee.class); - exchangePointProducts.setCn(IdWorker.getIdStr());//鐢熸垚璁㈠崟鍙� - exchangePointProducts.setUpdateby(employee.getNickName()); - exchangePointProducts.setUpdateId(employee.getId()); - exchangePointProducts.setUpdateTime(new Date()); - exchangePointProducts.setState(ExchangePointProducts.STATE_NORMAL); - /*淇敼浼氬憳鐨勭Н鍒�*/ - Member member = memberService.getById(exchangePointProducts.getMemberId()); - member.setIntegral(member.getIntegral() - exchangePointProducts.getIntegral()); - memberService.updateById(member); - super.save(exchangePointProducts); - - } - - @Override - public List> queryOptionsMemberPhone() { - /** - * 逻辑删除兑换记录(标记删除) - * @param cn 兑换单号 - */ - QueryWrapper wrapper = new QueryWrapper() - .select("member_id") - .eq("state", ExchangePointProducts.STATE_NORMAL) - .groupBy("member_id"); - List list = super.list(wrapper); - List memberIds = new ArrayList<>(); - for (ExchangePointProducts exchangePointProducts : list) { - memberIds.add(exchangePointProducts.getMemberId()); - } - if (memberIds==null || memberIds.size()<=0){ - return null; - } - List members = memberService.listByIds(memberIds); - List> vos = new ArrayList<>(); - for (Member member : members) { - Map map = new HashMap<>(); - map.put("id", member.getId()); - map.put("name", member.getPhone()); - vos.add(map); - } - - return vos; - } - - @Override - public void delExchangePointProducts(String cn) { - /** - * 分页查询兑换记录 - * @param qo 查询条件对象 - * @return 分页结果(包含关联的会员手机号和商品信息) - * 功能特点: - * - 支持时间范围过滤 - * - 支持会员ID过滤 - * - 支持单号模糊查询 - * - 自动补充商品封面和名称 - */ - UpdateWrapper wrapper = new UpdateWrapper() - .set("state", ExchangePointProducts.STATE_DEL) - .eq("cn", cn); - super.update(wrapper); - } - - @Override - public Page queryPageByQoExchangePointProducts(QueryExchangePointProductsRecords qo) { - /** - * 查询所有可兑换商品选项 - * @return 包含商品ID和名称的Map列表 - */ - Page page = new Page<>(qo.getCurrentPage(), qo.getPageSize()); - QueryWrapper queryWrapper = new QueryWrapper() - .eq("state", ExchangePointProducts.STATE_NORMAL) - .eq(qo.getMemberId() != null, "member_id", qo.getMemberId()) - .ge(StringUtils.hasText(qo.getStartTime()), "update_time", qo.getStartTime()) - .le(StringUtils.hasText(qo.getEndTime()), "update_time", qo.getEndTime()) - .likeRight(StringUtils.hasText(qo.getCn()), "cn", qo.getCn()); - super.page(page, queryWrapper); - for (ExchangePointProducts record : page.getRecords()) { - Member member = memberService.getById(record.getMemberId()); - record.setMemberPhone(member.getPhone()); - Goods goods = goodsService.getById(record.getGoodsId()); - record.setGoodsCoverUrl(goods.getCoverUrl()); - record.setGoodsName(goods.getName()); - } - return page; - } - - @Override - public List> queryOptionsPointProducts() { /** - * 查询所有正常状态会员选项 - * @return 包含会员ID和手机号的Map列表 - */ - QueryWrapper wrapper = new QueryWrapper() - .eq("state", PointProducts.STATE_NORMAL); - List list = pointProductsService.list(wrapper); - List> vos = new ArrayList<>(); - for (PointProducts pointProducts : list) { - Map map = new HashMap<>(); - map.put("id", pointProducts.getGoodsId()); - map.put("name", pointProducts.getGoodsName()); - vos.add(map); - } - return vos; - } - - @Override - public List> queryOptionsMember() { - /** - * 根据商品ID查询有足够积分兑换的会员 - * @param goodsId 商品ID(可为空) - * @return 包含会员ID和手机号的Map列表 - * 逻辑说明: - * - 当商品ID存在时,查询积分足够的会员 - * - 当商品ID为空时,返回所有有积分的会员 - */ - List> vos = new ArrayList<>(); - QueryWrapper wrapper = new QueryWrapper() - .groupBy("id") - .eq("state", Member.STATE_NORMAL); - List list = memberService.list(wrapper); - for (Member member : list) { - Map map = new HashMap<>(); - map.put("id", member.getId()); - map.put("name", member.getPhone()); - vos.add(map); - } - return vos; - } - - @Override - public List> queryMemberByGoodsId(Long goodsId) { - - List members = new ArrayList<>(); - QueryWrapper memberQueryWrapper = new QueryWrapper(); - memberQueryWrapper.eq("state", Member.STATE_NORMAL); - if (goodsId != null) { - PointProducts pointProducts = pointProductsService.getOne(new QueryWrapper() - .eq("goods_id", goodsId) - .eq("state", PointProducts.STATE_NORMAL)); - memberQueryWrapper.ge("integral", pointProducts.getIntegral()); - } else { - memberQueryWrapper.gt("integral", 0); - } - members = memberService.list(memberQueryWrapper); - List> vos = new ArrayList<>(); - for (Member member : members) { - Map map = new HashMap<>(); - map.put("id", member.getId()); - map.put("name", member.getPhone()); - vos.add(map); - } - return vos; - } -}