From 0da3a423b53a39f628191449e90548ec76726dd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Thu, 20 Jun 2024 16:41:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=B8=8B=E5=8D=95=EF=BC=8C?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8F=96=E6=B6=88=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/artificer/entity/Artificer.java | 2 +- .../sqx/modules/artificer/entity/Orders.java | 12 +- .../service/impl/OrdersServiceImpl.java | 2475 ++++++++++++----- .../bl/massage/entity/MassagePackage.java | 2 +- .../modules/bl/order/entity/UserPackage.java | 2 +- .../bl/order/entity/UserPackageDetail.java | 2 +- .../impl/UserPackageOrderServiceImpl.java | 4 +- .../sqx/modules/common/enums/CommonEnum.java | 6 +- .../service/impl/CommonInfoServiceImpl.java | 51 +- .../com/sqx/modules/coupon/entity/Coupon.java | 2 +- .../sqx/modules/coupon/entity/CouponUser.java | 5 +- .../message/service/MessageService.java | 1 + .../service/impl/MessageServiceImpl.java | 13 + .../pay/controller/app/AliPayController.java | 121 +- .../pay/service/impl/WxServiceImpl.java | 117 +- .../mapper/artificer/ArtificerDao.xml | 4 +- .../mapper/bl/massage/MassagePackageDao.xml | 4 +- .../mapper/coupon/TbCouponUserMapper.xml | 3 +- 18 files changed, 1946 insertions(+), 880 deletions(-) diff --git a/src/main/java/com/sqx/modules/artificer/entity/Artificer.java b/src/main/java/com/sqx/modules/artificer/entity/Artificer.java index cd115da..76d9600 100644 --- a/src/main/java/com/sqx/modules/artificer/entity/Artificer.java +++ b/src/main/java/com/sqx/modules/artificer/entity/Artificer.java @@ -144,7 +144,7 @@ public class Artificer implements Serializable { * 技师类型 比例 */ @TableField(exist = false) - private Integer technicianTypeRate; + private BigDecimal technicianTypeRate; /** * 是否是明星技师 1是 2否 diff --git a/src/main/java/com/sqx/modules/artificer/entity/Orders.java b/src/main/java/com/sqx/modules/artificer/entity/Orders.java index 1016797..1732273 100644 --- a/src/main/java/com/sqx/modules/artificer/entity/Orders.java +++ b/src/main/java/com/sqx/modules/artificer/entity/Orders.java @@ -102,7 +102,7 @@ public class Orders implements Serializable { private Integer payWay; /** - * 状态 1待支付 2待服务 3待评论 4已取消 5已完成 6进行中 7技师出发 8技师到达 + * 状态 1待支付 2待服务 3待评论 4已取消 5已完成 6进行中 7技师出发 8技师到达 9用户已支付技师待接单 10待补单 */ private Integer status; @@ -202,7 +202,7 @@ public class Orders implements Serializable { /** * 优惠券id */ - private Long couponId; + private String couponId; /** * 优惠券金额 @@ -278,7 +278,7 @@ public class Orders implements Serializable { private Integer warning; /** - * 是否是储蓄金支付 1是 + * 是否是储蓄金支付 1是 -- 暂无用 */ private Integer userArtificerMoney; /** @@ -371,6 +371,12 @@ public class Orders implements Serializable { @TableField(exist = false) private String shopPhone; + /** + * 会员优惠比例 + */ + @TableField(exist = false) + private BigDecimal vipRate; + @TableField(exist = false) private String userRecharge; diff --git a/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java b/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java index c0978eb..1a8efd4 100644 --- a/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java +++ b/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java @@ -5,7 +5,6 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeUtil; -import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.dyvmsapi20170525.Client; @@ -17,6 +16,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Lists; import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.PageUtils; @@ -30,8 +30,13 @@ import com.sqx.modules.artificer.dao.ArtificerDao; import com.sqx.modules.artificer.dao.OrdersDao; import com.sqx.modules.artificer.entity.*; import com.sqx.modules.artificer.service.*; +import com.sqx.modules.bl.order.entity.UserPackageDetail; +import com.sqx.modules.bl.order.entity.UserPackageOrder; +import com.sqx.modules.bl.order.service.UserPackageDetailService; import com.sqx.modules.common.entity.CommonInfo; +import com.sqx.modules.common.enums.CommonEnum; import com.sqx.modules.common.service.CommonInfoService; +import com.sqx.modules.common.utils.CommonConfigUtil; import com.sqx.modules.consortia.entity.Consortia; import com.sqx.modules.consortia.service.ConsortiaService; import com.sqx.modules.coupon.entity.CouponUser; @@ -50,6 +55,8 @@ import com.sqx.modules.pay.service.WxService; import com.sqx.modules.sys.entity.SysDictEntity; import com.sqx.modules.sys.service.SysDictService; import com.sqx.modules.taking.dao.OrderTakingCommentDao; +import com.sqx.modules.travelconf.service.TravelConfService; +import com.sqx.modules.travelconf.vo.TravelPriceVo; import com.sqx.modules.trip.entity.Trip; import com.sqx.modules.trip.service.TripService; import com.sqx.modules.utils.AppNotifyUtil; @@ -63,6 +70,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.gavaghan.geodesy.Ellipsoid; import org.gavaghan.geodesy.GlobalCoordinates; +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; @@ -129,13 +138,15 @@ public class OrdersServiceImpl extends ServiceImpl implements @Autowired private ArtificerDao artificerDao; @Autowired + UserPackageDetailService userPackageDetailService; + @Autowired private MaterialMassageMapper materialMassageMapper; @Autowired private MaterialArtificerMapper materialArtificerMapper; @Autowired private MaterialMapper materialMapper; - - + @Autowired + private TravelConfService travelConfService; private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true); @@ -148,7 +159,6 @@ public class OrdersServiceImpl extends ServiceImpl implements @Override public Map selectTaxiMoney(Long artificerId, String latitude, String longitude, String city) { - Artificer artificer = artificerService.getById(artificerId); GlobalCoordinates source = new GlobalCoordinates(Double.parseDouble(latitude), Double.parseDouble(longitude)); GlobalCoordinates target = new GlobalCoordinates(Double.parseDouble(artificer.getLatitude()), Double.parseDouble(artificer.getLongitude())); @@ -239,263 +249,340 @@ public class OrdersServiceImpl extends ServiceImpl implements .eq(Artificer::getArtificerId, orders.getArtificerId())); orders.setClassifyId(artificer1.getClassifyId()); try { - CouponUser couponUser = couponUserService.getById(orders.getCouponId()); - if (couponUser != null) { - if (!couponUser.getStatus().equals(0)) { - return Result.error("优惠券已被使用!"); - } - + if(orders.getUserPackageDetailId() !=null ){ + //套餐订单 + return insertPackageOrders(orders); + }else{ + //项目订单 + return insertMassageOrders(orders); } + } catch (Exception e) { + e.printStackTrace(); + log.error("添加订单异常" + e.getMessage(), e); + } finally { + reentrantReadWriteLock.writeLock().unlock(); + } + return Result.error("系统繁忙,请稍后再试!"); + } - List ordersMassageList = orders.getOrdersMassageList(); + public static void main(String[] args) { + System.out.println(DateUtil.offsetMinute(new Date(), 30)); + } - MassageType massageType = massageTypeService.getById(ordersMassageList.get(0).getMassageId()); - String value1 = commonInfoService.findOne(395).getValue(); - int i = 0; - //1.锁定本单服务时间问题 - //项目时间 - Integer duration = massageType.getDuration(); - //精油 - String jyValue = commonInfoService.findOne(392).getValue(); - //中医 - String zyValue = commonInfoService.findOne(436).getValue(); - int minute=0; - int jyMinuteInt = Integer.parseInt(jyValue); - // todo 这块只是满足当时的需求 (后续有变化需要改动!!!) + private Result insertMassageOrders(Orders orders) throws Exception{ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + BigDecimal couponMinMoney = BigDecimal.ZERO;//所有代金券的使用额度总和 + //获取并判断代金券信息 + List CouponUserList = Lists.newArrayList(); + String couponIds = orders.getCouponId(); + if(couponIds.length()>0){ + String[] couponArr = couponIds.trim().split(","); + BigDecimal couponMoney = new BigDecimal(0); + StringBuffer couponNameSb = new StringBuffer(); + for(int i=0;i= System.currentTimeMillis()) { + VipDetails vipDetails = vipDetailsDao.selectOne(new QueryWrapper().eq("vip_name_type", userVip.getVipNameType())); + if (vipDetails != null) { + vipRate = vipDetails.getRate(); + } + } + } catch (Exception e) { + e.getMessage(); + } + } + } + orders.setVipRate(vipRate); + + BigDecimal payMoney = BigDecimal.ZERO; + + List ordersMassageList = orders.getOrdersMassageList(); + MassageType massageType = massageTypeService.getById(ordersMassageList.get(0).getMassageId()); + + BigDecimal price = BigDecimal.ZERO; + String massageTypeName = ""; + BigDecimal artificerPrice = new BigDecimal("0.00"); + + for (OrdersMassage ordersMassage : ordersMassageList) { + price = massageType.getPrice().multiply(BigDecimal.valueOf(ordersMassage.getNum())); + BigDecimal massagePrice = price.multiply(orders.getVipRate()); + massageTypeName = massageType.getTitle(); + payMoney = massagePrice.add(payMoney); + + if (orders.getParentId() != null && orders.getParentId() != 0) { + orders.setAddTime(massageType.getDuration()); + } + orders.setMassageTypeId(massageType.getMassageTypeId()); + } + //保存现价 + orders.setPrice(price); + orders.setEntryName(massageTypeName); + + //判断金额是否满足代金券金额最少消费额度 + if(couponMinMoney.compareTo(couponMinMoney) < 0){ + return Result.error("当前应付总金额不满足优惠券使用的最小额度,请重新选择优惠卷!"); + } + + String value1 = commonInfoService.findOne(395).getValue(); + int i = 0; + //1.锁定本单服务时间问题 + //项目时间 + Integer duration = massageType.getDuration(); + //精油 + String jyValue = commonInfoService.findOne(392).getValue(); +// //中医 +// String zyValue = commonInfoService.findOne(436).getValue(); + int minute=0; + int jyMinuteInt = Integer.parseInt(jyValue); + // todo 这块只是满足当时的需求 (后续有变化需要改动!!!) // int zyMinuteInt = Integer.parseInt(zyValue); - //公交1h,出租30 , 免费 1h(加出行时间) - Integer tripWay = orders.getTripWay(); - if(Objects.nonNull(tripWay)&&(tripWay==1 || tripWay==3)){ - duration=duration+30; - } - if ("是".equals(value1)) { - if(orders.getClassifyId() == 91){ - minute=jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - }else{ - minute=jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - } - } - - - BigDecimal payMoney = BigDecimal.ZERO; - BigDecimal taxiMoney = BigDecimal.ZERO; - if (orders.getParentId() == null || orders.getParentId() == 0) { - String serveTime = orders.getServeTime(); - String date = serveTime.substring(0, 10); - String time = serveTime.substring(11, 16); - ArtificerTime artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } - - if (i > 1) { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf.parse(serveTime); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 1; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } - } - } - - WSSsdrAddress wsSsdrAddress = AddressUtil.resolveAddress(orders.getAddress()); - Map result = selectTaxiMoney(orders.getArtificerId(), orders.getLatitude(), orders.getLongitude(), wsSsdrAddress.getCity()); - if (result == null) { - return Result.error("暂不支持当前地址,请更换其他地址!"); - } - taxiMoney = new BigDecimal(String.valueOf(result.get("taxiMoney"))); - orders.setTaxiMoney(taxiMoney); - } else { - if ("是".equals(value1)) { - ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); - String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); - String date = null; - String time = null; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf.parse(serveTime); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 0; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } - } - } - - } - - - BigDecimal price = BigDecimal.ZERO; - String massageTypeName = ""; - BigDecimal artificerPrice = new BigDecimal("0.00"); - Result userVip = userVipService.isUserVip(orders.getUserId()); - String data = String.valueOf(userVip.get("data")); - boolean isVip = false; - if ("true".equals(data)) { - isVip = true; - } - for (OrdersMassage ordersMassage : ordersMassageList) { - BigDecimal massagePrice; - BigDecimal aprice = massageType.getPrice().multiply(BigDecimal.valueOf(ordersMassage.getNum())); - if (isVip) { - massagePrice = massageType.getMemberPrice().multiply(BigDecimal.valueOf(ordersMassage.getNum())); + //公交1h,出租30 , 免费 1h(加出行时间) + Integer tripWay = orders.getTripWay(); + if(Objects.nonNull(tripWay)&&(tripWay==1 || tripWay==3)){ + duration=duration+30; + } + if ("是".equals(value1)) { + if(orders.getClassifyId() == 91){ + minute=jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; } else { - massagePrice = massageType.getPrice().multiply(BigDecimal.valueOf(ordersMassage.getNum())); + i = duration / minute; + i++; } - price = massagePrice; - massageTypeName = massageType.getTitle(); - payMoney = massagePrice.add(payMoney); - artificerPrice = aprice; - if (orders.getParentId() != null && orders.getParentId() != 0) { - orders.setAddTime(massageType.getDuration()); + }else{ + minute=jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; } - orders.setMassageTypeId(massageType.getMassageTypeId()); } - orders.setPayMoney(payMoney.add(taxiMoney)); - if (couponUser != null) { - orders.setCouponMoney(couponUser.getMoney()); - orders.setCouponName(couponUser.getCouponName()); - orders.setPayMoney(orders.getPayMoney().subtract(couponUser.getMoney())); + } + + BigDecimal taxiMoney = BigDecimal.ZERO; + if (orders.getParentId() == null || orders.getParentId() == 0) { + String serveTime = orders.getServeTime(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + + if (i > 1) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date parse = sdf.parse(serveTime); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 1; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = sdf.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + } + } + + TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); + if (travelPriceVo == null) { + return Result.error("暂不支持当前地址,请更换其他地址!"); + } + taxiMoney = new BigDecimal(travelPriceVo.getTravelPrice()); + orders.setTaxiMoney(taxiMoney); + orders.setKm(travelPriceVo.getKilometerNum()); + +// WSSsdrAddress wsSsdrAddress = AddressUtil.resolveAddress(orders.getAddress()); +// Map result = selectTaxiMoney(orders.getArtificerId(), orders.getLatitude(), orders.getLongitude(), wsSsdrAddress.getCity()); +// if (result == null) { +// return Result.error("暂不支持当前地址,请更换其他地址!"); +// } +// taxiMoney = new BigDecimal(String.valueOf(result.get("taxiMoney"))); +// orders.setTaxiMoney(taxiMoney); + } else { + if ("是".equals(value1)) { + ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); + String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); + String date = null; + String time = null; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date parse = sdf.parse(serveTime); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = sdf.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + } + } + } + //加上车费 + orders.setPayMoney(payMoney.add(taxiMoney)); + //减去代金券的金额 + orders.setPayMoney(orders.getPayMoney().subtract(orders.getCouponMoney())); + + Artificer artificer = artificerService.getById(orders.getArtificerId()); + //查询是否计算出租车扣费 + String taxi = commonInfoService.findOne(394).getValue(); + //计算技师出租车收益(按照技师表收益计算) + if ("是".equals(taxi)) { + //计算技师应该收取的出租车费用 + BigDecimal artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); + //计算出租车扣款 + BigDecimal pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); + //赋值技师出租收款 + orders.setArtificerTaxiMoney(artificerTaxiMoney); + //赋值出租车扣款 + orders.setPingTaxiMoney(pingTaxiMoney); + //赋值技师收益 + artificerPrice = orders.getPayMoney().multiply(artificer.getRate()); + } else { + //平台不扣费 出租车收益全由技师收取 + orders.setArtificerTaxiMoney(orders.getTaxiMoney()); + //设置出租车扣款为0 + orders.setPingTaxiMoney(BigDecimal.ZERO); + //用户支付减去通行费用 + BigDecimal subtract = orders.getPayMoney().subtract(taxiMoney); + //计算用户收益 !计算前先减去通行费用再计算技师抽成 + artificerPrice = subtract.multiply(artificer.getRate()); + //用户收益加上通行费用 + artificerPrice = artificerPrice.add(taxiMoney); + } + + //计算项目收益 + //去掉优惠卷金额的项目金额 + BigDecimal projectBenefits = price.subtract(orders.getCouponMoney()); + //计算技师项目提成金额 + orders.setProjectBenefits(projectBenefits.multiply(artificer.getRate()).setScale(2,BigDecimal.ROUND_HALF_UP)); + + orders.setArtificerMoney(artificerPrice); + orders.setSumArtificerMoney(orders.getArtificerMoney()); + orders.setOrdersNo(getGeneralOrder()); + orders.setStatus(1); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + orders.setCreateTime(sdf.format(new Date())); + //留存订单生成时的技师分成比例 + orders.setArtificerRate(artificer.getRate()); + orders.setSumMoney(orders.getPayMoney()); + //保存订单 + baseMapper.insert(orders); + + //更新代金券状态 + if(CouponUserList.size()>0){ + for (CouponUser couponUser : CouponUserList) { couponUser.setStatus(1); couponUserService.updateById(couponUser); } - Artificer artificer = artificerService.getById(orders.getArtificerId()); - //查询是否计算出租车扣费 - String taxi = commonInfoService.findOne(394).getValue(); - //计算技师出租车收益(按照技师表收益计算) - if ("是".equals(taxi)) { - //计算技师应该收取的出租车费用 - BigDecimal artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); - //计算出租车扣款 - BigDecimal pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); - //赋值技师出租收款 - orders.setArtificerTaxiMoney(artificerTaxiMoney); - //赋值出租车扣款 - orders.setPingTaxiMoney(pingTaxiMoney); - //赋值技师收益 - artificerPrice = orders.getPayMoney().multiply(artificer.getRate()); - } else { - //平台不扣费 出租车收益全由技师收取 - orders.setArtificerTaxiMoney(orders.getTaxiMoney()); - //设置出租车扣款为0 - orders.setPingTaxiMoney(BigDecimal.ZERO); - //用户支付减去通行费用 - BigDecimal subtract = orders.getPayMoney().subtract(taxiMoney); - //计算用户收益 !计算前先减去通行费用再计算技师抽成 - artificerPrice = subtract.multiply(artificer.getRate()); - //用户收益加上通行费用 - artificerPrice = artificerPrice.add(taxiMoney); - } + } +//下单时不做电话通知,2024-06-20 10:11 by caolei +// if(ObjectUtil.equals(orders.getParentId(),null) || ObjectUtil.equals(orders.getParentId(),0L)){ +// //技师电话通知业务 +// UserEntity byId = userService.getById(artificer.getUserId()); +// //accountId +// String accountId = commonInfoService.findOne(428).getValue(); +// //token +// String token = commonInfoService.findOne(429).getValue(); +// //templateId +// String templateId = commonInfoService.findOne(430).getValue(); +// AppNotifyUtil.AppNotify(byId.getPhone(),accountId,token,templateId); +// } + for (OrdersMassage ordersMassage : ordersMassageList) { + ordersMassage.setOrdersId(orders.getOrdersId()); + ordersMassageService.save(ordersMassage); + } + if (orders.getParentId() == null || orders.getParentId() == 0) { + String serveTime = orders.getServeTime(); + if (i > 0) { + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date parse = sdf1.parse(serveTime); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + //3.预约时间前及服务完成时间后问题 + DateTime dateTime = DateUtil.offsetMinute(parse, -30); + Calendar calendar1 = Calendar.getInstance(); + calendar1.setTime(dateTime); + String format1 = sdf1.format(calendar1.getTime()); + String date1 = format1.substring(0, 10); + String time1 = format1.substring(11, 16); + ArtificerTime artificerTime1 = new ArtificerTime(); + artificerTime1.setArtificerId(orders.getArtificerId()); + artificerTime1.setArtificerDate(date1); + artificerTime1.setArtificerTime(time1); + artificerTime1.setClassify(1); + artificerTime1.setOrdersId(orders.getOrdersId()); + artificerTime1.setCreateTime(DateUtils.format(new Date())); + artificerTimeService.save(artificerTime1); - orders.setPrice(price); - orders.setEntryName(massageTypeName); - //计算项目收益 - if (couponUser != null) { - //去掉优惠卷金额的项目金额 - BigDecimal projectBenefits = price.subtract(couponUser.getMoney()); - orders.setProjectBenefits(projectBenefits.multiply(artificer.getRate()).setScale(2,BigDecimal.ROUND_HALF_UP)); - } - else { - orders.setProjectBenefits(price.multiply(artificer.getRate()).setScale(2,BigDecimal.ROUND_HALF_UP)); - } - orders.setArtificerMoney(artificerPrice); - orders.setSumArtificerMoney(orders.getArtificerMoney()); - orders.setOrdersNo(getGeneralOrder()); - orders.setStatus(1); - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - orders.setCreateTime(sdf.format(new Date())); - //留存订单生成时的技师分成比例 - orders.setArtificerRate(artificer.getRate()); - orders.setSumMoney(orders.getPayMoney()); - baseMapper.insert(orders); - if(ObjectUtil.equals(orders.getParentId(),null) || ObjectUtil.equals(orders.getParentId(),0L)){ - //技师电话通知业务 - UserEntity byId = userService.getById(artificer.getUserId()); - //accountId - String accountId = commonInfoService.findOne(428).getValue(); - //token - String token = commonInfoService.findOne(429).getValue(); - //templateId - String templateId = commonInfoService.findOne(430).getValue(); - AppNotifyUtil.AppNotify(byId.getPhone(),accountId,token,templateId); - } - for (OrdersMassage ordersMassage : ordersMassageList) { - ordersMassage.setOrdersId(orders.getOrdersId()); - ordersMassageService.save(ordersMassage); - } - if (orders.getParentId() == null || orders.getParentId() == 0) { - String serveTime = orders.getServeTime(); - if (i > 0) { - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf1.parse(serveTime); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - //3.预约时间前及服务完成时间后问题 - DateTime dateTime = DateUtil.offsetMinute(parse, -30); - Calendar calendar1 = Calendar.getInstance(); - calendar1.setTime(dateTime); - String format1 = sdf1.format(calendar1.getTime()); - String date1 = format1.substring(0, 10); - String time1 = format1.substring(11, 16); - ArtificerTime artificerTime1 = new ArtificerTime(); - artificerTime1.setArtificerId(orders.getArtificerId()); - artificerTime1.setArtificerDate(date1); - artificerTime1.setArtificerTime(time1); - artificerTime1.setClassify(1); - artificerTime1.setOrdersId(orders.getOrdersId()); - artificerTime1.setCreateTime(DateUtils.format(new Date())); - artificerTimeService.save(artificerTime1); - - for (int j = 0; j < i; j++) { - String format = sdf1.format(calendar.getTime()); - String date = format.substring(0, 10); - String time = format.substring(11, 16); - ArtificerTime artificerTime = new ArtificerTime(); - artificerTime.setArtificerId(orders.getArtificerId()); - artificerTime.setArtificerDate(date); - artificerTime.setArtificerTime(time); - artificerTime.setClassify(1); - artificerTime.setOrdersId(orders.getOrdersId()); - artificerTime.setCreateTime(DateUtils.format(new Date())); - artificerTimeService.save(artificerTime); - calendar.add(Calendar.MINUTE, minute); - } + for (int j = 0; j < i; j++) { + String format = sdf1.format(calendar.getTime()); + String date = format.substring(0, 10); + String time = format.substring(11, 16); + ArtificerTime artificerTime = new ArtificerTime(); + artificerTime.setArtificerId(orders.getArtificerId()); + artificerTime.setArtificerDate(date); + artificerTime.setArtificerTime(time); + artificerTime.setClassify(1); + artificerTime.setOrdersId(orders.getOrdersId()); + artificerTime.setCreateTime(DateUtils.format(new Date())); + artificerTimeService.save(artificerTime); + calendar.add(Calendar.MINUTE, minute); } - // todo 这块只是满足当时的需求注释的 (后续有变化需要改动!!!) + } + // todo 这块只是满足当时的需求注释的 (后续有变化需要改动!!!) // else { // String date = serveTime.substring(0, 10); // String time = serveTime.substring(11, 16); @@ -508,15 +595,270 @@ public class OrdersServiceImpl extends ServiceImpl implements // artificerTime.setCreateTime(DateUtils.format(new Date())); // artificerTimeService.save(artificerTime); // } - } - return Result.success().put("data", orders); - } catch (Exception e) { - e.printStackTrace(); - log.error("添加订单异常" + e.getMessage(), e); - } finally { - reentrantReadWriteLock.writeLock().unlock(); } - return Result.error("系统繁忙,请稍后再试!"); + return Result.success().put("data", orders); + } + + private Result insertPackageOrders(Orders orders) throws Exception{ + + BigDecimal payMoney = BigDecimal.ZERO; + List ordersMassageList = orders.getOrdersMassageList(); + UserPackageDetail userPackageDetail = userPackageDetailService.getById(ordersMassageList.get(0).getMassageId()); + orders.setUserPackageId(userPackageDetail.getMainId()); + orders.setUserPackageDetailId(userPackageDetail.getId()); + + BigDecimal price = BigDecimal.ZERO; + BigDecimal packagePrice = BigDecimal.ZERO; + String massageTypeName = ""; + BigDecimal artificerPrice = new BigDecimal("0.00"); + + for (OrdersMassage ordersMassage : ordersMassageList) { + price = userPackageDetail.getPrice().multiply(BigDecimal.valueOf(ordersMassage.getNum())); + packagePrice = userPackageDetail.getPackagePrice().multiply(BigDecimal.valueOf(ordersMassage.getNum())); + massageTypeName = userPackageDetail.getTitle(); + payMoney = packagePrice.add(payMoney); + + if (orders.getParentId() != null && orders.getParentId() != 0) { + orders.setAddTime(userPackageDetail.getDuration()); + } + orders.setMassageTypeId(userPackageDetail.getMassageTypeId()); + } + //保存现价 + orders.setPrice(price); + orders.setEntryName(massageTypeName); + + String value1 = commonInfoService.findOne(395).getValue(); + int i = 0; + //1.锁定本单服务时间问题 + //项目时间 + Integer duration = userPackageDetail.getDuration(); + //精油 + String jyValue = commonInfoService.findOne(392).getValue(); +// //中医 +// String zyValue = commonInfoService.findOne(436).getValue(); + int minute=0; + int jyMinuteInt = Integer.parseInt(jyValue); + // todo 这块只是满足当时的需求 (后续有变化需要改动!!!) +// int zyMinuteInt = Integer.parseInt(zyValue); + //公交1h,出租30 , 免费 1h(加出行时间) + Integer tripWay = orders.getTripWay(); + if(Objects.nonNull(tripWay)&&(tripWay==1 || tripWay==3)){ + duration=duration+30; + } + if ("是".equals(value1)) { + if(orders.getClassifyId() == 91){ + minute=jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + }else{ + minute=jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + } + } + + BigDecimal taxiMoney = BigDecimal.ZERO; + if (orders.getParentId() == null || orders.getParentId() == 0) { + String serveTime = orders.getServeTime(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + + if (i > 1) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date parse = sdf.parse(serveTime); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 1; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = sdf.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + } + } + + TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); + if (travelPriceVo == null) { + return Result.error("暂不支持当前地址,请更换其他地址!"); + } + taxiMoney = new BigDecimal(travelPriceVo.getTravelPrice()); + orders.setTaxiMoney(taxiMoney); + orders.setKm(travelPriceVo.getKilometerNum()); + +// WSSsdrAddress wsSsdrAddress = AddressUtil.resolveAddress(orders.getAddress()); +// Map result = selectTaxiMoney(orders.getArtificerId(), orders.getLatitude(), orders.getLongitude(), wsSsdrAddress.getCity()); +// if (result == null) { +// return Result.error("暂不支持当前地址,请更换其他地址!"); +// } +// taxiMoney = new BigDecimal(String.valueOf(result.get("taxiMoney"))); +// orders.setTaxiMoney(taxiMoney); + } else { + if ("是".equals(value1)) { + ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); + String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); + String date = null; + String time = null; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date parse = sdf.parse(serveTime); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = sdf.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + } + } + } + //加上车费 + orders.setPayMoney(payMoney.add(taxiMoney)); + + Artificer artificer = artificerService.getById(orders.getArtificerId()); + //查询是否计算出租车扣费 + String taxi = commonInfoService.findOne(394).getValue(); + //计算技师出租车收益(按照技师表收益计算) + if ("是".equals(taxi)) { + //计算技师应该收取的出租车费用 + BigDecimal artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); + //计算出租车扣款 + BigDecimal pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); + //赋值技师出租收款 + orders.setArtificerTaxiMoney(artificerTaxiMoney); + //赋值出租车扣款 + orders.setPingTaxiMoney(pingTaxiMoney); + //赋值技师收益 + artificerPrice = orders.getPayMoney().multiply(artificer.getRate()); + } else { + //平台不扣费 出租车收益全由技师收取 + orders.setArtificerTaxiMoney(orders.getTaxiMoney()); + //设置出租车扣款为0 + orders.setPingTaxiMoney(BigDecimal.ZERO); + //用户支付减去通行费用 + BigDecimal subtract = orders.getPayMoney().subtract(taxiMoney); + //计算用户收益 !计算前先减去通行费用再计算技师抽成 + artificerPrice = subtract.multiply(artificer.getRate()); + //用户收益加上通行费用 + artificerPrice = artificerPrice.add(taxiMoney); + } + + //计算项目收益 + //计算技师项目提成金额 + orders.setProjectBenefits(packagePrice.multiply(artificer.getRate()).setScale(2,BigDecimal.ROUND_HALF_UP)); + + orders.setArtificerMoney(artificerPrice); + orders.setSumArtificerMoney(orders.getArtificerMoney()); + orders.setOrdersNo(getGeneralOrder()); + orders.setStatus(1); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + orders.setCreateTime(sdf.format(new Date())); + //留存订单生成时的技师分成比例 + orders.setArtificerRate(artificer.getRate()); + orders.setSumMoney(orders.getPayMoney()); + //保存订单 + baseMapper.insert(orders); + + //更新服务套餐子项使用状态 + userPackageDetail.setStatus(1); + userPackageDetailService.updateById(userPackageDetail); + +//下单时不做电话通知,2024-06-20 10:11 by caolei +// if(ObjectUtil.equals(orders.getParentId(),null) || ObjectUtil.equals(orders.getParentId(),0L)){ +// //技师电话通知业务 +// UserEntity byId = userService.getById(artificer.getUserId()); +// //accountId +// String accountId = commonInfoService.findOne(428).getValue(); +// //token +// String token = commonInfoService.findOne(429).getValue(); +// //templateId +// String templateId = commonInfoService.findOne(430).getValue(); +// AppNotifyUtil.AppNotify(byId.getPhone(),accountId,token,templateId); +// } + for (OrdersMassage ordersMassage : ordersMassageList) { + ordersMassage.setOrdersId(orders.getOrdersId()); + ordersMassageService.save(ordersMassage); + } + if (orders.getParentId() == null || orders.getParentId() == 0) { + String serveTime = orders.getServeTime(); + if (i > 0) { + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date parse = sdf1.parse(serveTime); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + //3.预约时间前及服务完成时间后问题 + DateTime dateTime = DateUtil.offsetMinute(parse, -30); + Calendar calendar1 = Calendar.getInstance(); + calendar1.setTime(dateTime); + String format1 = sdf1.format(calendar1.getTime()); + String date1 = format1.substring(0, 10); + String time1 = format1.substring(11, 16); + ArtificerTime artificerTime1 = new ArtificerTime(); + artificerTime1.setArtificerId(orders.getArtificerId()); + artificerTime1.setArtificerDate(date1); + artificerTime1.setArtificerTime(time1); + artificerTime1.setClassify(1); + artificerTime1.setOrdersId(orders.getOrdersId()); + artificerTime1.setCreateTime(DateUtils.format(new Date())); + artificerTimeService.save(artificerTime1); + + for (int j = 0; j < i; j++) { + String format = sdf1.format(calendar.getTime()); + String date = format.substring(0, 10); + String time = format.substring(11, 16); + ArtificerTime artificerTime = new ArtificerTime(); + artificerTime.setArtificerId(orders.getArtificerId()); + artificerTime.setArtificerDate(date); + artificerTime.setArtificerTime(time); + artificerTime.setClassify(1); + artificerTime.setOrdersId(orders.getOrdersId()); + artificerTime.setCreateTime(DateUtils.format(new Date())); + artificerTimeService.save(artificerTime); + calendar.add(Calendar.MINUTE, minute); + } + } + // todo 这块只是满足当时的需求注释的 (后续有变化需要改动!!!) +// else { +// String date = serveTime.substring(0, 10); +// String time = serveTime.substring(11, 16); +// ArtificerTime artificerTime = new ArtificerTime(); +// artificerTime.setArtificerId(orders.getArtificerId()); +// artificerTime.setArtificerDate(date); +// artificerTime.setArtificerTime(time); +// artificerTime.setClassify(1); +// artificerTime.setOrdersId(orders.getOrdersId()); +// artificerTime.setCreateTime(DateUtils.format(new Date())); +// artificerTimeService.save(artificerTime); +// } + } + return Result.success().put("data", orders); } @Override @@ -620,46 +962,111 @@ public class OrdersServiceImpl extends ServiceImpl implements return Result.success(); } - @Override public Result cancelOrders(Long userId, Long ordersId) { Orders orders = baseMapper.selectById(ordersId); - //状态 1待支付 2待服务 3待评论 4已取消 5已完成 6进行中 7技师出发 8技师到达 + //状态 1待支付 2待服务 3待评论 4已取消 5已完成 6进行中 7技师出发 8技师到达 9用户已支付技师待接单 10待补单 if (orders.getStatus() == 4) { return Result.error("订单已经取消了!"); } else if (orders.getStatus() == 3 || orders.getStatus() == 5) { return Result.error("订单已经完成了,无法取消!"); - } else if (orders.getStatus() == 6) { - return Result.error("订单正在进行中,无法取消!"); } - artificerTimeService.remove(new QueryWrapper().eq("orders_id", ordersId)); + //按时间扣款,获取扣款金额 + CommonInfo commonInfo = commonInfoService.isCheckChangeOrder(DateUtils.stringToDate(orders.getServeTime(),"yyyy-MM-dd HH:mm") ,new Date()); + CommonEnum commonEnum = CommonConfigUtil.getCommonEnumByKey(commonInfo.getType()); + String[] values = CommonConfigUtil.getArrayValue(commonInfo.getValue()); + BigDecimal massageDeduction = BigDecimal.ZERO; + BigDecimal trafficDeduction = BigDecimal.ZERO; + BigDecimal massageRate = BigDecimal.ZERO; + BigDecimal trafficRate = BigDecimal.ZERO; + if(CommonEnum.V3_ORDER_FORM_CANCEL_NOT_START_01 == commonEnum){ + //距离服务开始n分钟以上免费取消,全额退服务费和车费 + massageDeduction = BigDecimal.ZERO; + trafficDeduction = BigDecimal.ZERO; + massageRate = BigDecimal.ZERO; + trafficRate = BigDecimal.ZERO; + } + if(CommonEnum.V3_ORDER_FORM_CANCEL_NOT_START_02 == commonEnum){ + //距离服务开始前取消n-n分钟内,收取n元,扣服务费,全额退车费 + massageDeduction = new BigDecimal(values[2]); + trafficDeduction = BigDecimal.ZERO; + massageRate = BigDecimal.ZERO; + trafficRate = BigDecimal.ZERO; + } + if(CommonEnum.V3_ORDER_FORM_CANCEL_NOT_START_03 == commonEnum){ + //距离服务开始前取消少于n分钟内,收取n元,扣服务费,全额退车费 + massageDeduction = new BigDecimal(values[2]); + trafficDeduction = BigDecimal.ZERO; + massageRate = BigDecimal.ZERO; + trafficRate = BigDecimal.ZERO; + } + if(CommonEnum.V3_ORDER_FORM_CANCEL_START_01 == commonEnum){ + //服务开始n分钟内取消订单,扣项目费用n%,车费全扣n%,扣服务费和车费 + massageDeduction = BigDecimal.ZERO; + trafficDeduction = BigDecimal.ZERO; + massageRate = new BigDecimal(values[1]).divide(new BigDecimal(100)); + trafficRate = new BigDecimal(values[2]).divide(new BigDecimal(100)); + } + if(CommonEnum.V3_ORDER_FORM_CANCEL_START_02 == commonEnum){ + //服务开始n分钟后不可以取消订单 + return Result.error("订单已进行"+values[0]+"后,无法取消!"); + } + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOrdersId())); + if(orders.getUserPackageDetailId() !=null){ + return cancelPackageOrders(userId,orders,trafficDeduction,trafficRate); + }else{ + return cancelMassageOrders(userId,orders,massageDeduction,trafficDeduction,massageRate,trafficRate); + } + } - if (orders.getCouponId() != null) { - CouponUser couponUser = couponUserService.getById(orders.getCouponId()); - if (couponUser != null && couponUser.getStatus().equals(1)) { - couponUser.setStatus(0); - couponUserService.updateById(couponUser); + public Result cancelMassageOrders(Long userId, Orders orders, BigDecimal massageDeduction, BigDecimal trafficDeduction, BigDecimal massageRate, BigDecimal trafficRate){ + + String couponIds = orders.getCouponId(); + if(orders.getCouponId() != null && couponIds.length()>0){ + String[] couponArr = couponIds.trim().split(","); + for(int i=0;i implements } else { return Result.error("退款失败!"); } + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setBlFlag(2); } else { - if (orders.getUserArtificerMoney() != null && orders.getUserArtificerMoney() == 1) { - userMoneyArtificerService.updateMoney(1, orders.getUserId(), orders.getArtificerId(), userMoney.doubleValue()); - } else { - userMoneyService.updateMoney(1, orders.getUserId(), userMoney.doubleValue()); - } + //暂无用 +// if (orders.getUserArtificerMoney() != null && orders.getUserArtificerMoney() == 1) { +// +// userMoneyArtificerService.updateMoney(1, orders.getUserId(), orders.getArtificerId(), userMoney.doubleValue()); +// } else { + userMoneyService.updateMoney(1, orders.getUserId(), userMoney.doubleValue()); +// } + //查询用户当前余额 + UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setBlFlag(1); } - UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); userMoneyDetails.setMoney(userMoney); userMoneyDetails.setUserId(orders.getUserId()); - //查询用户当前余额 - UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); - //插入余额 - userMoneyDetails.setBalance(userNowMoney.getMoney()); - //插入操作类型为已操作用户余额 - userMoneyDetails.setManipulateType(2); - if (orders.getStatus().equals(7) || orders.getStatus().equals(8)) { - userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已原路退款!扣除订单:" + rate + ",车费:" + orders.getTaxiMoney()); - } else { - userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已原路退款!"); - } - + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已原路退款!扣除订单:" + massageMoneyDeduction + ",车费:" + taxiMoneyDeduction); userMoneyDetails.setTitle("订单退款"); userMoneyDetails.setType(1); userMoneyDetails.setCreateTime(time); userMoneyDetails.setArtificerId(orders.getArtificerId()); + userMoneyDetails.setBlRole(1); userMoneyDetailsService.save(userMoneyDetails); - if (orders.getStatus().equals(7) || orders.getStatus().equals(8)) { - //按照比例 将扣除的钱进行分佣 - BigDecimal taxiMoney = orders.getTaxiMoney(); - BigDecimal sumMoney = rate.add(taxiMoney); - Artificer artificer = artificerService.getById(orders.getArtificerId()); - BigDecimal artificerTaxiMoney = taxiMoney; - BigDecimal pingTaxiMoney = BigDecimal.ZERO; - BigDecimal artificerMoney = rate.multiply(artificer.getRate()); - String taxi = commonInfoService.findOne(394).getValue(); - if ("是".equals(taxi)) { - artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); - pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); - } - UserEntity user = userService.selectUserById(orders.getUserId()); + //按照比例 将扣除的钱进行分佣 + BigDecimal taxiMoney = taxiMoneyDeduction; + BigDecimal sumMoney = rate.add(taxiMoneyDeduction);//总扣费 + Artificer artificer = artificerService.getById(orders.getArtificerId()); + BigDecimal artificerTaxiMoney = taxiMoneyDeduction;//扣车费 + BigDecimal pingTaxiMoney = BigDecimal.ZERO; + BigDecimal artificerMoney = rate.multiply(artificer.getRate()); //技师获得扣款提成 - UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); + String taxi = commonInfoService.findOne(394).getValue(); + if ("是".equals(taxi)) { + artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); + pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); + } - BigDecimal oneUserMoney = BigDecimal.ZERO; - if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { - orders.setOneUserId(oneUser.getUserId()); - orders.setOneUserName(oneUser.getUserName()); - oneUserMoney = rate.multiply(oneUser.getUserRate()); - } + UserEntity user = userService.selectUserById(orders.getUserId()); - UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); + UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); - UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); + BigDecimal oneUserMoney = BigDecimal.ZERO; + if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { + orders.setOneUserId(oneUser.getUserId()); + orders.setOneUserName(oneUser.getUserName()); + oneUserMoney = rate.multiply(oneUser.getUserRate()); + } - BigDecimal oneArtificerMoney = BigDecimal.ZERO; - if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { - orders.setOneArtificerUserId(oneArtificerUser.getUserId()); - orders.setOneArtificerUserName(oneArtificerUser.getUserName()); - oneArtificerMoney = rate.multiply(oneArtificerUser.getShopRate()); - } + UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); - BigDecimal shopMoney = BigDecimal.ZERO; - if (artificerUser.getConsortiaId() != null) { - Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); - if (consortia != null && consortia.getUserId() != null) { - UserEntity consortiaUser = userService.getById(consortia.getUserId()); - if (consortiaUser != null) { - shopMoney = rate.multiply(consortia.getRate()); - } + UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); + + BigDecimal oneArtificerMoney = BigDecimal.ZERO; + if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { + orders.setOneArtificerUserId(oneArtificerUser.getUserId()); + orders.setOneArtificerUserName(oneArtificerUser.getUserName()); + oneArtificerMoney = rate.multiply(oneArtificerUser.getShopRate()); + } + + BigDecimal shopMoney = BigDecimal.ZERO; + if (artificerUser.getConsortiaId() != null) { + Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); + if (consortia != null && consortia.getUserId() != null) { + UserEntity consortiaUser = userService.getById(consortia.getUserId()); + if (consortiaUser != null) { + shopMoney = rate.multiply(consortia.getRate()); } } - rate = rate.subtract(artificerMoney); - rate = rate.subtract(oneUserMoney); - rate = rate.subtract(shopMoney); - rate = rate.subtract(oneArtificerMoney).setScale(2, BigDecimal.ROUND_DOWN); - orders.setShopMoney(shopMoney.setScale(2, BigDecimal.ROUND_DOWN)); - orders.setArtificerMoney(artificerMoney.setScale(2, BigDecimal.ROUND_DOWN)); - orders.setSumArtificerMoney(artificerMoney.add(artificerTaxiMoney).setScale(2, BigDecimal.ROUND_DOWN)); - orders.setOneUserMoney(oneUserMoney.setScale(2, BigDecimal.ROUND_DOWN)); - orders.setOneArtificerMoney(oneArtificerMoney.setScale(2, BigDecimal.ROUND_DOWN)); - orders.setPingMoney(rate.setScale(2, BigDecimal.ROUND_DOWN)); - orders.setArtificerTaxiMoney(artificerTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); - orders.setPingTaxiMoney(pingTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); - //分账 - userMoneyService.updateMoney(1, artificerUser.getUserId(), orders.getSumArtificerMoney().doubleValue()); + } + rate = rate.subtract(artificerMoney); + rate = rate.subtract(oneUserMoney); + rate = rate.subtract(shopMoney); + rate = rate.subtract(oneArtificerMoney).setScale(2, BigDecimal.ROUND_DOWN); + orders.setShopMoney(shopMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setArtificerMoney(artificerMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setSumArtificerMoney(artificerMoney.add(artificerTaxiMoney).setScale(2, BigDecimal.ROUND_DOWN)); + orders.setOneUserMoney(oneUserMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setOneArtificerMoney(oneArtificerMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setPingMoney(rate.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setArtificerTaxiMoney(artificerTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setPingTaxiMoney(pingTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); + //分账 + userMoneyService.updateMoney(1, artificerUser.getUserId(), orders.getSumArtificerMoney().doubleValue()); + userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney1 = userMoneyService.selectUserMoneyByUserId(artificerUser.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney1.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getSumArtificerMoney()); + userMoneyDetails.setUserId(artificerUser.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单取消!"); + String value = commonInfoService.findOne(394).getValue(); + if ("是".equals(value)) { + if (orders.getShopUserId() != null) { + userMoneyDetails.setTitle("用户取消订单,总扣除:" + sumMoney + ",平台扣除:" + orders.getPingMoney() + + ",商家扣除:" + orders.getShopMoney() + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + + ",打车费:" + orders.getTaxiMoney() + ",平台扣除打车费:" + orders.getPingTaxiMoney() + ",到账打车费:" + orders.getArtificerTaxiMoney() + + ",到账总金额:" + orders.getSumArtificerMoney()); + } else { + userMoneyDetails.setTitle("用户取消订单,总扣除:" + sumMoney + ",平台扣除:" + orders.getPingMoney() + + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + + ",打车费:" + orders.getTaxiMoney() + ",平台扣除打车费:" + orders.getPingTaxiMoney() + ",到账打车费:" + orders.getArtificerTaxiMoney() + + ",到账总金额:" + orders.getSumArtificerMoney()); + } + } else { + if (orders.getShopUserId() != null) { + userMoneyDetails.setTitle("用户取消订单,总扣除:" + sumMoney + ",平台扣除:" + orders.getPingMoney() + + ",商家扣除:" + orders.getShopMoney() + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + + ",打车费:" + orders.getTaxiMoney() + + ",到账总金额:" + orders.getSumArtificerMoney()); + } else { + userMoneyDetails.setTitle("用户取消订单,总扣除:" + sumMoney + ",平台扣除:" + orders.getPingMoney() + + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + + ",打车费:" + orders.getTaxiMoney() + + ",到账总金额:" + orders.getSumArtificerMoney()); + } + } + userMoneyDetails.setType(1); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(2); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); + + if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1 && orders.getOneUserMoney().compareTo(BigDecimal.ZERO) !=0) { + userMoneyService.updateMoney(1, oneUser.getUserId(), orders.getOneUserMoney().doubleValue()); userMoneyDetails = new UserMoneyDetails(); //查询用户当前余额 - UserMoney userNowMoney1 = userMoneyService.selectUserMoneyByUserId(artificerUser.getUserId()); + UserMoney userNowMoney3 = userMoneyService.selectUserMoneyByUserId(oneUser.getUserId()); //插入余额 - userMoneyDetails.setBalance(userNowMoney1.getMoney()); + userMoneyDetails.setBalance(userNowMoney3.getMoney()); //插入操作类型为已操作用户余额 userMoneyDetails.setManipulateType(2); - userMoneyDetails.setMoney(orders.getSumArtificerMoney()); - userMoneyDetails.setUserId(artificerUser.getUserId()); + userMoneyDetails.setMoney(orders.getOneUserMoney()); + userMoneyDetails.setUserId(oneUser.getUserId()); userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单取消!"); - String value = commonInfoService.findOne(394).getValue(); - if ("是".equals(value)) { - if (orders.getShopUserId() != null) { - userMoneyDetails.setTitle("用户取消订单,总扣除:" + sumMoney + ",平台扣除:" + rate + - ",商家扣除:" + orders.getShopMoney() + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + - ",打车费:" + orders.getTaxiMoney() + ",平台扣除打车费:" + orders.getPingTaxiMoney() + ",到账打车费:" + orders.getArtificerTaxiMoney() + - ",到账总金额:" + orders.getSumArtificerMoney()); - } else { - userMoneyDetails.setTitle("用户取消订单,总扣除:" + sumMoney + ",平台扣除:" + orders.getPingMoney() + - ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + - ",打车费:" + orders.getTaxiMoney() + ",平台扣除打车费:" + orders.getPingTaxiMoney() + ",到账打车费:" + orders.getArtificerTaxiMoney() + - ",到账总金额:" + orders.getSumArtificerMoney()); - } - } else { - if (orders.getShopUserId() != null) { - userMoneyDetails.setTitle("用户取消订单,总扣除:" + sumMoney + ",平台扣除:" + orders.getPingMoney() + - ",商家扣除:" + orders.getShopMoney() + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + - ",打车费:" + orders.getTaxiMoney() + - ",到账总金额:" + orders.getSumArtificerMoney()); - } else { - userMoneyDetails.setTitle("用户取消订单,总扣除:" + sumMoney + ",平台扣除:" + orders.getPingMoney() + - ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + - ",打车费:" + orders.getTaxiMoney() + - ",到账总金额:" + orders.getSumArtificerMoney()); - } - } - + userMoneyDetails.setTitle("推广用户收益"); userMoneyDetails.setType(1); - + userMoneyDetails.setClassify(5); userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(1); userMoneyDetailsService.save(userMoneyDetails); - if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { - userMoneyService.updateMoney(1, oneUser.getUserId(), orders.getOneUserMoney().doubleValue()); - userMoneyDetails = new UserMoneyDetails(); - //查询用户当前余额 - UserMoney userNowMoney3 = userMoneyService.selectUserMoneyByUserId(oneUser.getUserId()); - //插入余额 - userMoneyDetails.setBalance(userNowMoney3.getMoney()); - //插入操作类型为已操作用户余额 - userMoneyDetails.setManipulateType(2); - userMoneyDetails.setMoney(orders.getOneUserMoney()); - userMoneyDetails.setUserId(oneUser.getUserId()); - userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单取消!"); - userMoneyDetails.setTitle("推广用户收益"); - userMoneyDetails.setType(1); - userMoneyDetails.setClassify(5); - userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); - userMoneyDetailsService.save(userMoneyDetails); - - orders.setOneUserId(oneUser.getUserId()); - orders.setOneUserName(oneUser.getUserName()); - } + orders.setOneUserId(oneUser.getUserId()); + orders.setOneUserName(oneUser.getUserName()); + } - if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { - userMoneyService.updateMoney(1, oneArtificerUser.getUserId(), orders.getOneArtificerMoney().doubleValue()); - userMoneyDetails = new UserMoneyDetails(); - //查询用户当前余额 - UserMoney userNowMoney4 = userMoneyService.selectUserMoneyByUserId(oneArtificerUser.getUserId()); - //插入余额 - userMoneyDetails.setBalance(userNowMoney4.getMoney()); - //插入操作类型为已操作用户余额 - userMoneyDetails.setManipulateType(2); - userMoneyDetails.setMoney(orders.getOneArtificerMoney()); - userMoneyDetails.setUserId(oneArtificerUser.getUserId()); - userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单取消!"); - userMoneyDetails.setTitle("推广师傅收益"); - userMoneyDetails.setType(1); - userMoneyDetails.setClassify(6); - userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); - userMoneyDetailsService.save(userMoneyDetails); + if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1 && orders.getOneArtificerMoney().compareTo(BigDecimal.ZERO)!=0) { + userMoneyService.updateMoney(1, oneArtificerUser.getUserId(), orders.getOneArtificerMoney().doubleValue()); + userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney4 = userMoneyService.selectUserMoneyByUserId(oneArtificerUser.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney4.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getOneArtificerMoney()); + userMoneyDetails.setUserId(oneArtificerUser.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单取消!"); + userMoneyDetails.setTitle("推广师傅收益"); + userMoneyDetails.setType(1); + userMoneyDetails.setClassify(6); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(2); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); - orders.setOneArtificerUserId(oneArtificerUser.getUserId()); - orders.setOneArtificerUserName(oneArtificerUser.getUserName()); - } + orders.setOneArtificerUserId(oneArtificerUser.getUserId()); + orders.setOneArtificerUserName(oneArtificerUser.getUserName()); + } - if (orders.getShopUserId() != null) { - userMoneyService.updateMoney(1, orders.getShopUserId(), orders.getShopMoney().doubleValue()); - userMoneyDetails = new UserMoneyDetails(); - //查询用户当前余额 - UserMoney userNowMoney5 = userMoneyService.selectUserMoneyByUserId(orders.getShopUserId()); - //插入余额 - userMoneyDetails.setBalance(userNowMoney5.getMoney()); - //插入操作类型为已操作用户余额 - userMoneyDetails.setManipulateType(2); - userMoneyDetails.setMoney(orders.getShopMoney()); - userMoneyDetails.setUserId(orders.getShopUserId()); - userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单取消!"); - userMoneyDetails.setTitle("商家收益"); - userMoneyDetails.setType(1); - userMoneyDetails.setClassify(7); - userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); - userMoneyDetailsService.save(userMoneyDetails); - } - - - } else { - orders.setShopMoney(BigDecimal.ZERO); - orders.setArtificerMoney(BigDecimal.ZERO); - orders.setSumArtificerMoney(BigDecimal.ZERO); - orders.setOneUserMoney(BigDecimal.ZERO); - orders.setOneArtificerMoney(BigDecimal.ZERO); - orders.setPingMoney(BigDecimal.ZERO); - orders.setArtificerTaxiMoney(BigDecimal.ZERO); - orders.setPingTaxiMoney(BigDecimal.ZERO); + if (orders.getShopUserId() != null && orders.getShopMoney().compareTo(BigDecimal.ZERO)!=0) { + userMoneyService.updateMoney(1, orders.getShopUserId(), orders.getShopMoney().doubleValue()); + userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney5 = userMoneyService.selectUserMoneyByUserId(orders.getShopUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney5.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getShopMoney()); + userMoneyDetails.setUserId(orders.getShopUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单取消!"); + userMoneyDetails.setTitle("商家收益"); + userMoneyDetails.setType(1); + userMoneyDetails.setClassify(7); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(3); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); } List ordersList = baseMapper.selectList(new QueryWrapper().isNotNull("pay_way").eq("parent_id", orders.getOrdersId())); for (Orders orders1 : ordersList) { + userMoneyDetails = new UserMoneyDetails(); if (orders1.getPayWay() == 1 || orders1.getPayWay() == 2 || orders1.getPayWay() == 3 || orders1.getPayWay() == 4) { boolean refund = wxService.refund(orders1.getOrdersNo(), orders1.getPayMoney(), orders1.getPayMoney(), orders1.getPayWay()); if (!refund) { return Result.error("退款失败,请联系客服!"); } + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setBlFlag(2); } else if (orders1.getPayWay() == 6) { String data = aliPayController.alipayRefund(orders1.getOrdersNo(), orders1.getPayMoney()); if (StringUtils.isNotBlank(data)) { @@ -900,20 +1305,23 @@ public class OrdersServiceImpl extends ServiceImpl implements } else { return Result.error("退款失败!"); } + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setBlFlag(2); } else { - if (orders1.getUserArtificerMoney() != null && orders1.getUserArtificerMoney() == 1) { - userMoneyArtificerService.updateMoney(1, orders1.getUserId(), orders1.getArtificerId(), orders1.getPayMoney().doubleValue()); - } else { - userMoneyService.updateMoney(1, orders1.getUserId(), orders1.getPayMoney().doubleValue()); - } +// if (orders1.getUserArtificerMoney() != null && orders1.getUserArtificerMoney() == 1) { +// userMoneyArtificerService.updateMoney(1, orders1.getUserId(), orders1.getArtificerId(), orders1.getPayMoney().doubleValue()); +// } else { + userMoneyService.updateMoney(1, orders1.getUserId(), orders1.getPayMoney().doubleValue()); +// } + //查询用户当前余额 + UserMoney userNowMoney6 = userMoneyService.selectUserMoneyByUserId(orders1.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney6.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setBlFlag(1); } - userMoneyDetails = new UserMoneyDetails(); - //查询用户当前余额 - UserMoney userNowMoney6 = userMoneyService.selectUserMoneyByUserId(orders1.getUserId()); - //插入余额 - userMoneyDetails.setBalance(userNowMoney6.getMoney()); - //插入操作类型为已操作用户余额 - userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders1.getPayMoney()); userMoneyDetails.setUserId(orders1.getUserId()); userMoneyDetails.setContent("订单号:" + orders1.getOrdersNo() + ",已原路退款!"); @@ -921,31 +1329,393 @@ public class OrdersServiceImpl extends ServiceImpl implements userMoneyDetails.setType(1); userMoneyDetails.setCreateTime(time); userMoneyDetails.setArtificerId(orders.getArtificerId()); - + userMoneyDetails.setBlRole(1); userMoneyDetailsService.save(userMoneyDetails); orders1.setStatus(4); baseMapper.updateById(orders1); } orders.setStatus(4); - Artificer artificer = artificerService.getById(orders.getArtificerId()); - if (userId != null && artificer.getUserId().equals(userId)) { + Artificer artificer2 = artificerService.getById(orders.getArtificerId()); + if (userId != null && artificer2.getUserId().equals(userId)) { BigDecimal newCreditScore = BigDecimal.ZERO; MessageInfo messageInfo = new MessageInfo(); messageInfo.setState("8"); - messageInfo.setUserId(String.valueOf(artificer.getUserId())); + messageInfo.setUserId(String.valueOf(artificer2.getUserId())); messageInfo.setTitle("取消订单:" + orders.getOrdersNo()); String value1 = commonInfoService.findOne(384).getValue(); BigDecimal creditScore = new BigDecimal(value1); - newCreditScore = artificer.getCreditScore().subtract(creditScore); + newCreditScore = artificer2.getCreditScore().subtract(creditScore); messageInfo.setContent("扣除信誉分:" + creditScore); - artificer.setCreditScore(newCreditScore); - String value = commonInfoService.findOne(385).getValue(); - BigDecimal minScore = new BigDecimal(value); - if (artificer.getCreditScore().doubleValue() < minScore.doubleValue()) { - artificer.setStatus(2); + artificer2.setCreditScore(newCreditScore); + String value2 = commonInfoService.findOne(385).getValue(); + BigDecimal minScore = new BigDecimal(value2); + if (artificer2.getCreditScore().doubleValue() < minScore.doubleValue()) { + artificer2.setStatus(2); } - artificerService.updateById(artificer); + artificerService.updateById(artificer2); + messageService.saveBody(messageInfo); + } + + + UserEntity userEntity = userService.selectUserById(orders.getUserId()); + + List ordersMassageList = ordersMassageService.list(new QueryWrapper().eq("orders_id", orders.getOrdersId())); + MassageType massageType = massageTypeService.getById(ordersMassageList.get(0).getMassageId()); + //超过十个字 则截取 + String content = massageType.getTitle(); + if (content.length() >= 15) { + content = content.substring(0, 15) + "..."; + } + + //消息推送 + if (StringUtils.isNotEmpty(userEntity.getOpenId())) { + CommonInfo one = commonInfoService.findOne(248); + List msgList = new ArrayList<>(); + msgList.add(orders.getOrdersNo()); + + msgList.add(content); + msgList.add("订单已取消,金额已原路退还!"); + SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one.getValue(), msgList, 2); + } + + if (StringUtils.isNotEmpty(userEntity.getClientid())) { + userService.pushToSingle("订单通知", "订单已取消,金额已原路退还!", userEntity.getClientid()); + } + + if (StringUtils.isNotBlank(userEntity.getWxOpenId())) { + String apkey = commonInfoService.findOne(313).getValue(); + LinkedHashMap data = new LinkedHashMap<>(); + data.put("character_string12", new TemplateMessageItem(orders.getOrdersNo(), "#d71345")); + data.put("thing17", new TemplateMessageItem(content, "#d71345")); + data.put("time14", new TemplateMessageItem(DateUtils.format(new Date()), "#d71345")); + userService.sendWxMessage(apkey, data, userEntity.getWxOpenId()); + } + } + baseMapper.updateById(orders); + return Result.success(); + } + + private Result cancelPackageOrders(Long userId, Orders orders, BigDecimal trafficDeduction, BigDecimal trafficRate){ + //释放 + UserPackageDetail userPackageDetail = new UserPackageDetail(); + userPackageDetail.setId(orders.getUserPackageDetailId()); + userPackageDetail.setStatus(0); + userPackageDetailService.updateById(userPackageDetail); + + if (orders.getStatus() == 1) { + orders.setStatus(4); + } else { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String time = simpleDateFormat.format(new Date()); + //车费扣款 + BigDecimal taxiMoneyDeduction = BigDecimal.ZERO; + if(trafficRate.compareTo(BigDecimal.ZERO) == 0){ + taxiMoneyDeduction = orders.getTaxiMoney().multiply(trafficRate); + }else{ + taxiMoneyDeduction = trafficDeduction; + } + //项目总扣款数 + BigDecimal rate = BigDecimal.ZERO; + //退款金额 + BigDecimal userMoney = orders.getTaxiMoney().subtract(taxiMoneyDeduction); + + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + if (orders.getPayWay() == 1 || orders.getPayWay() == 2 || orders.getPayWay() == 3 || orders.getPayWay() == 4) { + boolean refund = wxService.refund(orders.getOrdersNo(), orders.getTaxiMoney(), userMoney, orders.getPayWay()); + if (!refund) { + return Result.error("退款失败,请联系客服!"); + } + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setBlFlag(2); + } else if (orders.getPayWay() == 6) { + String data = aliPayController.alipayRefund(orders.getOrdersNo(), userMoney); + if (StringUtils.isNotBlank(data)) { + log.error(data); + JSONObject jsonObject = JSON.parseObject(data); + JSONObject alipay_trade_refund_response = jsonObject.getJSONObject("alipay_trade_refund_response"); + String code1 = alipay_trade_refund_response.getString("code"); + if (!"10000".equals(code1)) { + return Result.error("退款失败!" + alipay_trade_refund_response.getString("sub_msg")); + } + } else { + return Result.error("退款失败!"); + } + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setBlFlag(2); + } else { + //暂无用 +// if (orders.getUserArtificerMoney() != null && orders.getUserArtificerMoney() == 1) { +// +// userMoneyArtificerService.updateMoney(1, orders.getUserId(), orders.getArtificerId(), userMoney.doubleValue()); +// } else { + userMoneyService.updateMoney(1, orders.getUserId(), userMoney.doubleValue()); +// } + //查询用户当前余额 + UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setBlFlag(1); + } +// + userMoneyDetails.setMoney(userMoney); + userMoneyDetails.setUserId(orders.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已原路退款!扣除订单:" + BigDecimal.ZERO + ",车费:" + taxiMoneyDeduction); + userMoneyDetails.setTitle("订单退款"); + userMoneyDetails.setType(1); + userMoneyDetails.setCreateTime(time); + userMoneyDetails.setArtificerId(orders.getArtificerId()); + userMoneyDetails.setBlRole(1); + userMoneyDetailsService.save(userMoneyDetails); + + //按照比例 将扣除的钱进行分佣 + BigDecimal taxiMoney = taxiMoneyDeduction; + BigDecimal sumMoney = rate.add(taxiMoneyDeduction);//总扣费 + Artificer artificer = artificerService.getById(orders.getArtificerId()); + BigDecimal artificerTaxiMoney = taxiMoneyDeduction;//扣车费 + BigDecimal pingTaxiMoney = BigDecimal.ZERO; + BigDecimal artificerMoney = rate.multiply(artificer.getRate()); //技师获得扣款提成 + + String taxi = commonInfoService.findOne(394).getValue(); + if ("是".equals(taxi)) { + artificerTaxiMoney = taxiMoney.multiply(artificer.getRate()); + pingTaxiMoney = taxiMoney.subtract(artificerTaxiMoney); + } + + UserEntity user = userService.selectUserById(orders.getUserId()); + + UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); + + BigDecimal oneUserMoney = BigDecimal.ZERO; + if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { + orders.setOneUserId(oneUser.getUserId()); + orders.setOneUserName(oneUser.getUserName()); + oneUserMoney = rate.multiply(oneUser.getUserRate()); + } + + UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); + + UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); + + BigDecimal oneArtificerMoney = BigDecimal.ZERO; + if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { + orders.setOneArtificerUserId(oneArtificerUser.getUserId()); + orders.setOneArtificerUserName(oneArtificerUser.getUserName()); + oneArtificerMoney = rate.multiply(oneArtificerUser.getShopRate()); + } + + BigDecimal shopMoney = BigDecimal.ZERO; + if (artificerUser.getConsortiaId() != null) { + Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); + if (consortia != null && consortia.getUserId() != null) { + UserEntity consortiaUser = userService.getById(consortia.getUserId()); + if (consortiaUser != null) { + shopMoney = rate.multiply(consortia.getRate()); + } + } + } + rate = rate.subtract(artificerMoney); + rate = rate.subtract(oneUserMoney); + rate = rate.subtract(shopMoney); + rate = rate.subtract(oneArtificerMoney).setScale(2, BigDecimal.ROUND_DOWN); + orders.setShopMoney(shopMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setArtificerMoney(artificerMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setSumArtificerMoney(artificerMoney.add(artificerTaxiMoney).setScale(2, BigDecimal.ROUND_DOWN)); + orders.setOneUserMoney(oneUserMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setOneArtificerMoney(oneArtificerMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setPingMoney(rate.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setArtificerTaxiMoney(artificerTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); + orders.setPingTaxiMoney(pingTaxiMoney.setScale(2, BigDecimal.ROUND_DOWN)); + //分账 + userMoneyService.updateMoney(1, artificerUser.getUserId(), orders.getSumArtificerMoney().doubleValue()); + userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney1 = userMoneyService.selectUserMoneyByUserId(artificerUser.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney1.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getSumArtificerMoney()); + userMoneyDetails.setUserId(artificerUser.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单取消!"); + String value = commonInfoService.findOne(394).getValue(); + if ("是".equals(value)) { + if (orders.getShopUserId() != null) { + userMoneyDetails.setTitle("用户取消订单,总扣除:" + sumMoney + ",平台扣除:" + orders.getPingMoney() + + ",商家扣除:" + orders.getShopMoney() + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + + ",打车费:" + orders.getTaxiMoney() + ",平台扣除打车费:" + orders.getPingTaxiMoney() + ",到账打车费:" + orders.getArtificerTaxiMoney() + + ",到账总金额:" + orders.getSumArtificerMoney()); + } else { + userMoneyDetails.setTitle("用户取消订单,总扣除:" + sumMoney + ",平台扣除:" + orders.getPingMoney() + + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + + ",打车费:" + orders.getTaxiMoney() + ",平台扣除打车费:" + orders.getPingTaxiMoney() + ",到账打车费:" + orders.getArtificerTaxiMoney() + + ",到账总金额:" + orders.getSumArtificerMoney()); + } + } else { + if (orders.getShopUserId() != null) { + userMoneyDetails.setTitle("用户取消订单,总扣除:" + sumMoney + ",平台扣除:" + orders.getPingMoney() + + ",商家扣除:" + orders.getShopMoney() + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + + ",打车费:" + orders.getTaxiMoney() + + ",到账总金额:" + orders.getSumArtificerMoney()); + } else { + userMoneyDetails.setTitle("用户取消订单,总扣除:" + sumMoney + ",平台扣除:" + orders.getPingMoney() + + ",用户代理扣除:" + orders.getOneUserMoney() + ",技师代理扣除:" + orders.getOneArtificerMoney() + + ",打车费:" + orders.getTaxiMoney() + + ",到账总金额:" + orders.getSumArtificerMoney()); + } + } + userMoneyDetails.setType(1); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(2); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); + + if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1 && orders.getOneUserMoney().compareTo(BigDecimal.ZERO) !=0) { + userMoneyService.updateMoney(1, oneUser.getUserId(), orders.getOneUserMoney().doubleValue()); + userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney3 = userMoneyService.selectUserMoneyByUserId(oneUser.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney3.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getOneUserMoney()); + userMoneyDetails.setUserId(oneUser.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单取消!"); + userMoneyDetails.setTitle("推广用户收益"); + userMoneyDetails.setType(1); + userMoneyDetails.setClassify(5); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); + + orders.setOneUserId(oneUser.getUserId()); + orders.setOneUserName(oneUser.getUserName()); + } + + + if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1 && orders.getOneArtificerMoney().compareTo(BigDecimal.ZERO)!=0) { + userMoneyService.updateMoney(1, oneArtificerUser.getUserId(), orders.getOneArtificerMoney().doubleValue()); + userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney4 = userMoneyService.selectUserMoneyByUserId(oneArtificerUser.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney4.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getOneArtificerMoney()); + userMoneyDetails.setUserId(oneArtificerUser.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单取消!"); + userMoneyDetails.setTitle("推广师傅收益"); + userMoneyDetails.setType(1); + userMoneyDetails.setClassify(6); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(2); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); + + orders.setOneArtificerUserId(oneArtificerUser.getUserId()); + orders.setOneArtificerUserName(oneArtificerUser.getUserName()); + } + + if (orders.getShopUserId() != null && orders.getShopMoney().compareTo(BigDecimal.ZERO)!=0) { + userMoneyService.updateMoney(1, orders.getShopUserId(), orders.getShopMoney().doubleValue()); + userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney5 = userMoneyService.selectUserMoneyByUserId(orders.getShopUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney5.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getShopMoney()); + userMoneyDetails.setUserId(orders.getShopUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",订单取消!"); + userMoneyDetails.setTitle("商家收益"); + userMoneyDetails.setType(1); + userMoneyDetails.setClassify(7); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(3); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); + } + + + List ordersList = baseMapper.selectList(new QueryWrapper().isNotNull("pay_way").eq("parent_id", orders.getOrdersId())); + for (Orders orders1 : ordersList) { + userMoneyDetails = new UserMoneyDetails(); + if (orders1.getPayWay() == 1 || orders1.getPayWay() == 2 || orders1.getPayWay() == 3 || orders1.getPayWay() == 4) { + boolean refund = wxService.refund(orders1.getOrdersNo(), orders1.getPayMoney(), orders1.getPayMoney(), orders1.getPayWay()); + if (!refund) { + return Result.error("退款失败,请联系客服!"); + } + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setBlFlag(2); + } else if (orders1.getPayWay() == 6) { + String data = aliPayController.alipayRefund(orders1.getOrdersNo(), orders1.getPayMoney()); + if (StringUtils.isNotBlank(data)) { + log.error(data); + JSONObject jsonObject = JSON.parseObject(data); + JSONObject alipay_trade_refund_response = jsonObject.getJSONObject("alipay_trade_refund_response"); + String code1 = alipay_trade_refund_response.getString("code"); + if (!"10000".equals(code1)) { + return Result.error("退款失败!" + alipay_trade_refund_response.getString("sub_msg")); + } + } else { + return Result.error("退款失败!"); + } + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setBlFlag(2); + } else { +// if (orders1.getUserArtificerMoney() != null && orders1.getUserArtificerMoney() == 1) { +// userMoneyArtificerService.updateMoney(1, orders1.getUserId(), orders1.getArtificerId(), orders1.getPayMoney().doubleValue()); +// } else { + userMoneyService.updateMoney(1, orders1.getUserId(), orders1.getPayMoney().doubleValue()); +// } + //查询用户当前余额 + UserMoney userNowMoney6 = userMoneyService.selectUserMoneyByUserId(orders1.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney6.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setBlFlag(1); + } + + + userMoneyDetails.setMoney(orders1.getPayMoney()); + userMoneyDetails.setUserId(orders1.getUserId()); + userMoneyDetails.setContent("订单号:" + orders1.getOrdersNo() + ",已原路退款!"); + userMoneyDetails.setTitle("订单退款"); + userMoneyDetails.setType(1); + userMoneyDetails.setCreateTime(time); + userMoneyDetails.setArtificerId(orders.getArtificerId()); + userMoneyDetails.setBlRole(1); + userMoneyDetailsService.save(userMoneyDetails); + orders1.setStatus(4); + baseMapper.updateById(orders1); + } + orders.setStatus(4); + + Artificer artificer2 = artificerService.getById(orders.getArtificerId()); + if (userId != null && artificer2.getUserId().equals(userId)) { + BigDecimal newCreditScore = BigDecimal.ZERO; + MessageInfo messageInfo = new MessageInfo(); + messageInfo.setState("8"); + messageInfo.setUserId(String.valueOf(artificer2.getUserId())); + messageInfo.setTitle("取消订单:" + orders.getOrdersNo()); + String value1 = commonInfoService.findOne(384).getValue(); + BigDecimal creditScore = new BigDecimal(value1); + newCreditScore = artificer2.getCreditScore().subtract(creditScore); + messageInfo.setContent("扣除信誉分:" + creditScore); + artificer2.setCreditScore(newCreditScore); + String value2 = commonInfoService.findOne(385).getValue(); + BigDecimal minScore = new BigDecimal(value2); + if (artificer2.getCreditScore().doubleValue() < minScore.doubleValue()) { + artificer2.setStatus(2); + } + artificerService.updateById(artificer2); messageService.saveBody(messageInfo); } @@ -989,7 +1759,6 @@ public class OrdersServiceImpl extends ServiceImpl implements return Result.success(); } - @Override public Result refundOrdersMoney(Long ordersId, BigDecimal refundMoney) { Orders orders = baseMapper.selectById(ordersId); @@ -1169,6 +1938,11 @@ public class OrdersServiceImpl extends ServiceImpl implements return Result.success(); } + /** + * 删除订单 - 无用 + * @param ordersId + * @return + */ @Override public Result removeOrders(Long ordersId) { Orders orders = baseMapper.selectById(ordersId); @@ -1393,255 +2167,13 @@ public class OrdersServiceImpl extends ServiceImpl implements return Result.error("订单状态异常,请刷新页面后重试!"); } - UserMoneyArtificer userMoneyArtificer = userMoneyArtificerService.getOne(new QueryWrapper().eq("user_id", orders.getUserId()).eq("artificer_id", orders.getArtificerId())); - if (userMoneyArtificer != null && userMoneyArtificer.getMoney().doubleValue() >= orders.getPayMoney().doubleValue()) { - type = 2; - } else { - type = 1; - UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); - if (userMoney.getMoney().doubleValue() < orders.getPayMoney().doubleValue()) { - return Result.error("钱包余额不足,请充值!"); - } + if(orders.getUserPackageDetailId() !=null ){ + //套餐订单 + return payPackageOrders(orders,type); + }else{ + //项目订单 + return payMassageOrders(orders,type); } - - Integer duration = 0; - if (orders.getParentId() != null && orders.getParentId() != 0) { - Orders orders1 = baseMapper.selectById(orders.getParentId()); - OrdersMassage ordersMassage = ordersMassageService.getOne(new QueryWrapper().eq("orders_id", orders1.getOrdersId())); - MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); - if (massageType.getAddNum() == null || massageType.getAddNum() == 0) { - return Result.error("当前项目不允许加钟!"); - } else if (massageType.getAddNum() > 0) { - if (orders1.getAddNum() != null && orders1.getAddNum() >= massageType.getAddNum()) { - return Result.error("当前项目已超过最大加钟次数!"); - } - } - duration = massageType.getDuration(); - String value1 = commonInfoService.findOne(395).getValue(); - if ("是".equals(value1)) { - String value = commonInfoService.findOne(392).getValue(); - int minute = Integer.parseInt(value); - int i = 1; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); - String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); - String date = null; - String time = null; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf.parse(serveTime); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 0; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } - } - - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - calendar.setTime(parse); - for (int j = 0; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf1.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = new ArtificerTime(); - artificerTime.setArtificerId(orders.getArtificerId()); - artificerTime.setArtificerDate(date); - artificerTime.setArtificerTime(time); - artificerTime.setClassify(1); - artificerTime.setOrdersId(orders.getParentId()); - artificerTime.setCreateTime(DateUtils.format(new Date())); - artificerTimeService.save(artificerTime); - } - } - - } - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - if (type == 2) { - userMoneyArtificerService.updateMoney(2, orders.getUserId(), orders.getArtificerId(), orders.getPayMoney().doubleValue()); - UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); - userMoneyDetails.setClassify(8); - userMoneyDetails.setMoney(orders.getPayMoney()); - userMoneyDetails.setUserId(orders.getUserId()); - userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已经下单成功!"); - userMoneyDetails.setTitle("储蓄金支付订单"); - userMoneyDetails.setType(2); - userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); - userMoneyDetails.setArtificerId(orders.getArtificerId()); - userMoneyDetailsService.save(userMoneyDetails); - orders.setUserArtificerMoney(1); - } else { - userMoneyService.updateMoney(2, orders.getUserId(), orders.getPayMoney().doubleValue()); - UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); - //查询用户当前余额 - UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); - //插入余额 - userMoneyDetails.setBalance(userNowMoney.getMoney()); - //插入操作类型为已操作用户余额 - userMoneyDetails.setManipulateType(2); - userMoneyDetails.setMoney(orders.getPayMoney()); - userMoneyDetails.setUserId(orders.getUserId()); - userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已经下单成功!"); - userMoneyDetails.setTitle("支付订单"); - userMoneyDetails.setType(2); - userMoneyDetails.setState(2); - userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); - userMoneyDetails.setBlRole(1); - userMoneyDetails.setBlFlag(1); - userMoneyDetailsService.save(userMoneyDetails); - } - - orders.setStatus(2); - orders.setPayWay(5); - orders.setPayTime(simpleDateFormat.format(new Date())); - - BigDecimal pingMoney = orders.getPayMoney(); - UserEntity user = userService.selectUserById(orders.getUserId()); - - UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); - - BigDecimal oneUserMoney = BigDecimal.ZERO; - if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { - orders.setOneUserId(oneUser.getUserId()); - orders.setOneUserName(oneUser.getUserName()); - oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); - } - - Artificer artificer = artificerService.getById(orders.getArtificerId()); - - UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); - - UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); - - BigDecimal oneArtificerMoney = BigDecimal.ZERO; - if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { - orders.setOneArtificerUserId(oneArtificerUser.getUserId()); - orders.setOneArtificerUserName(oneArtificerUser.getUserName()); - oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); - } - - BigDecimal shopMoney = BigDecimal.ZERO; - if (artificerUser.getConsortiaId() != null) { - Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); - if (consortia != null && consortia.getUserId() != null) { - UserEntity consortiaUser = userService.getById(consortia.getUserId()); - if (consortiaUser != null) { - shopMoney = pingMoney.multiply(consortia.getRate()); - orders.setConsortiaId(consortia.getConsortiaId()); - orders.setShopUserId(consortiaUser.getUserId()); - orders.setShopUserName(consortiaUser.getUserName()); - } - } - } - pingMoney = pingMoney.subtract(orders.getArtificerMoney()); - pingMoney = pingMoney.subtract(oneUserMoney); - pingMoney = pingMoney.subtract(shopMoney); - pingMoney = pingMoney.subtract(oneArtificerMoney); - orders.setShopMoney(shopMoney); - orders.setOneUserMoney(oneUserMoney); - orders.setOneArtificerMoney(oneArtificerMoney); - orders.setPingMoney(pingMoney); - baseMapper.updateById(orders); - if (orders.getParentId() != null && orders.getParentId() != 0) { - Orders orders1 = baseMapper.selectById(orders.getParentId()); - if (orders1.getAddNum() == null) { - orders1.setAddNum(1); - } else { - orders1.setAddNum(orders1.getAddNum() + 1); - } - //获取加钟项目的时长 - if (orders1.getAddTime() != null) { - orders1.setAddTime(orders1.getAddTime() + orders.getAddTime()); - } else { - orders1.setAddTime(orders.getAddTime()); - } - boolean flag = false; - if (StringUtils.isNotBlank(orders1.getEndTime())) { - Calendar calendar = Calendar.getInstance(); - Date date = DateUtils.stringToDate(orders1.getEndTime(), "yyyy-MM-dd HH:mm:ss"); - calendar.setTime(date); - calendar.add(Calendar.MINUTE, orders.getAddTime()); - orders1.setEndTime(DateUtils.format(calendar.getTime())); - flag = true; - } - if (orders1.getAddMoney() != null) { - orders1.setAddMoney(orders1.getAddMoney().add(orders.getPayMoney())); - orders1.setAddArtificerMoney(orders1.getAddArtificerMoney().add(orders.getArtificerMoney())); - } else { - orders1.setAddMoney(orders.getPayMoney()); - orders1.setAddArtificerMoney(orders.getArtificerMoney()); - } - orders1.setSumMoney(orders1.getSumMoney().add(orders.getPayMoney())); - orders1.setSumArtificerMoney(orders1.getSumArtificerMoney().add(orders.getArtificerMoney())); - pingMoney = orders1.getSumMoney(); - oneUserMoney = BigDecimal.ZERO; - if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { - oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); - } - oneArtificerMoney = BigDecimal.ZERO; - if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { - oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); - } - shopMoney = BigDecimal.ZERO; - if (artificerUser.getConsortiaId() != null) { - Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); - if (consortia != null && consortia.getUserId() != null) { - UserEntity consortiaUser = userService.getById(consortia.getUserId()); - if (consortiaUser != null) { - shopMoney = pingMoney.multiply(consortia.getRate()); - - } - } - } - pingMoney = pingMoney.subtract(orders1.getSumArtificerMoney()); - pingMoney = pingMoney.subtract(oneUserMoney); - pingMoney = pingMoney.subtract(oneArtificerMoney); - pingMoney = pingMoney.subtract(shopMoney); - orders1.setShopMoney(shopMoney); - orders1.setOneUserMoney(oneUserMoney); - orders1.setOneArtificerMoney(oneArtificerMoney); - orders1.setPingMoney(pingMoney); - if (orders1.getStatus().equals(6)) { - String endTime = orders1.getEndTime(); - Date date = DateUtils.stringToDate(endTime, "yyyy-MM-dd HH:mm:ss"); - Calendar calendar = Calendar.getInstance(); - if (date.getTime() > System.currentTimeMillis()) { - calendar.setTime(date); - } - calendar.add(Calendar.MINUTE, duration); - orders1.setEndTime(endTime); - } - - baseMapper.updateById(orders1); - if (flag) { - baseMapper.update(null, Wrappers.lambdaUpdate() - .set(Orders::getWarning, null) - .eq(Orders::getOrdersId, orders1.getOrdersId())); - } - } else { - MessageInfo messageInfo = new MessageInfo(); - messageInfo.setState("16"); - messageInfo.setTitle("新订单通知"); - messageInfo.setUserId("0"); - messageInfo.setIsSee("0"); - messageService.saveBody(messageInfo); - } - sendMsg(orders); - - return Result.success(); } catch (Exception e) { e.printStackTrace(); log.error("钱包支付订单异常:" + e.getMessage(), e); @@ -1651,6 +2183,516 @@ public class OrdersServiceImpl extends ServiceImpl implements return Result.error("系统繁忙,请稍后再试!"); } + + private Result payMassageOrders(Orders orders, Integer type) throws Exception{ +// 无用,暂系统不支持储蓄金 +// UserMoneyArtificer userMoneyArtificer = userMoneyArtificerService.getOne(new QueryWrapper().eq("user_id", orders.getUserId()).eq("artificer_id", orders.getArtificerId())); +// if (userMoneyArtificer != null && userMoneyArtificer.getMoney().doubleValue() >= orders.getPayMoney().doubleValue()) { +// type = 2; +// } else { +// type = 1; + UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + if (userMoney.getMoney().doubleValue() < orders.getPayMoney().doubleValue()) { + return Result.error("钱包余额不足,请充值!"); + } +// } + + Integer duration = 0; + if (orders.getParentId() != null && orders.getParentId() != 0) { + Orders orders1 = baseMapper.selectById(orders.getParentId()); + OrdersMassage ordersMassage = ordersMassageService.getOne(new QueryWrapper().eq("orders_id", orders1.getOrdersId())); + MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); + if (massageType.getAddNum() == null || massageType.getAddNum() == 0) { + return Result.error("当前项目不允许加钟!"); + } else if (massageType.getAddNum() > 0) { + if (orders1.getAddNum() != null && orders1.getAddNum() >= massageType.getAddNum()) { + return Result.error("当前项目已超过最大加钟次数!"); + } + } + duration = massageType.getDuration(); + String value1 = commonInfoService.findOne(395).getValue(); + if ("是".equals(value1)) { + String value = commonInfoService.findOne(392).getValue(); + int minute = Integer.parseInt(value); + int i = 1; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); + String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); + String date = null; + String time = null; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date parse = sdf.parse(serveTime); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = sdf.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + } + + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = sdf1.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = new ArtificerTime(); + artificerTime.setArtificerId(orders.getArtificerId()); + artificerTime.setArtificerDate(date); + artificerTime.setArtificerTime(time); + artificerTime.setClassify(1); + artificerTime.setOrdersId(orders.getParentId()); + artificerTime.setCreateTime(DateUtils.format(new Date())); + artificerTimeService.save(artificerTime); + } + } + + } + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// if (type == 2) { +// //无用,暂系统不支持储蓄金 +// userMoneyArtificerService.updateMoney(2, orders.getUserId(), orders.getArtificerId(), orders.getPayMoney().doubleValue()); +// UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); +// userMoneyDetails.setClassify(8); +// userMoneyDetails.setMoney(orders.getPayMoney()); +// userMoneyDetails.setUserId(orders.getUserId()); +// userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已经下单成功!"); +// userMoneyDetails.setTitle("储蓄金支付订单"); +// userMoneyDetails.setType(2); +// userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); +// userMoneyDetails.setArtificerId(orders.getArtificerId()); +// userMoneyDetailsService.save(userMoneyDetails); +// orders.setUserArtificerMoney(1); +// } else { + userMoneyService.updateMoney(2, orders.getUserId(), orders.getPayMoney().doubleValue()); + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getPayMoney()); + userMoneyDetails.setUserId(orders.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已经下单成功!"); + userMoneyDetails.setTitle("支付订单"); + userMoneyDetails.setType(2); + userMoneyDetails.setState(2); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); +// } + + orders.setStatus(9);//用户已支付技师待接单 + orders.setPayWay(5); + orders.setPayTime(simpleDateFormat.format(new Date())); + + BigDecimal pingMoney = orders.getPayMoney(); +// 分佣在订单完成后进行计算 2024-06-20 by caolei +// UserEntity user = userService.selectUserById(orders.getUserId()); + +// UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); +// + BigDecimal oneUserMoney = BigDecimal.ZERO; +// if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { +// orders.setOneUserId(oneUser.getUserId()); +// orders.setOneUserName(oneUser.getUserName()); +// oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); +// } + + Artificer artificer = artificerService.getById(orders.getArtificerId()); +// +// UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); +// +// UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); +// + BigDecimal oneArtificerMoney = BigDecimal.ZERO; +// if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { +// orders.setOneArtificerUserId(oneArtificerUser.getUserId()); +// orders.setOneArtificerUserName(oneArtificerUser.getUserName()); +// oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); +// } + + BigDecimal shopMoney = BigDecimal.ZERO; +// if (artificerUser.getConsortiaId() != null) { +// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); +// if (consortia != null && consortia.getUserId() != null) { +// UserEntity consortiaUser = userService.getById(consortia.getUserId()); +// if (consortiaUser != null) { +// shopMoney = pingMoney.multiply(consortia.getRate()); +// orders.setConsortiaId(consortia.getConsortiaId()); +// orders.setShopUserId(consortiaUser.getUserId()); +// orders.setShopUserName(consortiaUser.getUserName()); +// } +// } +// } + pingMoney = pingMoney.subtract(orders.getArtificerMoney()); + pingMoney = pingMoney.subtract(oneUserMoney); + pingMoney = pingMoney.subtract(shopMoney); + pingMoney = pingMoney.subtract(oneArtificerMoney); + orders.setShopMoney(shopMoney); + orders.setOneUserMoney(oneUserMoney); + orders.setOneArtificerMoney(oneArtificerMoney); + orders.setPingMoney(pingMoney); + baseMapper.updateById(orders); + if (orders.getParentId() != null && orders.getParentId() != 0) { + Orders orders1 = baseMapper.selectById(orders.getParentId()); + if (orders1.getAddNum() == null) { + orders1.setAddNum(1); + } else { + orders1.setAddNum(orders1.getAddNum() + 1); + } + //获取加钟项目的时长 + if (orders1.getAddTime() != null) { + orders1.setAddTime(orders1.getAddTime() + orders.getAddTime()); + } else { + orders1.setAddTime(orders.getAddTime()); + } + boolean flag = false; + if (StringUtils.isNotBlank(orders1.getEndTime())) { + Calendar calendar = Calendar.getInstance(); + Date date = DateUtils.stringToDate(orders1.getEndTime(), "yyyy-MM-dd HH:mm:ss"); + calendar.setTime(date); + calendar.add(Calendar.MINUTE, orders.getAddTime()); + orders1.setEndTime(DateUtils.format(calendar.getTime())); + flag = true; + } + if (orders1.getAddMoney() != null) { + orders1.setAddMoney(orders1.getAddMoney().add(orders.getPayMoney())); + orders1.setAddArtificerMoney(orders1.getAddArtificerMoney().add(orders.getArtificerMoney())); + } else { + orders1.setAddMoney(orders.getPayMoney()); + orders1.setAddArtificerMoney(orders.getArtificerMoney()); + } + orders1.setSumMoney(orders1.getSumMoney().add(orders.getPayMoney())); + orders1.setSumArtificerMoney(orders1.getSumArtificerMoney().add(orders.getArtificerMoney())); + pingMoney = orders1.getSumMoney(); + oneUserMoney = BigDecimal.ZERO; +// 分佣在订单完成后进行计算 2024-06-20 by caolei +// if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { +// oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); +// } + oneArtificerMoney = BigDecimal.ZERO; +// if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { +// oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); +// } + shopMoney = BigDecimal.ZERO; +// if (artificerUser.getConsortiaId() != null) { +// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); +// if (consortia != null && consortia.getUserId() != null) { +// UserEntity consortiaUser = userService.getById(consortia.getUserId()); +// if (consortiaUser != null) { +// shopMoney = pingMoney.multiply(consortia.getRate()); +// +// } +// } +// } + pingMoney = pingMoney.subtract(orders1.getSumArtificerMoney()); + pingMoney = pingMoney.subtract(oneUserMoney); + pingMoney = pingMoney.subtract(oneArtificerMoney); + pingMoney = pingMoney.subtract(shopMoney); + orders1.setShopMoney(shopMoney); + orders1.setOneUserMoney(oneUserMoney); + orders1.setOneArtificerMoney(oneArtificerMoney); + orders1.setPingMoney(pingMoney); + if (orders1.getStatus().equals(6)) { + String endTime = orders1.getEndTime(); + Date date = DateUtils.stringToDate(endTime, "yyyy-MM-dd HH:mm:ss"); + Calendar calendar = Calendar.getInstance(); + if (date.getTime() > System.currentTimeMillis()) { + calendar.setTime(date); + } + calendar.add(Calendar.MINUTE, duration); + orders1.setEndTime(endTime); + } + + baseMapper.updateById(orders1); + if (flag) { + baseMapper.update(null, Wrappers.lambdaUpdate() + .set(Orders::getWarning, null) + .eq(Orders::getOrdersId, orders1.getOrdersId())); + } + } else { + MessageInfo messageInfo = new MessageInfo(); + messageInfo.setState("16"); + messageInfo.setTitle("新订单通知"); + messageInfo.setUserId("0"); + messageInfo.setIsSee("0"); + messageService.saveBody(messageInfo); + //电话通知 add 2024-06-20 by caolei + messageService.sendNoticeByCall(artificer.getUserId()); + } + sendMsg(orders); + + return Result.success(); + } + + private Result payPackageOrders(Orders orders, Integer type) throws Exception{ +// 无用,暂系统不支持储蓄金 +// UserMoneyArtificer userMoneyArtificer = userMoneyArtificerService.getOne(new QueryWrapper().eq("user_id", orders.getUserId()).eq("artificer_id", orders.getArtificerId())); +// if (userMoneyArtificer != null && userMoneyArtificer.getMoney().doubleValue() >= orders.getTaxiMoney().doubleValue()) { +// type = 2; +// } else { +// type = 1; + UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + if (userMoney.getMoney().doubleValue() < orders.getTaxiMoney().doubleValue()) { + return Result.error("钱包余额不足,请充值!"); + } +// } + + Integer duration = 0; + if (orders.getParentId() != null && orders.getParentId() != 0) { + Orders orders1 = baseMapper.selectById(orders.getParentId()); + OrdersMassage ordersMassage = ordersMassageService.getOne(new QueryWrapper().eq("orders_id", orders1.getOrdersId())); + MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); + if (massageType.getAddNum() == null || massageType.getAddNum() == 0) { + return Result.error("当前项目不允许加钟!"); + } else if (massageType.getAddNum() > 0) { + if (orders1.getAddNum() != null && orders1.getAddNum() >= massageType.getAddNum()) { + return Result.error("当前项目已超过最大加钟次数!"); + } + } + duration = massageType.getDuration(); + String value1 = commonInfoService.findOne(395).getValue(); + if ("是".equals(value1)) { + String value = commonInfoService.findOne(392).getValue(); + int minute = Integer.parseInt(value); + int i = 1; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); + String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); + String date = null; + String time = null; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date parse = sdf.parse(serveTime); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = sdf.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date).eq("artificer_time", time)); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + } + + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = sdf1.format(calendar.getTime()); + date = format.substring(0, 10); + time = format.substring(11, 16); + artificerTime = new ArtificerTime(); + artificerTime.setArtificerId(orders.getArtificerId()); + artificerTime.setArtificerDate(date); + artificerTime.setArtificerTime(time); + artificerTime.setClassify(1); + artificerTime.setOrdersId(orders.getParentId()); + artificerTime.setCreateTime(DateUtils.format(new Date())); + artificerTimeService.save(artificerTime); + } + } + + } + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// if (type == 2) { +// 无用,暂系统不支持储蓄金 +// userMoneyArtificerService.updateMoney(2, orders.getUserId(), orders.getArtificerId(), orders.getTaxiMoney().doubleValue()); +// UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); +// userMoneyDetails.setClassify(8); +// userMoneyDetails.setMoney(orders.getTaxiMoney()); +// userMoneyDetails.setUserId(orders.getUserId()); +// userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已经下单成功!"); +// userMoneyDetails.setTitle("储蓄金支付订单"); +// userMoneyDetails.setType(2); +// userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); +// userMoneyDetails.setArtificerId(orders.getArtificerId()); +// userMoneyDetailsService.save(userMoneyDetails); +// orders.setUserArtificerMoney(1); +// } else { + userMoneyService.updateMoney(2, orders.getUserId(), orders.getTaxiMoney().doubleValue()); + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getTaxiMoney()); + userMoneyDetails.setUserId(orders.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已经下单成功!"); + userMoneyDetails.setTitle("支付订单"); + userMoneyDetails.setType(2); + userMoneyDetails.setState(2); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); +// } + + orders.setStatus(9);//用户已支付技师待接单 + orders.setPayWay(5); + orders.setPayTime(simpleDateFormat.format(new Date())); + + BigDecimal pingMoney = orders.getPayMoney(); +// 分佣在订单完成后进行计算 2024-06-20 by caolei +// UserEntity user = userService.selectUserById(orders.getUserId()); +// UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); + BigDecimal oneUserMoney = BigDecimal.ZERO; +// if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { +// orders.setOneUserId(oneUser.getUserId()); +// orders.setOneUserName(oneUser.getUserName()); +// oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); +// } + Artificer artificer = artificerService.getById(orders.getArtificerId()); +// UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); +// UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); + BigDecimal oneArtificerMoney = BigDecimal.ZERO; +// if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { +// orders.setOneArtificerUserId(oneArtificerUser.getUserId()); +// orders.setOneArtificerUserName(oneArtificerUser.getUserName()); +// oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); +// } + + BigDecimal shopMoney = BigDecimal.ZERO; +// if (artificerUser.getConsortiaId() != null) { +// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); +// if (consortia != null && consortia.getUserId() != null) { +// UserEntity consortiaUser = userService.getById(consortia.getUserId()); +// if (consortiaUser != null) { +// shopMoney = pingMoney.multiply(consortia.getRate()); +// orders.setConsortiaId(consortia.getConsortiaId()); +// orders.setShopUserId(consortiaUser.getUserId()); +// orders.setShopUserName(consortiaUser.getUserName()); +// } +// } +// } + pingMoney = pingMoney.subtract(orders.getArtificerMoney()); + pingMoney = pingMoney.subtract(oneUserMoney); + pingMoney = pingMoney.subtract(shopMoney); + pingMoney = pingMoney.subtract(oneArtificerMoney); + orders.setShopMoney(shopMoney); + orders.setOneUserMoney(oneUserMoney); + orders.setOneArtificerMoney(oneArtificerMoney); + orders.setPingMoney(pingMoney); + baseMapper.updateById(orders); + if (orders.getParentId() != null && orders.getParentId() != 0) { + Orders orders1 = baseMapper.selectById(orders.getParentId()); + if (orders1.getAddNum() == null) { + orders1.setAddNum(1); + } else { + orders1.setAddNum(orders1.getAddNum() + 1); + } + //获取加钟项目的时长 + if (orders1.getAddTime() != null) { + orders1.setAddTime(orders1.getAddTime() + orders.getAddTime()); + } else { + orders1.setAddTime(orders.getAddTime()); + } + boolean flag = false; + if (StringUtils.isNotBlank(orders1.getEndTime())) { + Calendar calendar = Calendar.getInstance(); + Date date = DateUtils.stringToDate(orders1.getEndTime(), "yyyy-MM-dd HH:mm:ss"); + calendar.setTime(date); + calendar.add(Calendar.MINUTE, orders.getAddTime()); + orders1.setEndTime(DateUtils.format(calendar.getTime())); + flag = true; + } + if (orders1.getAddMoney() != null) { + orders1.setAddMoney(orders1.getAddMoney().add(orders.getPayMoney())); + orders1.setAddArtificerMoney(orders1.getAddArtificerMoney().add(orders.getArtificerMoney())); + } else { + orders1.setAddMoney(orders.getPayMoney()); + orders1.setAddArtificerMoney(orders.getArtificerMoney()); + } + orders1.setSumMoney(orders1.getSumMoney().add(orders.getPayMoney())); + orders1.setSumArtificerMoney(orders1.getSumArtificerMoney().add(orders.getArtificerMoney())); + pingMoney = orders1.getSumMoney(); + oneUserMoney = BigDecimal.ZERO; +// 分佣在订单完成后进行计算 2024-06-20 by caolei +// if (oneUser != null && oneUser.getIsAgency() != null && oneUser.getIsAgency() == 1) { +// oneUserMoney = pingMoney.multiply(oneUser.getUserRate()); +// } + oneArtificerMoney = BigDecimal.ZERO; +// if (oneArtificerUser != null && oneArtificerUser.getIsAgency() != null && oneArtificerUser.getIsAgency() == 1) { +// oneArtificerMoney = pingMoney.multiply(oneArtificerUser.getShopRate()); +// } + shopMoney = BigDecimal.ZERO; +// if (artificerUser.getConsortiaId() != null) { +// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); +// if (consortia != null && consortia.getUserId() != null) { +// UserEntity consortiaUser = userService.getById(consortia.getUserId()); +// if (consortiaUser != null) { +// shopMoney = pingMoney.multiply(consortia.getRate()); +// +// } +// } +// } + pingMoney = pingMoney.subtract(orders1.getSumArtificerMoney()); + pingMoney = pingMoney.subtract(oneUserMoney); + pingMoney = pingMoney.subtract(oneArtificerMoney); + pingMoney = pingMoney.subtract(shopMoney); + orders1.setShopMoney(shopMoney); + orders1.setOneUserMoney(oneUserMoney); + orders1.setOneArtificerMoney(oneArtificerMoney); + orders1.setPingMoney(pingMoney); + if (orders1.getStatus().equals(6)) { + String endTime = orders1.getEndTime(); + Date date = DateUtils.stringToDate(endTime, "yyyy-MM-dd HH:mm:ss"); + Calendar calendar = Calendar.getInstance(); + if (date.getTime() > System.currentTimeMillis()) { + calendar.setTime(date); + } + calendar.add(Calendar.MINUTE, duration); + orders1.setEndTime(endTime); + } + + baseMapper.updateById(orders1); + if (flag) { + baseMapper.update(null, Wrappers.lambdaUpdate() + .set(Orders::getWarning, null) + .eq(Orders::getOrdersId, orders1.getOrdersId())); + } + } else { + MessageInfo messageInfo = new MessageInfo(); + messageInfo.setState("16"); + messageInfo.setTitle("新订单通知"); + messageInfo.setUserId("0"); + messageInfo.setIsSee("0"); + messageService.saveBody(messageInfo); + //电话通知 add 2024-06-20 by caolei + messageService.sendNoticeByCall(artificer.getUserId()); + } + sendMsg(orders); + return Result.success(); + } + @Override public void sendMsg(Orders orders) { try { @@ -1725,7 +2767,6 @@ public class OrdersServiceImpl extends ServiceImpl implements e.printStackTrace(); log.error("消息推送异常:" + e.getMessage(), e); } - } diff --git a/src/main/java/com/sqx/modules/bl/massage/entity/MassagePackage.java b/src/main/java/com/sqx/modules/bl/massage/entity/MassagePackage.java index 01b87be..69a2c11 100644 --- a/src/main/java/com/sqx/modules/bl/massage/entity/MassagePackage.java +++ b/src/main/java/com/sqx/modules/bl/massage/entity/MassagePackage.java @@ -110,7 +110,7 @@ public class MassagePackage implements Serializable { /** * 服务分类ID */ - private Integer classifyId; + private Long classifyId; /** * 类型名称 diff --git a/src/main/java/com/sqx/modules/bl/order/entity/UserPackage.java b/src/main/java/com/sqx/modules/bl/order/entity/UserPackage.java index 90054f3..1d58cd7 100644 --- a/src/main/java/com/sqx/modules/bl/order/entity/UserPackage.java +++ b/src/main/java/com/sqx/modules/bl/order/entity/UserPackage.java @@ -100,7 +100,7 @@ public class UserPackage implements Serializable { /** * 服务分类ID */ - private Integer classifyId; + private Long classifyId; /** * 服务分类名称 diff --git a/src/main/java/com/sqx/modules/bl/order/entity/UserPackageDetail.java b/src/main/java/com/sqx/modules/bl/order/entity/UserPackageDetail.java index 994218e..7a2eccd 100644 --- a/src/main/java/com/sqx/modules/bl/order/entity/UserPackageDetail.java +++ b/src/main/java/com/sqx/modules/bl/order/entity/UserPackageDetail.java @@ -44,7 +44,7 @@ public class UserPackageDetail implements Serializable { private Long massageTypeId; /** - * 状态 1上 2下 + * 状态,是否使用,0未使用,1已使用 */ private Integer status; diff --git a/src/main/java/com/sqx/modules/bl/order/service/impl/UserPackageOrderServiceImpl.java b/src/main/java/com/sqx/modules/bl/order/service/impl/UserPackageOrderServiceImpl.java index 014e726..e6190ba 100644 --- a/src/main/java/com/sqx/modules/bl/order/service/impl/UserPackageOrderServiceImpl.java +++ b/src/main/java/com/sqx/modules/bl/order/service/impl/UserPackageOrderServiceImpl.java @@ -127,7 +127,7 @@ public class UserPackageOrderServiceImpl extends ServiceImpl classifyIdArr = Lists.newArrayList(); + List classifyIdArr = Lists.newArrayList(); List ordersPackageList = userPackageOrder.getOrdersPackageList(); for (UserPackageOrdersMapping ordersPackage : ordersPackageList) { MassagePackage massagePackage = massagePackageService.getById(ordersPackage.getPackageId()); @@ -139,7 +139,7 @@ public class UserPackageOrderServiceImpl extends ServiceImpl implements CommonInfoService { - private final CommonInfoDao commonInfoDao; private final UserRechargeDao userRechargeDao; private final ArtificerPartitioningDetailsMapper artificerPartitioningDetailsMapper; @@ -142,54 +141,52 @@ public class CommonInfoServiceImpl extends ServiceImpl configMap = getMapByCondition(CommonEnum.GroupConditionEnum.V3_ORDER_FORM.getValue()); CommonInfo defCommonInfo = new CommonInfo(); - if(bnDiffDay >= 0) { + if(bnDiffDay > 0) { //正数 开始前 - //距离服务开始n个小时以上免费取消 - 4 + //距离服务开始n分钟以上免费取消 240 CommonInfo v3OrderFormCancelNotStart01 = configMap.getOrDefault(CommonEnum.V3_ORDER_FORM_CANCEL_NOT_START_01.getKey(), defCommonInfo); - Double v3OrderFormCancelNotStart01D = CommonConfigUtil.getDoubleValue(v3OrderFormCancelNotStart01.getValue()); - if(v3OrderFormCancelNotStart01D == null) v3OrderFormCancelNotStart01D = -1D; - //距离服务开始前取消n-n个小时内,收取n元 - 1.5,4,10 + Long v3OrderFormCancelNotStart01D = CommonConfigUtil.getLongValue(v3OrderFormCancelNotStart01.getValue()); + if(v3OrderFormCancelNotStart01D == null) v3OrderFormCancelNotStart01D = 240L; + //距离服务开始前取消n-n分钟内,收取n元 90,240,10 CommonInfo v3OrderFormCancelNotStart02 = configMap.getOrDefault(CommonEnum.V3_ORDER_FORM_CANCEL_NOT_START_02.getKey(), defCommonInfo); - String[] v3OrderFormCancelNotStart02A = CommonConfigUtil.getArrayValue(v3OrderFormCancelNotStart01.getValue()); - if(v3OrderFormCancelNotStart02A == null) v3OrderFormCancelNotStart02A = new String[]{ "-1","4","10" }; - double v3OrderFormCancelNotStart02D = Double.parseDouble(v3OrderFormCancelNotStart02A[0]); - //距离服务开始前取消少于n个小时内,收取n元 -1.5,30 + String[] v3OrderFormCancelNotStart02A = CommonConfigUtil.getArrayValue(v3OrderFormCancelNotStart02.getValue()); + if(v3OrderFormCancelNotStart02A == null) v3OrderFormCancelNotStart02A = new String[]{ "90","240","10" }; + Long v3OrderFormCancelNotStart02D = CommonConfigUtil.getLongValue(v3OrderFormCancelNotStart02A[0]); + //距离服务开始前取消少于n分钟内,收取n元 90,30 CommonInfo v3OrderFormCancelNotStart03 = configMap.getOrDefault(CommonEnum.V3_ORDER_FORM_CANCEL_NOT_START_03.getKey(), defCommonInfo); - String[] v3OrderFormCancelNotStart03A = CommonConfigUtil.getArrayValue(v3OrderFormCancelNotStart01.getValue()); - if(v3OrderFormCancelNotStart03A == null) v3OrderFormCancelNotStart03A = new String[]{ "-1","30" }; - double v3OrderFormCancelNotStart03D = Double.parseDouble(v3OrderFormCancelNotStart03A[0]); + String[] v3OrderFormCancelNotStart03A = CommonConfigUtil.getArrayValue(v3OrderFormCancelNotStart03.getValue()); + if(v3OrderFormCancelNotStart03A == null) v3OrderFormCancelNotStart03A = new String[]{ "90","30" }; + Long v3OrderFormCancelNotStart03D = CommonConfigUtil.getLongValue(v3OrderFormCancelNotStart03A[0]); - if(bnDiffDay > v3OrderFormCancelNotStart01D && v3OrderFormCancelNotStart01D != -1){ + if(bnDiffDay >= v3OrderFormCancelNotStart01D){ //外面的 return v3OrderFormCancelNotStart01; - } else if(bnDiffDay <= v3OrderFormCancelNotStart01D && bnDiffDay >= v3OrderFormCancelNotStart02D && v3OrderFormCancelNotStart02D != -1){ + } else if(bnDiffDay >= v3OrderFormCancelNotStart02D && bnDiffDay < v3OrderFormCancelNotStart01D ){ return v3OrderFormCancelNotStart02; - } else if(bnDiffDay < v3OrderFormCancelNotStart02D && bnDiffDay >= v3OrderFormCancelNotStart03D && v3OrderFormCancelNotStart03D != -1){ - return v3OrderFormCancelNotStart03; - } else if(v3OrderFormCancelNotStart03D > bnDiffDay){ + } else if(bnDiffDay < v3OrderFormCancelNotStart03D){ return v3OrderFormCancelNotStart03; } } else { //负数,开始后 long bnDiffMinute = DateUtil.between(businessTime, nowTime, DateUnit.MINUTE, false); - //服务开始n分钟内取消订单,扣项目费用n%,车费全扣n%; - 15,50,100 + //服务开始n分钟内取消订单,扣项目费用n%,车费全扣n%; 15,50,100 CommonInfo v3OrderFormCancelStart01 = configMap.getOrDefault(CommonEnum.V3_ORDER_FORM_CANCEL_START_01.getKey(), defCommonInfo); String[] v3OrderFormCancelStart01A = CommonConfigUtil.getArrayValue(v3OrderFormCancelStart01.getValue()); - if(v3OrderFormCancelStart01A == null) v3OrderFormCancelStart01A = new String[]{ "-1","0","0" }; - double v3OrderFormCancelStart01I = Double.parseDouble(v3OrderFormCancelStart01A[0]); - //服务开始n分钟后不可以取消订单 - 15 + if(v3OrderFormCancelStart01A == null) v3OrderFormCancelStart01A = new String[]{ "15","50","100" }; + Long v3OrderFormCancelStart01I = CommonConfigUtil.getLongValue(v3OrderFormCancelStart01A[0]); + //服务开始n分钟后不可以取消订单 15 CommonInfo v3OrderFormCancelStart02 = configMap.getOrDefault(CommonEnum.V3_ORDER_FORM_CANCEL_START_02.getKey(), defCommonInfo); - Double v3OrderFormCancelStart02I = CommonConfigUtil.getDoubleValue(v3OrderFormCancelStart02.getValue()); - if(v3OrderFormCancelStart02I == null) v3OrderFormCancelStart02I = -1D; + Long v3OrderFormCancelStart02I = CommonConfigUtil.getLongValue(v3OrderFormCancelStart02.getValue()); + if(v3OrderFormCancelStart02I == null) v3OrderFormCancelStart02I = 15L; if(bnDiffMinute <= v3OrderFormCancelStart01I) { return v3OrderFormCancelStart01; - } else if(bnDiffMinute >= v3OrderFormCancelStart02I){ + } else if(bnDiffMinute > v3OrderFormCancelStart02I){ return v3OrderFormCancelStart02; } } @@ -223,6 +220,4 @@ public class CommonInfoServiceImpl extends ServiceImpl { Result selectArtificerScoreList(Integer page,Integer limit,String artificerName,String phone,Long userId); + void sendNoticeByCall(Long userId); } diff --git a/src/main/java/com/sqx/modules/message/service/impl/MessageServiceImpl.java b/src/main/java/com/sqx/modules/message/service/impl/MessageServiceImpl.java index 8ca834f..d6053f0 100644 --- a/src/main/java/com/sqx/modules/message/service/impl/MessageServiceImpl.java +++ b/src/main/java/com/sqx/modules/message/service/impl/MessageServiceImpl.java @@ -236,4 +236,17 @@ public class MessageServiceImpl extends return Result.success().put("data",new PageUtils(baseMapper.selectArtificerScoreList(new Page<>(page,limit),artificerName,phone,userId))); } + @Override + public void sendNoticeByCall(Long userId){ + //技师电话通知业务 + UserEntity byId = userService.getById(userId); + //accountId + String accountId = commonInfoService.findOne(428).getValue(); + //token + String token = commonInfoService.findOne(429).getValue(); + //templateId + String templateId = commonInfoService.findOne(430).getValue(); + AppNotifyUtil.AppNotify(byId.getPhone(),accountId,token,templateId); + } + } diff --git a/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java b/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java index f6873c8..352aa2c 100644 --- a/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java +++ b/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java @@ -179,51 +179,46 @@ public class AliPayController { payDetailsDao.updateState(payDetails.getId(), 1, sdf.format(new Date()), tradeNo); if (payDetails.getType() == 1) { Orders orders = ordersService.selectOrdersByOrderNo(payDetails.getOrderId()); - orders.setStatus(2); + orders.setStatus(9);//用户已支付技师待接单 orders.setPayWay(6); orders.setPayTime(sdf.format(new Date())); BigDecimal pingMoney=orders.getPayMoney(); - UserEntity user = userService.selectUserById(orders.getUserId()); - - UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); - +// 分佣在订单完成后进行计算 2024-06-20 by caolei +// UserEntity user = userService.selectUserById(orders.getUserId()); +// UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); BigDecimal oneUserMoney=BigDecimal.ZERO; - if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ - orders.setOneUserId(oneUser.getUserId()); - orders.setOneUserName(oneUser.getUserName()); - oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); - - } +// if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ +// orders.setOneUserId(oneUser.getUserId()); +// orders.setOneUserName(oneUser.getUserName()); +// oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); +// } Artificer artificer = artificerService.getById(orders.getArtificerId()); - - UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); - - UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); - +// UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); +// UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); BigDecimal oneArtificerMoney=BigDecimal.ZERO; - if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ - orders.setOneArtificerUserId(oneArtificerUser.getUserId()); - orders.setOneArtificerUserName(oneArtificerUser.getUserName()); - oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); - - } +// if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ +// orders.setOneArtificerUserId(oneArtificerUser.getUserId()); +// orders.setOneArtificerUserName(oneArtificerUser.getUserName()); +// oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); +// +// } BigDecimal shopMoney=BigDecimal.ZERO; - if(artificerUser.getConsortiaId()!=null){ - Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); - if(consortia!=null && consortia.getUserId()!=null){ - UserEntity consortiaUser = userService.getById(consortia.getUserId()); - if(consortiaUser!=null){ - shopMoney = pingMoney.multiply(consortia.getRate()); - orders.setConsortiaId(consortia.getConsortiaId()); - orders.setShopUserId(consortiaUser.getUserId()); - orders.setShopUserName(consortiaUser.getUserName()); - - } - } - } +// if(artificerUser.getConsortiaId()!=null){ +// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); +// if(consortia!=null && consortia.getUserId()!=null){ +// UserEntity consortiaUser = userService.getById(consortia.getUserId()); +// if(consortiaUser!=null){ +// shopMoney = pingMoney.multiply(consortia.getRate()); +// orders.setConsortiaId(consortia.getConsortiaId()); +// orders.setShopUserId(consortiaUser.getUserId()); +// orders.setShopUserName(consortiaUser.getUserName()); +// +// } +// } +// } pingMoney=pingMoney.subtract(orders.getArtificerMoney()); pingMoney=pingMoney.subtract(oneUserMoney); pingMoney=pingMoney.subtract(oneArtificerMoney); @@ -279,8 +274,6 @@ public class AliPayController { } } - - Orders orders1 = ordersDao.selectById(orders.getParentId()); if(orders1.getAddNum()==null){ orders1.setAddNum(1); @@ -304,24 +297,25 @@ public class AliPayController { orders1.setSumArtificerMoney(orders1.getSumArtificerMoney().add(orders.getArtificerMoney())); pingMoney=orders1.getSumMoney(); +// 分佣在订单完成后进行计算 2024-06-20 by caolei oneUserMoney=BigDecimal.ZERO; - if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ - oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); - } +// if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ +// oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); +// } oneArtificerMoney=BigDecimal.ZERO; - if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ - oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); - } +// if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ +// oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); +// } shopMoney=BigDecimal.ZERO; - if(artificerUser.getConsortiaId()!=null){ - Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); - if(consortia!=null && consortia.getUserId()!=null){ - UserEntity consortiaUser = userService.getById(consortia.getUserId()); - if(consortiaUser!=null){ - shopMoney=pingMoney.multiply(consortia.getRate()); - } - } - } +// if(artificerUser.getConsortiaId()!=null){ +// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); +// if(consortia!=null && consortia.getUserId()!=null){ +// UserEntity consortiaUser = userService.getById(consortia.getUserId()); +// if(consortiaUser!=null){ +// shopMoney=pingMoney.multiply(consortia.getRate()); +// } +// } +// } pingMoney=pingMoney.subtract(orders1.getSumArtificerMoney()); pingMoney=pingMoney.subtract(oneUserMoney); pingMoney=pingMoney.subtract(oneArtificerMoney); @@ -353,6 +347,8 @@ public class AliPayController { messageInfo.setUserId("0"); messageInfo.setIsSee("0"); messageService.saveBody(messageInfo); + //电话通知 add 2024-06-20 by caolei + messageService.sendNoticeByCall(artificer.getUserId()); } ordersService.sendMsg(orders); @@ -758,9 +754,6 @@ public class AliPayController { } } } - - - } //通知页面地址 @@ -775,7 +768,11 @@ public class AliPayController { payDetails.setCreateTime(sdf.format(new Date())); payDetails.setOrderId(orders.getOrdersNo()); payDetails.setUserId(orders.getUserId()); - payDetails.setMoney(orders.getPayMoney().doubleValue()); + if(orders.getUserPackageDetailId() !=null ){ + payDetails.setMoney(orders.getTaxiMoney().doubleValue()); + }else{ + payDetails.setMoney(orders.getPayMoney().doubleValue()); + } payDetails.setClassify(6); payDetails.setType(1); payDetailsDao.insert(payDetails); @@ -784,9 +781,17 @@ public class AliPayController { payDetailsDao.updateById(payDetails1); } if (type == 1) { - return payApp(name, orders.getOrdersNo(), orders.getPayMoney().doubleValue()); + if(orders.getUserPackageDetailId() !=null ){ + return payApp(name, orders.getOrdersNo(), orders.getTaxiMoney().doubleValue()); + }else{ + return payApp(name, orders.getOrdersNo(), orders.getPayMoney().doubleValue()); + } } else { - return payH5(name, orders.getOrdersNo(), orders.getPayMoney().doubleValue(), returnUrl); + if(orders.getUserPackageDetailId() !=null ){ + return payApp(name, orders.getOrdersNo(), orders.getTaxiMoney().doubleValue()); + }else{ + return payH5(name, orders.getOrdersNo(), orders.getPayMoney().doubleValue(), returnUrl); + } } } diff --git a/src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java b/src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java index 2c2e2df..55c03ca 100644 --- a/src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java +++ b/src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java @@ -224,8 +224,6 @@ public class WxServiceImpl implements WxService { } } } - - } PayDetails payDetails1 = payDetailsDao.selectByOrderId(orders.getOrdersNo()); if(payDetails1==null){ @@ -234,7 +232,11 @@ public class WxServiceImpl implements WxService { payDetails.setCreateTime(sdf.format(new Date())); payDetails.setOrderId(orders.getOrdersNo()); payDetails.setUserId(orders.getUserId()); - payDetails.setMoney(orders.getPayMoney().doubleValue()); + if(orders.getUserPackageDetailId() !=null ){ + payDetails.setMoney(orders.getTaxiMoney().doubleValue()); + }else{ + payDetails.setMoney(orders.getPayMoney().doubleValue()); + } payDetails.setClassify(classify); payDetails.setType(1); payDetailsDao.insert(payDetails); @@ -242,7 +244,11 @@ public class WxServiceImpl implements WxService { payDetails1.setClassify(classify); payDetailsDao.updateById(payDetails1); } - return pay(orders.getPayMoney().doubleValue(), classify, orders.getUserId(), orders.getOrdersNo(),request); + if(orders.getUserPackageDetailId() !=null ){ + return pay(orders.getTaxiMoney().doubleValue(), classify, orders.getUserId(), orders.getOrdersNo(),request); + }else{ + return pay(orders.getPayMoney().doubleValue(), classify, orders.getUserId(), orders.getOrdersNo(),request); + } } @Override @@ -654,51 +660,46 @@ public class WxServiceImpl implements WxService { payDetailsDao.updateState(payDetails.getId(), 1, sdf.format(new Date()), ""); if(payDetails.getType()==1){ Orders orders = ordersService.selectOrdersByOrderNo(payDetails.getOrderId()); - orders.setStatus(2); + orders.setStatus(9);//用户已支付技师待接单 orders.setPayWay(payDetails.getClassify()); orders.setPayTime(sdf.format(new Date())); - BigDecimal pingMoney=orders.getPayMoney(); - UserEntity user = userService.selectUserById(orders.getUserId()); - - UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); - +// 分佣在订单完成后进行计算 2024-06-20 by caolei +// UserEntity user = userService.selectUserById(orders.getUserId()); +// UserEntity oneUser = userService.queryByInvitationCode(user.getInviterCode()); BigDecimal oneUserMoney=BigDecimal.ZERO; - if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ - orders.setOneUserId(oneUser.getUserId()); - orders.setOneUserName(oneUser.getUserName()); - oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); - - } +// if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ +// orders.setOneUserId(oneUser.getUserId()); +// orders.setOneUserName(oneUser.getUserName()); +// oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); +// +// } Artificer artificer = artificerService.getById(orders.getArtificerId()); - - UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); - - UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); - +// UserEntity artificerUser = userService.selectUserById(artificer.getUserId()); +// UserEntity oneArtificerUser = userService.queryByInvitationCode(artificerUser.getInviterCode()); BigDecimal oneArtificerMoney=BigDecimal.ZERO; - if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ - orders.setOneArtificerUserId(oneArtificerUser.getUserId()); - orders.setOneArtificerUserName(oneArtificerUser.getUserName()); - oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); - - } +// if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ +// orders.setOneArtificerUserId(oneArtificerUser.getUserId()); +// orders.setOneArtificerUserName(oneArtificerUser.getUserName()); +// oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); +// +// } BigDecimal shopMoney=BigDecimal.ZERO; - if(artificerUser.getConsortiaId()!=null){ - Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); - if(consortia!=null && consortia.getUserId()!=null){ - UserEntity consortiaUser = userService.getById(consortia.getUserId()); - if(consortiaUser!=null){ - shopMoney = pingMoney.multiply(consortia.getRate()); - orders.setConsortiaId(consortia.getConsortiaId()); - orders.setShopUserId(consortiaUser.getUserId()); - orders.setShopUserName(consortiaUser.getUserName()); - - } - } - } +// if(artificerUser.getConsortiaId()!=null){ +// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); +// if(consortia!=null && consortia.getUserId()!=null){ +// UserEntity consortiaUser = userService.getById(consortia.getUserId()); +// if(consortiaUser!=null){ +// shopMoney = pingMoney.multiply(consortia.getRate()); +// orders.setConsortiaId(consortia.getConsortiaId()); +// orders.setShopUserId(consortiaUser.getUserId()); +// orders.setShopUserName(consortiaUser.getUserName()); +// +// } +// } +// } pingMoney=pingMoney.subtract(orders.getArtificerMoney()); pingMoney=pingMoney.subtract(oneUserMoney); pingMoney=pingMoney.subtract(oneArtificerMoney); @@ -748,8 +749,6 @@ public class WxServiceImpl implements WxService { } } - - Orders orders1 = ordersDao.selectById(orders.getParentId()); if(orders1.getAddNum()==null){ orders1.setAddNum(1); @@ -773,24 +772,25 @@ public class WxServiceImpl implements WxService { orders1.setSumArtificerMoney(orders1.getSumArtificerMoney().add(orders.getArtificerMoney())); pingMoney=orders1.getSumMoney(); +// 分佣在订单完成后进行计算 2024-06-20 by caolei oneUserMoney=BigDecimal.ZERO; - if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ - oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); - } +// if(oneUser!=null && oneUser.getIsAgency()!=null && oneUser.getIsAgency()==1){ +// oneUserMoney=pingMoney.multiply(oneUser.getUserRate()); +// } oneArtificerMoney=BigDecimal.ZERO; - if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ - oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); - } +// if(oneArtificerUser!=null && oneArtificerUser.getIsAgency()!=null && oneArtificerUser.getIsAgency()==1){ +// oneArtificerMoney=pingMoney.multiply(oneArtificerUser.getShopRate()); +// } shopMoney=BigDecimal.ZERO; - if(artificerUser.getConsortiaId()!=null){ - Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); - if(consortia!=null && consortia.getUserId()!=null){ - UserEntity consortiaUser = userService.getById(consortia.getUserId()); - if(consortiaUser!=null){ - shopMoney=pingMoney.multiply(consortia.getRate()); - } - } - } +// if(artificerUser.getConsortiaId()!=null){ +// Consortia consortia = consortiaService.getById(artificerUser.getConsortiaId()); +// if(consortia!=null && consortia.getUserId()!=null){ +// UserEntity consortiaUser = userService.getById(consortia.getUserId()); +// if(consortiaUser!=null){ +// shopMoney=pingMoney.multiply(consortia.getRate()); +// } +// } +// } pingMoney=pingMoney.subtract(orders1.getSumArtificerMoney()); pingMoney=pingMoney.subtract(oneUserMoney); pingMoney=pingMoney.subtract(oneArtificerMoney); @@ -814,7 +814,6 @@ public class WxServiceImpl implements WxService { orders1.setEndTime(endTime); } - ordersDao.updateById(orders1); }else{ @@ -824,6 +823,8 @@ public class WxServiceImpl implements WxService { messageInfo.setUserId("0"); messageInfo.setIsSee("0"); messageService.saveBody(messageInfo); + //电话通知 add 2024-06-20 by caolei + messageService.sendNoticeByCall(artificer.getUserId()); } ordersService.sendMsg(orders); diff --git a/src/main/resources/mapper/artificer/ArtificerDao.xml b/src/main/resources/mapper/artificer/ArtificerDao.xml index 7930fa7..5ddcf40 100644 --- a/src/main/resources/mapper/artificer/ArtificerDao.xml +++ b/src/main/resources/mapper/artificer/ArtificerDao.xml @@ -10,7 +10,7 @@ ifnull((select avg(c.score) from taking_commnt c where c.artificer_id=a.artificer_id ),0.00) as ordersScore, (select count(*) from taking_commnt c where c.artificer_id=a.artificer_id ) as commentCount, (st_distance (point (a.longitude, a.latitude),point(#{longitude},#{latitude}) ) *111195) as distance, - v.vip_name as technicianTypeName, (CASE WHEN DATEDIFF(CURDATE(), a.create_time) <=7 THEN 1 ELSE 2 END) AS isNewer + v.vip_name as technicianTypeName,v.rate as technicianTypeRate ,(CASE WHEN DATEDIFF(CURDATE(), a.create_time) <=7 THEN 1 ELSE 2 END) AS isNewer from artificer a left join tb_user u on a.user_id=u.user_id left join sys_dict s on s.id=a.classify_id @@ -83,7 +83,7 @@ (select count(*) from collect_artificer o where o.artificer_id = a.artificer_id and o.user_id = #{userId} and classify = 1) as myCollectCount, ifnull((select avg(c.score) from taking_commnt c where c.artificer_id = a.artificer_id), 0.00) as ordersScore, (st_distance(point(a.longitude, a.latitude), point(#{longitude}, #{latitude})) * 111195) as distance, - v.vip_name as technicianTypeName,(CASE WHEN DATEDIFF(CURDATE(), a.create_time) <=7 THEN 1 ELSE 2 END) AS isNewer + v.vip_name as technicianTypeName,v.rate as technicianTypeRate ,(CASE WHEN DATEDIFF(CURDATE(), a.create_time) <=7 THEN 1 ELSE 2 END) AS isNewer from artificer a left join tb_user u on a.user_id = u.user_id left join sys_dict s on s.id=a.classify_id diff --git a/src/main/resources/mapper/bl/massage/MassagePackageDao.xml b/src/main/resources/mapper/bl/massage/MassagePackageDao.xml index 08fe649..d642800 100644 --- a/src/main/resources/mapper/bl/massage/MassagePackageDao.xml +++ b/src/main/resources/mapper/bl/massage/MassagePackageDao.xml @@ -54,7 +54,7 @@ - select tcu.*, tu.user_name as nickName, tu.avatar as avatar, tu.phone as phone + select tcu.*, tu.user_name as nickName, tu.avatar as avatar, tu.phone as phone,d.value as classifyName from coupon_user tcu left join tb_user tu on tcu.user_id = tu.user_id + left join sys_dict d on tcu.classify_id = d.id where 1 = 1 and tcu.user_id = #{userId}