puzhibing
2023-05-18 26173f341341e360dd55e2739be4686070e7ed9d
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
@@ -13,12 +13,8 @@
import com.supersavedriving.driver.modular.system.util.mongodb.model.Location;
import com.supersavedriving.driver.modular.system.warpper.*;
import com.supersavedriving.driver.core.util.ToolUtil;
import com.supersavedriving.driver.modular.system.util.*;
import com.supersavedriving.driver.modular.system.util.GaoDe.model.District;
import com.supersavedriving.driver.modular.system.util.juhe.WeatherUtil;
import com.supersavedriving.driver.modular.system.warpper.*;
import com.supersavedriving.driver.modular.system.model.*;
import com.supersavedriving.driver.modular.system.service.*;
import com.supersavedriving.driver.modular.system.util.PushUtil;
import com.supersavedriving.driver.modular.system.warpper.AddOrderWarpper;
import com.supersavedriving.driver.modular.system.warpper.HallOrderList;
@@ -93,6 +89,12 @@
    @Autowired
    private IRevenueService revenueService;
    @Autowired
    private ICouponService couponService;
    @Autowired
    private IUserToCouponService userToCouponService;
    private Map<String, Timer> timerMap = new HashMap<>();
@@ -190,7 +192,13 @@
            pushUtil.pushOrderStatus(uid, 2, order.getId(), order.getStatus());
        }else{
            //开始推单
            pushOrder(order);
            Order finalOrder = order;
            new Thread(new Runnable() {
                @Override
                public void run() {
                    pushOrder(finalOrder);
                }
            }).start();
        }
        return ResultUtil.success(order.getState() == 102 ? order.getId() : null);
    }
@@ -535,6 +543,9 @@
        String value = redisUtil.getValue("DRIVER" + uid);
        List<HallOrderList> hallOrderLists = this.baseMapper.queryOrderHall(pageNum, pageSize);
        hallOrderLists.forEach(hallOrderList -> {
            if(ToolUtil.isEmpty(hallOrderList.getAvatar())){
                hallOrderList.setAvatar("https://csxdj.obs.cn-south-1.myhuaweicloud.com:443/66cc269703a84e4da87fb21e2c21ab1f.png");
            }
            hallOrderList.setCurrentDistance(0D);
            if(ToolUtil.isNotEmpty(value)){
                Map<String, Double> distance = GeodesyUtil.getDistance(hallOrderList.getStartLng() + "," + hallOrderList.getStartLat(), value);
@@ -571,7 +582,7 @@
        orderRefusal.setOrderId(orderId);
        orderRefusalService.insert(orderRefusal);
        Driver driver = driverService.selectById(order.getDriverId());
        Driver driver = driverService.selectById(uid);
        //扣除积分
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4));
        if(null != systemConfig) {
@@ -582,8 +593,10 @@
                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                accountChangeDetail.setUserType(2);
                accountChangeDetail.setUserId(order.getDriverId());
                accountChangeDetail.setUserId(uid);
                accountChangeDetail.setType(2);
                accountChangeDetail.setChangeType(2);
                accountChangeDetail.setOrderId(orderId);
                accountChangeDetail.setOldData(null == driver.getIntegral() ? 0 : driver.getIntegral().doubleValue());
                driver.setIntegral((null == driver.getIntegral() ? 0 : driver.getIntegral()) - num10);
                accountChangeDetail.setNewData(driver.getIntegral().doubleValue());
@@ -626,7 +639,7 @@
                redisUtil.unlock();
                return ResultUtil.error("订单已被取消");
            }
            if(state != 101){
            if(state != 101 && state != 201){
                redisUtil.unlock();
                return ResultUtil.error("手速慢了哦");
            }
@@ -641,6 +654,7 @@
            if(null != order.getUserId()){
                AppUser appUser = appUserService.selectById(order.getUserId());
                appUser.setCancelCount(0);
                appUser.setIsException(1);
                appUserService.updateById(appUser);
            }
@@ -714,9 +728,12 @@
        if(orderInfoWarpper.getTravelTime() == null){
            orderInfoWarpper.setTravelTime(0);
        }
        AppUser appUser = appUserService.selectById(uid);
        orderInfoWarpper.setBalance(appUser.getAccountBalance());
        AppUser appUser = appUserService.selectById(orderInfoWarpper.getUserId());
        orderInfoWarpper.setBalance(null == appUser ? 0D : appUser.getAccountBalance());
        orderInfoWarpper.setCurrentDistance(0D);
        if(ToolUtil.isEmpty(orderInfoWarpper.getAvatar())){
            orderInfoWarpper.setAvatar("https://csxdj.obs.cn-south-1.myhuaweicloud.com:443/66cc269703a84e4da87fb21e2c21ab1f.png");
        }
        String value = redisUtil.getValue("DRIVER" + uid);
        orderInfoWarpper.setPickUpTime(0);
        if(ToolUtil.isNotEmpty(value)){
@@ -746,6 +763,10 @@
        }
        if(order.getState() == 201){
            return ResultUtil.error("订单正在转单中");
        }
        if(order.getState() == 301){
            redisUtil.unlock();
            return ResultUtil.error("订单已被取消");
        }
        order.setState(processOperationsWarpper.getState());
        switch (processOperationsWarpper.getState()){
@@ -916,10 +937,16 @@
                    int travelTime = Double.valueOf((System.currentTimeMillis() - order.getStartTime().getTime()) / 60000).intValue();
                    pushOrderInfoWarpper.setTravelTime(travelTime);
                }
                pushUtil.pushOrderInfo(uid, 2, pushOrderInfoWarpper);
                if(null != order.getUserId()){
                    pushUtil.pushOrderInfo(order.getUserId(), 1, pushOrderInfoWarpper);
                }
                if(order.getState() == 301){//司机取消不推送给司机
                    CancelOrder cancelOrder = cancelOrderService.selectOne(new EntityWrapper<CancelOrder>().eq("orderId", order.getId()).eq("status", 1));
                    if(null != cancelOrder && cancelOrder.getUserType() == 2){
                        return;
                    }
                }
                pushUtil.pushOrderInfo(uid, 2, pushOrderInfoWarpper);
            }
        },0, 10000);
        timerMap.put(orderId.toString(), timer);
@@ -956,7 +983,13 @@
        orderTransferService.insert(orderTransfer);
        //开始派单
        pushOrder(order);
        Order finalOrder = order;
        new Thread(new Runnable() {
            @Override
            public void run() {
                pushOrder(finalOrder);
            }
        }).start();
        return ResultUtil.success();
    }
@@ -1055,6 +1088,8 @@
            driver.setServerStatus(1);
            driverService.updateById(driver);
        }
        pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getStatus());
        return ResultUtil.success();
    }
@@ -1104,17 +1139,59 @@
     * @throws Exception
     */
    @Override
    public ResultUtil setOrderStatus(Integer uid, Long orderId, Integer state) throws Exception {
    public ResultUtil setOrderStatus(Integer uid, Long orderId, Integer payType, Integer state) throws Exception {
        List<Integer> s = Arrays.asList(107, 108);
        if(!s.contains(state)){
            return ResultUtil.error("操作失败");
        }
        Order order = this.selectById(orderId);
        order.setState(state);
        // TODO: 2023/5/18 临时
        payType = 1;
        if(state == 108){
            payType = 2;
        }
        if(payType == 2 && state == 107){
            Coupon coupon = userToCouponService.queryCoupon(order.getUserId(), order.getOrderMoney());
            if(null != coupon){
                order.setCouponId(coupon.getId());
                order.setDiscountAmount(coupon.getCouponPreferentialAmount());
                order.setPayMoney(order.getOrderMoney() - coupon.getCouponPreferentialAmount());
            }
        }
        if(payType == 2 && state == 108){
            order.setPayType(3);
            order.setPayTime(new Date());
            order.setPayMoney(order.getOrderMoney() - order.getDiscountAmount());
            if(null != order.getCouponId()){
                UserToCoupon userToCoupon = userToCouponService.selectById(order.getCouponId());
                if(userToCoupon.getValidCount() > 0){
                    userToCoupon.setValidCount(userToCoupon.getValidCount() - 1);
                    userToCouponService.updateById(userToCoupon);
                    Coupon coupon = couponService.selectById(userToCoupon.getCouponId());
                    order.setPayMoney(order.getPayMoney() - coupon.getCouponPreferentialAmount());
                    order.setCouponId(coupon.getId());
                    order.setDiscountedPrice(coupon.getCouponPreferentialAmount());
                    Driver driver = driverService.selectById(order.getDriverId());
                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                    accountChangeDetail.setUserType(2);
                    accountChangeDetail.setUserId(order.getDriverId());
                    accountChangeDetail.setCreateTime(new Date());
                    accountChangeDetail.setOldData(driver.getCouponBalance());
                    accountChangeDetail.setType(1);
                    accountChangeDetail.setChangeType(7);
                    accountChangeDetail.setOrderId(order.getId());
                    accountChangeDetail.setExplain("优惠券收入");
                    driver.setCouponBalance(driver.getCouponBalance() + coupon.getCouponPreferentialAmount());
                    accountChangeDetail.setNewData(driver.getCouponBalance());
                    driverService.updateById(driver);
                    accountChangeDetailService.insert(accountChangeDetail);
                }
            }
        }
        this.updateById(order);
@@ -1165,6 +1242,7 @@
                        if(num1 > 0){
                            Driver driver1 = driverService.selectById(appUser.getInviterId());
                            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                            accountChangeDetail.setUserType(2);
                            accountChangeDetail.setUserId(driver1.getId());
                            accountChangeDetail.setType(1);
@@ -1192,9 +1270,9 @@
                    //开始处理层级抽佣
                    if(null != driver.getInviterType() && driver.getInviterType() == 2){
                        Driver driver1 = driverService.selectById(driver.getInviterId());//一级司机
                        if(null != driver1.getInviterType() && driver1.getInviterType() == 2){
                        if(null != driver1 && null != driver1.getInviterType() && driver1.getInviterType() == 2){
                            Driver driver2 = driverService.selectById(driver1.getInviterId());//二级司机
                            if(null != driver2.getInviterType() && driver2.getInviterType() == 2){
                            if(null != driver2 && null != driver2.getInviterType() && driver2.getInviterType() == 2){
                                Driver driver3 = driverService.selectById(driver2.getInviterId());//三级级司机
                                Double num5 = jsonObject1.getDouble("num5");
                                Double num6 = jsonObject1.getDouble("num6");
@@ -1211,6 +1289,7 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver1.getId());
                                    accountChangeDetail.setType(1);
@@ -1236,6 +1315,7 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver2.getId());
                                    accountChangeDetail.setType(1);
@@ -1261,6 +1341,7 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver3.getId());
                                    accountChangeDetail.setType(1);
@@ -1289,6 +1370,7 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver1.getId());
                                    accountChangeDetail.setType(1);
@@ -1314,6 +1396,7 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver2.getId());
                                    accountChangeDetail.setType(1);
@@ -1342,6 +1425,7 @@
                                revenueService.insert(revenue);
                                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                accountChangeDetail.setUserType(2);
                                accountChangeDetail.setUserId(driver1.getId());
                                accountChangeDetail.setType(1);
@@ -1374,6 +1458,7 @@
        //司机余额扣减抽佣金额
        if(n > 0){
            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
            accountChangeDetail.setUserType(2);
            accountChangeDetail.setUserId(driver.getId());
            accountChangeDetail.setType(1);
@@ -1479,9 +1564,9 @@
    @Override
    public List<MyAchievementWarpper> queryMyAchievement(Integer driverId, String time) throws Exception {
        List<MyAchievementWarpper> list = new ArrayList<>();
        time = time.replaceAll("-", "年") + "月";
//        time = time.replaceAll("-", "年");
        //订单量
        List<PerformanceRankingWarpper> performanceRankingWarppers = performanceRankingWarppers = this.baseMapper.queryDriverRank(time, 2);
        List<PerformanceRankingWarpper> performanceRankingWarppers = this.baseMapper.queryDriverRank(time, 2);
        int position = 0;
        Double d = 0D;
        for (int i = 0; i < performanceRankingWarppers.size(); i++) {