package com.doumee.service.business.impl; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.Constants; 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.Utils; import com.doumee.dao.business.DiscountMapper; import com.doumee.dao.business.join.BikeRepairJoinMapper; import com.doumee.dao.business.join.DiscountJoinMapper; import com.doumee.dao.business.model.BaseParam; import com.doumee.dao.business.model.BikeRepair; import com.doumee.dao.business.model.Discount; import com.doumee.dao.business.model.Member; import com.doumee.dao.business.web.request.BikeRepairDTO; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.DiscountService; 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.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; 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实现 * @author 江蹄蹄 * @date 2025/02/17 09:43 */ @Service public class DiscountServiceImpl implements DiscountService { @Autowired private DiscountMapper discountMapper; @Autowired private DiscountJoinMapper discountJoinMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Override public String create(Discount discount) { LoginUserInfo userInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); this.vaildReq(discount); discount.setStatus(Constants.ZERO); discount.setIsdeleted(Constants.ZERO); discount.setCreateDate(new Date()); discount.setCreator(userInfo.getId()); discountMapper.insert(discount); return discount.getId(); } public void vaildReq(Discount discount) { if(Objects.isNull(discount) || StringUtils.isBlank(discount.getName()) || Objects.isNull(discount.getType()) || Objects.isNull(discount.getLimitType()) || (discount.getLimitTime()==Constants.ONE && Objects.isNull(discount.getLimitTime())) || Objects.isNull(discount.getPrice()) || Objects.isNull(discount.getChannel()) || Objects.isNull(discount.getStartDate()) || Objects.isNull(discount.getEndDate()) || Objects.isNull(discount.getUseType()) || (discount.getUseType()==Constants.ZERO && ( Objects.isNull(discount.getUseStartDate()) || Objects.isNull(discount.getUseEndDate()) )) || (discount.getUseType()==Constants.ONE && Objects.isNull(discount.getUseDays())) || (discount.getUseType()==Constants.TWO && ( Objects.isNull(discount.getUseStartDate()) || Objects.isNull(discount.getUseDays()) )) || (Objects.isNull(discount.getUseHoliday()) || Objects.isNull(discount.getUseWorkday()) ) || (Objects.isNull(discount.getIsbike()) || Objects.isNull(discount.getIselecbike()) ) ){ throw new BusinessException(ResponseStatus.SERVER_ERROR); } if(discount.getStartDate().getTime()>discount.getEndDate().getTime()){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"销售时段信息错误"); } //固定日期生效 if(discount.getUseType()==Constants.ZERO && ( discount.getUseStartDate().getTime()>discount.getUseEndDate().getTime() || discount.getUseStartDate().getTime() < discount.getStartDate().getTime() || discount.getUseEndDate().getTime() > discount.getEndDate().getTime() ) ){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"使用时段信息错误"); } //指定日期生效 if(discount.getUseType()==Constants.TWO && ( discount.getUseStartDate().getTime() discount.getEndDate().getTime() ) ){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"使用时段信息错误"); } } @Override public void deleteById(String id) { Discount discount = discountMapper.selectById(id); if(Objects.isNull(discount)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } if(Constants.equalsInteger(discount.getStatus(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非禁用数据,无法进行删除"); } discountMapper.update(null,new UpdateWrapper().lambda().set(Discount::getIsdeleted,Constants.ONE).eq(Discount::getId,discount.getId())); } @Override public void updStatus(Discount discount) { if(Objects.isNull(discount) || StringUtils.isBlank(discount.getId()) || Objects.isNull(discount.getStatus())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } discountMapper.update(null,new UpdateWrapper().lambda().set(Discount::getStatus,discount.getStatus()).eq(Discount::getId,discount.getId())); } @Override public void delete(Discount discount) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(discount); discountMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } discountMapper.deleteBatchIds(ids); } @Override public void updateById(Discount discount) { discountMapper.updateById(discount); } @Override public void updateByIdInBatch(List discounts) { if (CollectionUtils.isEmpty(discounts)) { return; } for (Discount discount: discounts) { this.updateById(discount); } } @Override public Discount findById(String id) { Discount discount = discountJoinMapper.selectOne(new MPJLambdaWrapper() .select(" (select count(1) from goodsorder g where g.obj_type = 0 and g.obj_id = t.id and g.pay_status = 1 ) ",Discount::getSaleNum) .leftJoin(SystemUser.class,SystemUser::getId,Discount::getCreator) .eq(Discount::getId,id) ); if(Objects.isNull(discount)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } if(StringUtils.isNotBlank(discount.getImgurl())){ String path =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode()+ systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.DISCOUNT).getCode(); discount.setFullImgUrl(path + discount.getImgurl()); } return discount; } @Override public Discount findOne(Discount discount) { QueryWrapper wrapper = new QueryWrapper<>(discount); return discountMapper.selectOne(wrapper); } @Override public List findList(Discount discount) { QueryWrapper wrapper = new QueryWrapper<>(discount); return discountMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); Discount modele = pageWrap.getModel(); queryWrapper.selectAll(Discount.class) .select(" (select count(1) from goodsorder g where g.obj_type = 0 and g.obj_id = t.id and g.pay_status = 1 ) ",Discount::getSaleNum) .leftJoin(SystemUser.class,SystemUser::getId,Discount::getCreator) .like(StringUtils.isNotEmpty(pageWrap.getModel().getName()),Discount::getName,pageWrap.getModel().getName()) .eq(Objects.nonNull(modele.getStatus()),Discount::getStatus, modele.getStatus()) .eq(Objects.nonNull(modele.getBikeOrElec()) && Constants.equalsInteger(modele.getBikeOrElec(),Constants.ONE),Discount::getIsbike, Constants.ONE) .eq(Objects.nonNull(modele.getBikeOrElec()) && Constants.equalsInteger(modele.getBikeOrElec(),Constants.TWO),Discount::getIselecbike, Constants.ONE) .eq(Discount::getIsdeleted, Constants.ZERO) .eq( pageWrap.getModel().getStatus() !=null,BikeRepair::getStatus,pageWrap.getModel().getStatus()); queryWrapper.orderByDesc(Discount::getCreateDate); return PageData.from(discountJoinMapper.selectJoinPage(page, Discount.class,queryWrapper)); } @Override public long count(Discount discount) { QueryWrapper wrapper = new QueryWrapper<>(discount); return discountMapper.selectCount(wrapper); } }