package com.mzl.flower.service.point.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.config.security.SecurityUtils; import com.mzl.flower.constant.Constants; import com.mzl.flower.dto.BatchDTO; import com.mzl.flower.dto.request.menber.MemberDTO; import com.mzl.flower.dto.request.point.PointGoodDTO; import com.mzl.flower.dto.request.point.PointGoodQueryDTO; import com.mzl.flower.dto.response.content.AnnouncementDTO; import com.mzl.flower.dto.response.point.PointGoodVO; import com.mzl.flower.entity.content.Announcement; import com.mzl.flower.entity.menber.Member; import com.mzl.flower.entity.point.PointGood; import com.mzl.flower.mapper.member.MemberMapper; import com.mzl.flower.mapper.point.PointGoodMapper; import com.mzl.flower.service.menber.MemberService; import com.mzl.flower.service.point.PointGoodService; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import java.time.LocalDate; import java.util.List; /** * @author fanghaowei * @version version2.0 * @className MemberServiceImpl * @date 2024/8/26 * @description 会员管理功能逻辑层 */ @Service @Transactional @RequiredArgsConstructor public class PointGoodServiceImpl extends ServiceImpl implements PointGoodService { private final PointGoodMapper pointGoodMapper; @Override public void save(PointGoodDTO pointGoodDTO) { if (pointGoodDTO.getId() != null) { throw new ValidationException("id必须为空"); } if (pointGoodDTO.getStock() < 0) { throw new ValidationException("库存不能小于0"); } if (pointGoodDTO.getPoint() < 0) { throw new ValidationException("积分不能小于0"); } PointGood pointGood = new PointGood(); BeanUtils.copyProperties(pointGoodDTO, pointGood); pointGood.setStatus(Constants.POINT_GOOD_STATUS.off.name()); pointGood.create(SecurityUtils.getUserId()); pointGoodMapper.insert(pointGood); } @Override public void update(PointGoodDTO pointGoodDTO) { if (pointGoodDTO.getId() == null || pointGoodDTO.getId() == 0) { throw new ValidationException("id不能为空"); } if (pointGoodDTO.getStock() < 0) { throw new ValidationException("库存不能小于0"); } if (pointGoodDTO.getPoint() < 0) { throw new ValidationException("积分不能小于0"); } PointGood pointGood = pointGoodMapper.selectById(pointGoodDTO.getId()); if (pointGood == null) { throw new ValidationException("找不到id为" + pointGood.getId() + "的商品"); } BeanUtils.copyProperties(pointGoodDTO, pointGood, "id", "createTime", "createBy", "deleted", "status"); pointGood.update(SecurityUtils.getUserId()); pointGoodMapper.updateById(pointGood); } @Override public void batchDelete(BatchDTO batchDTO) { pointGoodMapper.deleteBatchIds(batchDTO.getIds()); } @Override public void batchPublish(BatchDTO batchDTO) { List list = pointGoodMapper.selectList(new LambdaQueryWrapper().in(PointGood::getId, batchDTO.getIds())); for (PointGood pointGood : list) { pointGood.setStatus(Constants.POINT_GOOD_STATUS.up.name()); pointGoodMapper.updateById(pointGood); } } @Override public void batchOff(BatchDTO batchDTO) { List list = pointGoodMapper.selectList(new LambdaQueryWrapper().in(PointGood::getId, batchDTO.getIds())); for (PointGood pointGood : list) { pointGood.setStatus(Constants.POINT_GOOD_STATUS.off.name()); pointGoodMapper.updateById(pointGood); } } @Override public void delete(Long id) { PointGood pointGood = pointGoodMapper.selectById(id); if (pointGood == null) { throw new ValidationException("找不到id为" + id + "的商品"); } pointGoodMapper.deleteById(id); } @Override public void copy(Long id) { PointGood pointGoodTmp = pointGoodMapper.selectById(id); if (pointGoodTmp == null) { throw new ValidationException("找不到id为" + id + "的商品"); } PointGood pointGood = new PointGood(); BeanUtils.copyProperties(pointGoodTmp, pointGood,"id","createTime", "createBy", "deleted", "status"); pointGood.setStatus(Constants.POINT_GOOD_STATUS.off.name()); pointGood.create(SecurityUtils.getUserId()); pointGoodMapper.deleteById(id); } @Override public void changeStatus(Long id) { PointGood pointGood = pointGoodMapper.selectById(id); if (pointGood == null) { throw new ValidationException("找不到id为" + id + "的商品"); } if (Constants.COMMON_PUBLISH_STATUS.published.name().equals(pointGood.getStatus())) { pointGood.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name()); } else { pointGood.setStatus(Constants.COMMON_PUBLISH_STATUS.published.name()); } pointGoodMapper.updateById(pointGood); } @Override public PointGoodVO detail(Long id) { PointGood pointGood = pointGoodMapper.selectById(id); if (pointGood == null) { return null; } PointGoodVO vo = new PointGoodVO(); BeanUtils.copyProperties(pointGood, vo); return vo; } @Override public Page queryPage(PointGoodQueryDTO pointGoodQueryDTO, Page page) { List list = pointGoodMapper.queryPage(pointGoodQueryDTO, page); page.setRecords(list); return page; } }