package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.enumerates.OrderStatusEnum; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.common.utils.ShareCodeUtil; import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion; import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.MallExpressInfo; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallOrderInfo; import cc.mrbird.febs.mall.entity.MallTeamLeader; import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; import cc.mrbird.febs.mall.mapper.MallTeamLeaderMapper; import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService; import cc.mrbird.febs.mall.vo.ApiLeaderInfoVo; import cc.mrbird.febs.mall.vo.ApiLeaderListVo; import cc.mrbird.febs.mall.vo.ApiMallleaderStateVo; import cc.mrbird.febs.mall.vo.OrderListVo; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Slf4j @Service @RequiredArgsConstructor public class ApiMallTeamLeaderServiceImpl extends ServiceImpl implements IApiMallTeamLeaderService { @Override @Transactional public FebsResponse applyLeader(ApiApplayLeaderDto apiApplayLeaderDto) { MallMember member = LoginUserUtil.getLoginUser(); Long memberId = member.getId(); List mallTeamLeaders = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_ING); if(CollUtil.isNotEmpty(mallTeamLeaders)){ return new FebsResponse().fail().message("正在申请中"); } MallTeamLeader mallTeamLeader = MallTeamLeaderConversion.INSTANCE.dtoToEntity(apiApplayLeaderDto); mallTeamLeader.setMemberId(memberId); mallTeamLeader.setState(MallTeamLeader.STATE_ING); mallTeamLeader.setUniqueCode(member.getInviteId()); this.baseMapper.insert(mallTeamLeader); return new FebsResponse().success().message("申请成功"); } @Override public List findLeaderListInPage(ApiLeaderListDto apiLeaderListDto) { Page page = new Page<>(apiLeaderListDto.getPageNum(), apiLeaderListDto.getPageSize()); IPage mallTeamLeaderIPage = this.baseMapper.selectApiLeaderListInPage(page, apiLeaderListDto); return MallTeamLeaderConversion.INSTANCE.entitysToVos(mallTeamLeaderIPage.getRecords()); } @Override public FebsResponse leaderState() { MallMember member = LoginUserUtil.getLoginUser(); Long memberId = member.getId(); ApiMallleaderStateVo apiMallleaderStateVo = new ApiMallleaderStateVo(); List mallTeamLeadersIng = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_ING); List mallTeamLeadersNo = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_NO); List mallTeamLeadersYes = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_YES); if(CollUtil.isNotEmpty(mallTeamLeadersIng) ||CollUtil.isNotEmpty(mallTeamLeadersYes)){ apiMallleaderStateVo.setState(2); }else if(CollUtil.isNotEmpty(mallTeamLeadersNo)){ apiMallleaderStateVo.setState(1); }else{ apiMallleaderStateVo.setState(1); } return new FebsResponse().success().data(apiMallleaderStateVo); } @Override public FebsResponse getApiLeaderInfoVoById(Long id) { MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); ApiLeaderInfoVo apiLeaderInfoVo = new ApiLeaderInfoVo(); apiLeaderInfoVo.setName(mallTeamLeader.getName()); apiLeaderInfoVo.setPhone(mallTeamLeader.getPhone()); apiLeaderInfoVo.setAddressPic(mallTeamLeader.getAddressPic()); apiLeaderInfoVo.setUniqueCode(mallTeamLeader.getUniqueCode()); apiLeaderInfoVo.setProvince(mallTeamLeader.getProvince()); apiLeaderInfoVo.setCity(mallTeamLeader.getCity()); apiLeaderInfoVo.setTownship(mallTeamLeader.getTownship()); apiLeaderInfoVo.setDetailAddress(mallTeamLeader.getDetailAddress()); apiLeaderInfoVo.setAddressArea(mallTeamLeader.getAddressArea()); return new FebsResponse().success().data(apiLeaderInfoVo); } @Override public List findLeaderOrderListInPage(ApiLeaderOrderListDto apiLeaderOrderListDto) { MallMember member = LoginUserUtil.getLoginUser(); IPage page = new Page<>(apiLeaderOrderListDto.getPageNum(), apiLeaderOrderListDto.getPageSize()); apiLeaderOrderListDto.setMemberId(member.getId()); IPage mallOrderInfos = this.baseMapper.selectApiLeaderOrderListInPage(page, apiLeaderOrderListDto); return MallOrderInfoConversion.INSTANCE.entitysToVos(mallOrderInfos.getRecords()); } private final MallOrderInfoMapper mallOrderInfoMapper; @Override @Transactional public FebsResponse leaderOrderConfirm(ApiLeaderOrderConfirmDto apiLeaderOrderConfirmDto) { MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByOrderNo(apiLeaderOrderConfirmDto.getOrderNo()); if(ObjectUtil.isEmpty(mallOrderInfo)){ return new FebsResponse().fail().message("订单不存在"); } Integer status = mallOrderInfo.getStatus(); if(OrderStatusEnum.WAIT_SHIPPING.getValue() != status){ return new FebsResponse().fail().message("订单不是待确认到货状态"); } Integer deliveryType = mallOrderInfo.getDeliveryType(); if(1 != deliveryType){ return new FebsResponse().fail().message("订单的配送方式不是自提"); } mallOrderInfo.setStatus(OrderStatusEnum.WAIT_FINISH.getValue()); mallOrderInfoMapper.updateById(mallOrderInfo); return new FebsResponse().success().message("确认成功"); } @Override public FebsResponse leaderTitle(ApiLeaderTitleDto apiLeaderTitleDto) { String uniqueCode = apiLeaderTitleDto.getUniqueCode(); Double longitude = apiLeaderTitleDto.getLongitude() == null ? 0 : apiLeaderTitleDto.getLongitude(); Double latitude = apiLeaderTitleDto.getLatitude() == null ? 0 : apiLeaderTitleDto.getLatitude(); ApiLeaderInfoVo apiLeaderInfoVo = new ApiLeaderInfoVo(); MallTeamLeader mallTeamLeader = new MallTeamLeader(); //特征码扫码 if(StrUtil.isNotEmpty(uniqueCode)){ mallTeamLeader = this.baseMapper.selectLeaderByUniqueCode(uniqueCode); //经纬度定位 }else if(longitude != 0 && latitude != 0){ mallTeamLeader = this.baseMapper.selectLeaderByLonAndLat(longitude,latitude); //直接进入,默认选择列表第一个 }else{ List mallTeamLeaderList = this.baseMapper.getMallTeamLeaderList(); if(CollUtil.isNotEmpty(mallTeamLeaderList)){ mallTeamLeader = mallTeamLeaderList.get(0); } } if(ObjectUtil.isNotEmpty(mallTeamLeader)){ apiLeaderInfoVo.setId(mallTeamLeader.getId()); apiLeaderInfoVo.setName(mallTeamLeader.getName()); apiLeaderInfoVo.setPhone(mallTeamLeader.getPhone()); apiLeaderInfoVo.setAddressPic(mallTeamLeader.getAddressPic()); apiLeaderInfoVo.setUniqueCode(mallTeamLeader.getUniqueCode()); apiLeaderInfoVo.setProvince(mallTeamLeader.getProvince()); apiLeaderInfoVo.setCity(mallTeamLeader.getCity()); apiLeaderInfoVo.setTownship(mallTeamLeader.getTownship()); apiLeaderInfoVo.setDetailAddress(mallTeamLeader.getDetailAddress()); apiLeaderInfoVo.setAddressArea(mallTeamLeader.getAddressArea()); } return new FebsResponse().success().data(apiLeaderInfoVo); } }