| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | 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.DateUtil; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.DiscountLogMapper; |
| | | import com.doumee.dao.business.DiscountMemberMapper; |
| | | import com.doumee.dao.business.model.DiscountMember; |
| | | import com.doumee.dao.business.join.DiscountMemberJoinMapper; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.business.web.request.DiscountMemberDTO; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.service.business.DiscountMemberService; |
| | | 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.checkerframework.checker.units.qual.A; |
| | | 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; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 用户骑行套餐卡关联表Service实现 |
| | |
| | | |
| | | @Autowired |
| | | private DiscountMemberMapper discountMemberMapper; |
| | | |
| | | @Autowired |
| | | private DiscountMemberJoinMapper discountMemberJoinMapper; |
| | | |
| | | @Autowired |
| | | private DiscountLogMapper discountLogMapper; |
| | | |
| | | |
| | | @Override |
| | | public String create(DiscountMember discountMember) { |
| | |
| | | } |
| | | |
| | | @Override |
| | | public DiscountMember getDetail(String id) { |
| | | DiscountMember discountMember = discountMemberMapper.selectById(id); |
| | | if(Objects.isNull(discountMember)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | // List<DiscountLog> discountLogList = discountLogMapper.selectJoinList(DiscountLog.class,new MPJLambdaWrapper<DiscountLog>() |
| | | // .selectAll(DiscountLog.class) |
| | | // .selectAs(SystemUser::getRealname,DiscountLog::getCreatorName) |
| | | // .leftJoin(SystemUser.class,SystemUser::getId,DiscountLog::getCreator) |
| | | // .eq(DiscountLog::getDiscountMemberId,discountMember.getId()) |
| | | // .eq(DiscountLog::getIsdeleted,Constants.ZERO) |
| | | // .orderByDesc(DiscountLog::getId) |
| | | // ); |
| | | // discountMember.setUseTimes(discountMember.getDiscountLogList().size()); |
| | | // if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(discountLogList)){ |
| | | // discountMember.setDiscountLogList(discountLogList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList())); |
| | | // discountMember.setOptLogList(discountLogList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList())); |
| | | // |
| | | // } |
| | | return discountMember; |
| | | } |
| | | |
| | | @Override |
| | | public DiscountMember findOne(DiscountMember discountMember) { |
| | | QueryWrapper<DiscountMember> wrapper = new QueryWrapper<>(discountMember); |
| | | return discountMemberMapper.selectOne(wrapper); |
| | |
| | | @Override |
| | | public PageData<DiscountMember> findPage(PageWrap<DiscountMember> pageWrap) { |
| | | IPage<DiscountMember> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | QueryWrapper<DiscountMember> queryWrapper = new QueryWrapper<>(); |
| | | MPJLambdaWrapper<DiscountMember> queryWrapper = new MPJLambdaWrapper<>(); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getId, pageWrap.getModel().getId()); |
| | | } |
| | | if (pageWrap.getModel().getCreateDate() != null) { |
| | | queryWrapper.lambda().ge(DiscountMember::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); |
| | | queryWrapper.lambda().le(DiscountMember::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); |
| | | } |
| | | if (pageWrap.getModel().getCreator() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getCreator, pageWrap.getModel().getCreator()); |
| | | } |
| | | if (pageWrap.getModel().getEditDate() != null) { |
| | | queryWrapper.lambda().ge(DiscountMember::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); |
| | | queryWrapper.lambda().le(DiscountMember::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); |
| | | } |
| | | if (pageWrap.getModel().getEditor() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getEditor, pageWrap.getModel().getEditor()); |
| | | } |
| | | if (pageWrap.getModel().getIsdeleted() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getIsdeleted, pageWrap.getModel().getIsdeleted()); |
| | | } |
| | | if (pageWrap.getModel().getInfo() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getInfo, pageWrap.getModel().getInfo()); |
| | | } |
| | | if (pageWrap.getModel().getCode() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getCode, pageWrap.getModel().getCode()); |
| | | } |
| | | if (pageWrap.getModel().getName() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getName, pageWrap.getModel().getName()); |
| | | } |
| | | if (pageWrap.getModel().getType() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getType, pageWrap.getModel().getType()); |
| | | } |
| | | if (pageWrap.getModel().getLimitType() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getLimitType, pageWrap.getModel().getLimitType()); |
| | | } |
| | | if (pageWrap.getModel().getLimitTime() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getLimitTime, pageWrap.getModel().getLimitTime()); |
| | | } |
| | | if (pageWrap.getModel().getPrice() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getPrice, pageWrap.getModel().getPrice()); |
| | | } |
| | | if (pageWrap.getModel().getLinePrice() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getLinePrice, pageWrap.getModel().getLinePrice()); |
| | | } |
| | | if (pageWrap.getModel().getChannel() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getChannel, pageWrap.getModel().getChannel()); |
| | | } |
| | | if (pageWrap.getModel().getImgurl() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getImgurl, pageWrap.getModel().getImgurl()); |
| | | } |
| | | if (pageWrap.getModel().getDescs() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getDescs, pageWrap.getModel().getDescs()); |
| | | } |
| | | if (pageWrap.getModel().getContent() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getContent, pageWrap.getModel().getContent()); |
| | | } |
| | | if (pageWrap.getModel().getStartDate() != null) { |
| | | queryWrapper.lambda().ge(DiscountMember::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate())); |
| | | queryWrapper.lambda().le(DiscountMember::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getStartDate())); |
| | | } |
| | | if (pageWrap.getModel().getEndDate() != null) { |
| | | queryWrapper.lambda().ge(DiscountMember::getEndDate, Utils.Date.getStart(pageWrap.getModel().getEndDate())); |
| | | queryWrapper.lambda().le(DiscountMember::getEndDate, Utils.Date.getEnd(pageWrap.getModel().getEndDate())); |
| | | } |
| | | if (pageWrap.getModel().getUseType() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getUseType, pageWrap.getModel().getUseType()); |
| | | } |
| | | if (pageWrap.getModel().getUseStartDate() != null) { |
| | | queryWrapper.lambda().ge(DiscountMember::getUseStartDate, Utils.Date.getStart(pageWrap.getModel().getUseStartDate())); |
| | | queryWrapper.lambda().le(DiscountMember::getUseStartDate, Utils.Date.getEnd(pageWrap.getModel().getUseStartDate())); |
| | | } |
| | | if (pageWrap.getModel().getUseEndDate() != null) { |
| | | queryWrapper.lambda().ge(DiscountMember::getUseEndDate, Utils.Date.getStart(pageWrap.getModel().getUseEndDate())); |
| | | queryWrapper.lambda().le(DiscountMember::getUseEndDate, Utils.Date.getEnd(pageWrap.getModel().getUseEndDate())); |
| | | } |
| | | if (pageWrap.getModel().getUseDays() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getUseDays, pageWrap.getModel().getUseDays()); |
| | | } |
| | | if (pageWrap.getModel().getUseHoliday() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getUseHoliday, pageWrap.getModel().getUseHoliday()); |
| | | } |
| | | if (pageWrap.getModel().getUseWorkday() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getUseWorkday, pageWrap.getModel().getUseWorkday()); |
| | | } |
| | | if (pageWrap.getModel().getSaleLimit() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getSaleLimit, pageWrap.getModel().getSaleLimit()); |
| | | } |
| | | if (pageWrap.getModel().getSaleDayLimit() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getSaleDayLimit, pageWrap.getModel().getSaleDayLimit()); |
| | | } |
| | | if (pageWrap.getModel().getStatus() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getStatus, pageWrap.getModel().getStatus()); |
| | | } |
| | | if (pageWrap.getModel().getMemberId() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getMemberId, pageWrap.getModel().getMemberId()); |
| | | } |
| | | if (pageWrap.getModel().getGoodsorderId() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getGoodsorderId, pageWrap.getModel().getGoodsorderId()); |
| | | } |
| | | if (pageWrap.getModel().getIsbike() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getIsbike, pageWrap.getModel().getIsbike()); |
| | | } |
| | | if (pageWrap.getModel().getIselecbike() != null) { |
| | | queryWrapper.lambda().eq(DiscountMember::getIselecbike, pageWrap.getModel().getIselecbike()); |
| | | } |
| | | for(PageWrap.SortData sortData: pageWrap.getSorts()) { |
| | | if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { |
| | | queryWrapper.orderByDesc(sortData.getProperty()); |
| | | } else { |
| | | queryWrapper.orderByAsc(sortData.getProperty()); |
| | | } |
| | | } |
| | | return PageData.from(discountMemberMapper.selectPage(page, queryWrapper)); |
| | | DiscountMember model = pageWrap.getModel(); |
| | | queryWrapper.selectAll(DiscountMember.class) |
| | | .selectAs(Member::getOpenid,DiscountMember::getOpenid) |
| | | .select(" ( select count(1) from discount_log d where d.discount_member_id = t.id and d.type = 0 ) ",DiscountMember::getUseTimes) |
| | | .leftJoin(Member.class,Member::getId,DiscountMember::getMemberId) |
| | | .like(StringUtils.isNotBlank(model.getCode()),DiscountMember::getCode,model.getCode()) |
| | | .like(StringUtils.isNotBlank(model.getName()),DiscountMember::getName,model.getName()) |
| | | .like(StringUtils.isNotBlank(model.getOpenid()),Member::getOpenid,model.getOpenid()) |
| | | .eq(Objects.nonNull(model.getStatus()),DiscountMember::getStatus,model.getStatus()) |
| | | .ge(Objects.nonNull(model.getStartCreateDate()),DiscountMember::getCreateDate, model.getStartCreateDate()) |
| | | .le(Objects.nonNull(model.getEndCreateDate()),DiscountMember::getCreateDate, model.getEndCreateDate()) |
| | | .ne(DiscountMember::getStatus,Constants.TWO) |
| | | .orderByDesc(DiscountMember::getCode); |
| | | return PageData.from(discountMemberJoinMapper.selectJoinPage(page, DiscountMember.class,queryWrapper)); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void cancel(DiscountMemberDTO model){ |
| | | LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | MPJLambdaWrapper<DiscountMember> queryWrapper = new MPJLambdaWrapper<>(); |
| | | queryWrapper.selectAll(DiscountMember.class) |
| | | .leftJoin(Member.class,Member::getId,DiscountMember::getMemberId) |
| | | .eq(DiscountMember::getStatus,Constants.ZERO) |
| | | .like(StringUtils.isNotBlank(model.getCode()),DiscountMember::getCode,model.getCode()) |
| | | .like(StringUtils.isNotBlank(model.getName()),DiscountMember::getName,model.getName()) |
| | | .like(StringUtils.isNotBlank(model.getOpenid()),Member::getOpenid,model.getOpenid()) |
| | | .eq(Objects.nonNull(model.getId()),DiscountMember::getId,model.getId()) |
| | | .in(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(model.getChoseIdList()) |
| | | ,DiscountMember::getId,model.getChoseIdList()) |
| | | .orderByDesc(DiscountMember::getId); |
| | | List<DiscountMember> list = discountMemberJoinMapper.selectJoinList(DiscountMember.class,queryWrapper); |
| | | if(CollectionUtils.isEmpty(list)){ |
| | | return; |
| | | } |
| | | for (DiscountMember discountMember:list) { |
| | | if(!Constants.equalsInteger(discountMember.getStatus(),Constants.ZERO)){ |
| | | continue; |
| | | } |
| | | discountMemberMapper.update(null,new UpdateWrapper<DiscountMember>().lambda() |
| | | .set(DiscountMember::getStatus,Constants.ONE) |
| | | .eq(DiscountMember::getId,discountMember.getId()) |
| | | ); |
| | | //操作日志 |
| | | DiscountLog discountLog = new DiscountLog(); |
| | | discountLog.setIsdeleted(Constants.ZERO); |
| | | discountLog.setCreator(principal.getId()); |
| | | discountLog.setCreateDate(new Date()); |
| | | discountLog.setDiscountMemberId(discountMember.getId()); |
| | | discountLog.setType(Constants.ONE); |
| | | discountLog.setInfo(model.getInfo()); |
| | | discountLog.setEditInfo("退货退卡"); |
| | | discountLog.setGoodsorderId(discountMember.getGoodsorderId()); |
| | | discountLogMapper.insert(discountLog); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void adjust(DiscountMemberDTO model){ |
| | | if(Objects.isNull(model) |
| | | || Objects.isNull(model.getAddDays())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | MPJLambdaWrapper<DiscountMember> queryWrapper = new MPJLambdaWrapper<>(); |
| | | queryWrapper.selectAll(DiscountMember.class) |
| | | .leftJoin(Member.class,Member::getId,DiscountMember::getMemberId) |
| | | .eq(DiscountMember::getStatus,Constants.ZERO) |
| | | .like(StringUtils.isNotBlank(model.getCode()),DiscountMember::getCode,model.getCode()) |
| | | .like(StringUtils.isNotBlank(model.getName()),DiscountMember::getName,model.getName()) |
| | | .like(StringUtils.isNotBlank(model.getOpenid()),Member::getOpenid,model.getOpenid()) |
| | | .eq(Objects.nonNull(model.getId()),DiscountMember::getId,model.getId()) |
| | | .in(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(model.getChoseIdList()) |
| | | ,DiscountMember::getId,model.getChoseIdList()) |
| | | .orderByDesc(DiscountMember::getId); |
| | | List<DiscountMember> list = discountMemberJoinMapper.selectJoinList(DiscountMember.class,queryWrapper); |
| | | if(CollectionUtils.isEmpty(list)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到可调整的套餐卡信息"); |
| | | } |
| | | for (DiscountMember discountMember:list) { |
| | | if(!Constants.equalsInteger(discountMember.getStatus(),Constants.ZERO)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+discountMember.getCode()+"】套餐卡已作废,无法进行该操作"); |
| | | } |
| | | String useEndDate = DateUtil.getXDaysAfter(discountMember.getUseEndDate(),model.getAddDays()); |
| | | discountMemberMapper.update(null,new UpdateWrapper<DiscountMember>().lambda() |
| | | //.setSql(" use_end_date = use_end_date::date + " + model.getAddDays() ) |
| | | .set(DiscountMember::getUseEndDate,useEndDate) |
| | | .eq(DiscountMember::getId,discountMember.getId()) |
| | | ); |
| | | //操作日志 |
| | | DiscountLog discountLog = new DiscountLog(); |
| | | discountLog.setIsdeleted(Constants.ZERO); |
| | | discountLog.setCreator(principal.getId()); |
| | | discountLog.setCreateDate(new Date()); |
| | | discountLog.setDiscountMemberId(discountMember.getId()); |
| | | discountLog.setType(Constants.TWO); |
| | | discountLog.setGoodsorderId(discountMember.getGoodsorderId()); |
| | | discountLog.setInfo(model.getInfo()); |
| | | discountLog.setEditDays(model.getAddDays()); |
| | | discountLog.setEditInfo("将有效期增加"+model.getAddDays()+"天, 调整后有效期至"+useEndDate); |
| | | discountLogMapper.insert(discountLog); |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public long count(DiscountMember discountMember) { |
| | | QueryWrapper<DiscountMember> wrapper = new QueryWrapper<>(discountMember); |
| | | return discountMemberMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |