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 { @Autowired private IMemberService memberService; @Autowired private IPointProductsService pointProductsService; @Autowired private RedisTemplateService redisTemplateService; @Autowired private IGoodsService goodsService; @Override public List> queryPointProductBymemberId(Long memberId) { 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) { PointProducts pointProducts = pointProductsService.getOne(new QueryWrapper().eq(goodsId != null, "goods_id", goodsId)); return pointProducts; } @Override public void saveExchangePointProductRecords(ExchangePointProducts exchangePointProducts, String token) { 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() { 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) { UpdateWrapper wrapper = new UpdateWrapper() .set("state", ExchangePointProducts.STATE_DEL) .eq("cn", cn); super.update(wrapper); } @Override public Page queryPageByQoExchangePointProducts(QueryExchangePointProductsRecords qo) { 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() { 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() { 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; } }