package cc.mrbird.febs.mall.service.impl;
|
|
import cc.mrbird.febs.common.entity.FebsResponse;
|
import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum;
|
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<MallTeamLeaderMapper, MallTeamLeader> implements IApiMallTeamLeaderService {
|
|
@Override
|
@Transactional
|
public FebsResponse applyLeader(ApiApplayLeaderDto apiApplayLeaderDto) {
|
MallMember member = LoginUserUtil.getLoginUser();
|
Long memberId = member.getId();
|
List<MallTeamLeader> mallTeamLeaders = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_ING);
|
if(CollUtil.isNotEmpty(mallTeamLeaders)){
|
return new FebsResponse().fail().message("正在申请中");
|
}
|
List<MallTeamLeader> mallTeamLeaderCancel = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_CANCEL);
|
if(CollUtil.isNotEmpty(mallTeamLeaderCancel)){
|
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<ApiLeaderListVo> findLeaderListInPage(ApiLeaderListDto apiLeaderListDto) {
|
Page<MallTeamLeader> page = new Page<>(apiLeaderListDto.getPageNum(), apiLeaderListDto.getPageSize());
|
IPage<MallTeamLeader> 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<MallTeamLeader> mallTeamLeadersIng = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_ING);
|
List<MallTeamLeader> mallTeamLeadersNo = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_NO);
|
List<MallTeamLeader> mallTeamLeadersYes = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_YES);
|
List<MallTeamLeader> mallTeamLeadersCancel = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_CANCEL);
|
if(CollUtil.isNotEmpty(mallTeamLeadersIng) ||CollUtil.isNotEmpty(mallTeamLeadersYes)){
|
apiMallleaderStateVo.setState(2);
|
}else if(CollUtil.isNotEmpty(mallTeamLeadersNo)){
|
apiMallleaderStateVo.setState(1);
|
}else if(CollUtil.isNotEmpty(mallTeamLeadersCancel)){
|
apiMallleaderStateVo.setState(2);
|
}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.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);
|
}
|
|
@Override
|
public List<OrderListVo> findLeaderOrderListInPage(ApiLeaderOrderListDto apiLeaderOrderListDto) {
|
MallMember member = LoginUserUtil.getLoginUser();
|
IPage<MallOrderInfo> page = new Page<>(apiLeaderOrderListDto.getPageNum(), apiLeaderOrderListDto.getPageSize());
|
apiLeaderOrderListDto.setMemberId(member.getId());
|
IPage<MallOrderInfo> 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_FINISH.getValue() != status){
|
return new FebsResponse().fail().message("订单不是待确认到货状态");
|
}
|
Integer deliveryType = mallOrderInfo.getDeliveryType();
|
if(1 != deliveryType){
|
return new FebsResponse().fail().message("订单的配送方式不是自提");
|
}
|
mallOrderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_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<MallTeamLeader> 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);
|
}
|
|
}
|