package com.doumee.service.business.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.YwH5BannerMapper; import com.doumee.dao.business.model.YwH5Banner; import com.doumee.service.business.YwH5BannerService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; import java.util.Objects; @Service public class YwH5BannerServiceImpl implements YwH5BannerService { @Autowired private YwH5BannerMapper ywH5BannerMapper; @Override public Integer create(YwH5Banner model) { validateBanner(model, true); LoginUserInfo user = resolveUser(model); Date now = new Date(); YwH5Banner insert = new YwH5Banner(); insert.setCreator(user.getId()); insert.setCreateDate(now); insert.setEditor(user.getId()); insert.setEditDate(now); insert.setIsdeleted(Constants.ZERO); insert.setTitle(StringUtils.trimToNull(model.getTitle())); insert.setImageUrl(StringUtils.trim(model.getImageUrl())); insert.setLinkUrl(StringUtils.trimToNull(model.getLinkUrl())); insert.setSortnum(model.getSortnum() == null ? Constants.ZERO : model.getSortnum()); insert.setStatus(model.getStatus() == null ? Constants.ZERO : model.getStatus()); insert.setScope(Constants.ONE); insert.setRemark(StringUtils.trimToNull(model.getRemark())); ywH5BannerMapper.insert(insert); return insert.getId(); } @Override public void deleteById(Integer id, LoginUserInfo user) { YwH5Banner row = ywH5BannerMapper.selectById(id); if (row == null || Constants.equalsInteger(row.getIsdeleted(), Constants.ONE)) { throw new BusinessException(ResponseStatus.DATA_EMPTY); } ywH5BannerMapper.update(null, new UpdateWrapper().lambda() .set(YwH5Banner::getIsdeleted, Constants.ONE) .set(YwH5Banner::getEditor, user.getId()) .set(YwH5Banner::getEditDate, new Date()) .eq(YwH5Banner::getId, id)); } @Override public void deleteByIdInBatch(List ids, LoginUserInfo user) { if (CollectionUtils.isEmpty(ids)) { return; } for (Integer id : ids) { deleteById(id, user); } } @Override public void updateById(YwH5Banner model) { if (model.getId() == null) { throw new BusinessException(ResponseStatus.BAD_REQUEST); } YwH5Banner existing = ywH5BannerMapper.selectById(model.getId()); if (existing == null || Constants.equalsInteger(existing.getIsdeleted(), Constants.ONE)) { throw new BusinessException(ResponseStatus.DATA_EMPTY); } if (StringUtils.isNotBlank(model.getImageUrl())) { validateBanner(model, false); } LoginUserInfo user = resolveUser(model); YwH5Banner update = new YwH5Banner(); update.setId(model.getId()); update.setEditor(user.getId()); update.setEditDate(new Date()); if (model.getTitle() != null) { update.setTitle(StringUtils.trimToNull(model.getTitle())); } if (StringUtils.isNotBlank(model.getImageUrl())) { update.setImageUrl(StringUtils.trim(model.getImageUrl())); } if (model.getLinkUrl() != null) { update.setLinkUrl(StringUtils.trimToNull(model.getLinkUrl())); } if (model.getSortnum() != null) { update.setSortnum(model.getSortnum()); } if (model.getStatus() != null) { update.setStatus(model.getStatus()); } if (model.getRemark() != null) { update.setRemark(StringUtils.trimToNull(model.getRemark())); } ywH5BannerMapper.updateById(update); } @Override public YwH5Banner findById(Integer id) { YwH5Banner row = ywH5BannerMapper.selectById(id); if (row == null || Constants.equalsInteger(row.getIsdeleted(), Constants.ONE)) { return null; } return row; } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper qw = new QueryWrapper<>(); YwH5Banner model = pageWrap.getModel(); if (model != null) { Utils.MP.blankToNull(model); if (StringUtils.isNotBlank(model.getTitle())) { qw.lambda().like(YwH5Banner::getTitle, model.getTitle()); } if (model.getStatus() != null) { qw.lambda().eq(YwH5Banner::getStatus, model.getStatus()); } } qw.lambda() .eq(YwH5Banner::getIsdeleted, Constants.ZERO) .eq(YwH5Banner::getScope, Constants.ONE) .orderByAsc(YwH5Banner::getSortnum) .orderByDesc(YwH5Banner::getCreateDate); return PageData.from(ywH5BannerMapper.selectPage(page, qw)); } @Override public List listEnabledForCustomerWorkbench() { return ywH5BannerMapper.selectList(new QueryWrapper().lambda() .eq(YwH5Banner::getIsdeleted, Constants.ZERO) .eq(YwH5Banner::getStatus, Constants.ZERO) .eq(YwH5Banner::getScope, Constants.ONE) .orderByAsc(YwH5Banner::getSortnum) .orderByDesc(YwH5Banner::getCreateDate)); } private void validateBanner(YwH5Banner model, boolean requireImage) { if (requireImage && StringUtils.isBlank(model.getImageUrl())) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "请上传轮播图片"); } } private LoginUserInfo resolveUser(YwH5Banner model) { LoginUserInfo user = model.getLoginUserInfo(); if (user == null) { throw new BusinessException(ResponseStatus.NO_LOGIN); } return user; } }