| | |
| | | package com.stylefeng.guns.modular.system.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.stylefeng.guns.core.util.DateUtil; |
| | | import com.stylefeng.guns.modular.system.controller.resp.TDriverResp; |
| | | import com.stylefeng.guns.modular.system.controller.util.HttpUtils; |
| | | import com.stylefeng.guns.modular.system.controller.util.UUIDUtil; |
| | | import com.stylefeng.guns.modular.system.dao.*; |
| | | import com.stylefeng.guns.modular.system.enums.OrderStateEnum; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.ITDriverService; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.modular.system.service.ITRegionService; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.io.File; |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.Period; |
| | |
| | | private TDriverMapper tDriverMapper; |
| | | @Autowired |
| | | private TAppUserMapper tAppUserMapper; |
| | | @Autowired |
| | | private TOrderRefusalMapper tOrderRefusalMapper; |
| | | @Autowired |
| | | private TRegionMapper tRegionMapper; |
| | | @Autowired |
| | | private ITRegionService itRegionService; |
| | | @Autowired |
| | | private HttpUtils httpUtils; |
| | | |
| | | @Override |
| | | public EntityWrapper<TDriver> getPageList(String createTime, String phone, Integer status) { |
| | |
| | | && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode()) |
| | | && new SimpleDateFormat("yyyyMM").format(order.getCreateTime()).equals(monthDate)).collect(Collectors.toList()); |
| | | tDriverResp.setMonthOrderCount(monthOrderCount.size()); |
| | | // TODO 拒单次数 |
| | | List<TOrder> refusalCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId()) |
| | | && order.getState().equals(OrderStateEnum.CANCELED.getCode())).collect(Collectors.toList()); |
| | | tDriverResp.setRefusalCount(refusalCount.size()); |
| | | // 拒单次数 |
| | | List<TOrderRefusal> driverRefusalList = tOrderRefusalMapper.selectList(new EntityWrapper<TOrderRefusal>().eq("driver_id", tDriver.getId())); |
| | | tDriverResp.setRefusalCount(driverRefusalList.size()); |
| | | |
| | | tDriverRespList.add(tDriverResp); |
| | | } |
| | |
| | | model.addAttribute("id",tDriver.getId()); |
| | | model.addAttribute("code",tDriver.getCode()); |
| | | model.addAttribute("name",tDriver.getName()); |
| | | model.addAttribute("avatar",tDriver.getAvatar()); |
| | | model.addAttribute("phone",tDriver.getPhone()); |
| | | model.addAttribute("sex",tDriver.getSex()); |
| | | model.addAttribute("driverLicenseNumber",tDriver.getDriverLicenseNumber()); |
| | |
| | | model.addAttribute("provinceName",tDriver.getProvinceName()); |
| | | model.addAttribute("cityName",tDriver.getCityName()); |
| | | model.addAttribute("areaName",tDriver.getAreaName()); |
| | | model.addAttribute("integral",tDriver.getIntegral()); |
| | | model.addAttribute("score",tDriver.getScore()); |
| | | model.addAttribute("createTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tDriver.getCreateTime())); |
| | | |
| | | // 计算驾龄 |
| | | if(Objects.nonNull(tDriver.getFirstCertificateTime())){ |
| | | ZoneId zoneId = ZoneId.systemDefault(); |
| | | LocalDate firstTime = tDriver.getFirstCertificateTime().toInstant().atZone(zoneId).toLocalDate(); |
| | | LocalDate now = tDriver.getFirstCertificateTime().toInstant().atZone(zoneId).toLocalDate(); |
| | | Period period = Period.between(firstTime, now); |
| | | model.addAttribute("drivingExperience",period.getYears()); |
| | | }else { |
| | | model.addAttribute("drivingExperience",0); |
| | | } |
| | | |
| | | List<TOrder> tOrders = tOrderMapper.selectList(new EntityWrapper<TOrder>()); |
| | | |
| | | String monthDate = new SimpleDateFormat("yyyyMM").format(new Date()); |
| | | |
| | | if(Objects.nonNull(tDriver.getBackgroundBalance()) && Objects.nonNull(tDriver.getBalance())){ |
| | | // 设置余额 |
| | | tDriver.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance())); |
| | | model.addAttribute("balance",tDriver.getBalance()); |
| | | }else { |
| | | model.addAttribute("balance",BigDecimal.ZERO); |
| | | } |
| | | |
| | | // 所属代理商 |
| | | TAgent tAgent = tAgentMapper.selectById(tDriver.getAgentId()); |
| | |
| | | } |
| | | |
| | | // 查询邀请人 |
| | | if(1 == tDriver.getInviterType()){ |
| | | if(Objects.nonNull(tDriver.getInviterType()) && 1 == tDriver.getInviterType()){ |
| | | TAppUser tAppUser = tAppUserMapper.selectById(tDriver.getInviterId()); |
| | | model.addAttribute("inviterName",tAppUser.getNickname()); |
| | | model.addAttribute("inviterPhone",tAppUser.getPhone()); |
| | | }else if(2 == tDriver.getInviterType()){ |
| | | }else if(Objects.nonNull(tDriver.getInviterType()) && 2 == tDriver.getInviterType()){ |
| | | TDriver tDriver1 = tDriverMapper.selectById(tDriver.getInviterId()); |
| | | model.addAttribute("inviterName",tDriver1.getName()); |
| | | model.addAttribute("inviterPhone",tDriver1.getPhone()); |
| | | }else { |
| | | model.addAttribute("inviterName",""); |
| | | model.addAttribute("inviterPhone",""); |
| | | } |
| | | |
| | | // 查询当前用户邀请了哪些人 |
| | | List<TDriver> list = tDriverMapper.selectList(new EntityWrapper<TDriver>().eq("inviterId", tDriver.getId())); |
| | | if(!CollectionUtils.isEmpty(list)){ |
| | | model.addAttribute("inviterCount",list.size()); |
| | | model.addAttribute("inviterCommission",0); |
| | | }else { |
| | | model.addAttribute("inviterCommission",0); |
| | | model.addAttribute("inviterCount",0); |
| | | } |
| | | |
| | | if(!CollectionUtils.isEmpty(tOrders)){ |
| | |
| | | && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode()) |
| | | && new SimpleDateFormat("yyyyMM").format(order.getCreateTime()).equals(monthDate)).collect(Collectors.toList()); |
| | | model.addAttribute("monthOrderCount",monthOrderCount.size()); |
| | | // TODO 拒单次数 |
| | | List<TOrder> refusalCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId()) |
| | | && order.getState().equals(OrderStateEnum.CANCELED.getCode())).collect(Collectors.toList()); |
| | | model.addAttribute("refusalCount",refusalCount.size()); |
| | | // 拒单次数 |
| | | List<TOrderRefusal> driverRefusalList = tOrderRefusalMapper.selectList(new EntityWrapper<TOrderRefusal>().eq("driver_id", tDriver.getId())); |
| | | model.addAttribute("refusalCount",driverRefusalList.size()); |
| | | // todo 累计收入 |
| | | model.addAttribute("cumulativeIncome",0); |
| | | }else { |
| | | model.addAttribute("cumulativeOrderCount",""); |
| | | model.addAttribute("monthOrderCount",""); |
| | | model.addAttribute("refusalCount",""); |
| | | model.addAttribute("cumulativeOrderCount",0); |
| | | model.addAttribute("monthOrderCount",0); |
| | | model.addAttribute("refusalCount",0); |
| | | // 累计收入 |
| | | model.addAttribute("cumulativeIncome",0); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void detail(Integer tDriverId, Model model) { |
| | | auditPage(tDriverId,model); |
| | | // TODO 查询司机 |
| | | TDriver tDriver = tDriverMapper.selectById(tDriverId); |
| | | public JSONObject ocr(String imgUrl) { |
| | | File file = new File(imgUrl); |
| | | String result = httpUtils.ocr("2", file); |
| | | JSONObject jsonObject = JSONObject.parseObject(result); |
| | | return jsonObject; |
| | | } |
| | | |
| | | @Override |
| | | public void addOrUpdate(TDriver tDriver) { |
| | | // 对省市区做处理 |
| | | String[] split = tDriver.getAreaId().split("/"); |
| | | // 查询省市 |
| | | // 黑龙江省/大兴安岭地区 |
| | | // 702/852 |
| | | TRegion province = tRegionMapper.selectById(split[0]); |
| | | tDriver.setProvinceName(province.getName()); |
| | | tDriver.setProvinceCode(province.getCode()); |
| | | |
| | | TRegion city = tRegionMapper.selectById(split[1]); |
| | | if(Objects.isNull(city)){ |
| | | city = itRegionService.selectOne(new EntityWrapper<TRegion>().eq("name",split[1])); |
| | | } |
| | | tDriver.setCityName(city.getName()); |
| | | tDriver.setCityCode(city.getCode()); |
| | | |
| | | TRegion area = tRegionMapper.selectById(split[2]); |
| | | if(Objects.isNull(area)){ |
| | | area = itRegionService.selectOne(new EntityWrapper<TRegion>().eq("name",split[2])); |
| | | } |
| | | tDriver.setAreaName(area.getName()); |
| | | tDriver.setAreaCode(area.getCode()); |
| | | |
| | | tDriver.setCode(UUIDUtil.getNumberRandom(16)); |
| | | tDriver.setBalance(BigDecimal.ZERO); |
| | | tDriver.setBackgroundBalance(BigDecimal.ZERO); |
| | | |
| | | // 通过省市查询代理商 |
| | | List<TAgent> tAgent = tAgentMapper.selectList(new EntityWrapper<TAgent>().eq("provinceCode", province.getCode()) |
| | | .eq("cityCode", city.getCode()) |
| | | .last("LIMIT 1")); |
| | | if(!CollectionUtils.isEmpty(tAgent)){ |
| | | tDriver.setAgentId(tAgent.get(0).getId()); |
| | | } |
| | | // 查询邀约人(司机端) |
| | | List<TDriver> emergencyDriver = tDriverMapper.selectList(new EntityWrapper<TDriver>().eq("phone", tDriver.getEmergencyPhone()) |
| | | .last("LIMIT 1")); |
| | | if(!CollectionUtils.isEmpty(emergencyDriver)){ |
| | | tDriver.setInviterId(emergencyDriver.get(0).getId()); |
| | | tDriver.setInviterType(2); |
| | | } |
| | | // 通过省市区查询分公司 |
| | | List<TBranchOffice> tBranchOffice = tBranchOfficeMapper.selectList(new EntityWrapper<TBranchOffice>().eq("provinceCode", province.getCode()) |
| | | .eq("cityCode", city.getCode()) |
| | | .eq("districtCode", area.getCode()) |
| | | .last("LIMIT 1")); |
| | | if(!CollectionUtils.isEmpty(tBranchOffice)){ |
| | | tDriver.setBranchOfficeId(tBranchOffice.get(0).getId()); |
| | | } |
| | | |
| | | // ocr识别 |
| | | // JSONObject ocr = this.ocr("E:\\071bf986db0b00355c0ed190bbd3b16.png"); |
| | | // System.err.println(ocr); |
| | | } |
| | | |
| | | @Override |
| | | public EntityWrapper<TDriver> getCommissionPageList(String name, String phone, Integer status) { |
| | | EntityWrapper<TDriver> wrapper = new EntityWrapper<>(); |
| | | // 手机号 |
| | | if(StringUtils.hasLength(phone)){ |
| | | wrapper.like("phone",phone); |
| | | } |
| | | // 状态 |
| | | if(Objects.nonNull(status)){ |
| | | wrapper.eq("status",status); |
| | | } |
| | | // 姓名 |
| | | if(StringUtils.hasLength(name)){ |
| | | wrapper.like("name",name); |
| | | } |
| | | wrapper.orderBy(true,"approvalStatus"); |
| | | return wrapper; |
| | | } |
| | | } |