修改订单

This commit is contained in:
曹磊 2024-06-21 22:58:04 +08:00
parent 000d901f00
commit a2c415c3d8
3 changed files with 633 additions and 22 deletions

View File

@ -76,6 +76,7 @@ import org.joda.time.format.DateTimeFormatter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import weixin.popular.bean.message.templatemessage.TemplateMessageItem;
import java.math.BigDecimal;
@ -876,9 +877,623 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
return Result.success().put("data", orders);
}
/**
* 入参与insertOrders一致就是没有代金券
* 判断差额如差额为0则修改原单据如差额不为0则新增单据
* @param orders
* @return
*/
@Override
@Transactional
public Result updateOrders(Orders orders) {
Orders oldOrders = baseMapper.selectById(orders.getOrdersId());
if (oldOrders.getStatus() == 3 || oldOrders.getStatus() == 5) {
return Result.error("已完成的订单不可修改!");
}
if (oldOrders.getStatus() == 4) {
return Result.error("已取消的订单不可修改!");
}
if (oldOrders.getStatus() == 10) {
//只能修改技师和时间 技师等级大于等于原单据等级
Long massageTypeId;
if(orders.getOrdersMassageList() != null){
List<OrdersMassage> ordersMassageList = orders.getOrdersMassageList();
massageTypeId = ordersMassageList.get(0).getMassageId();
}else {
massageTypeId = orders.getMassageTypeId();
}
if(massageTypeId == null){
return Result.error("当前订单没有选择服务项目!");
}
if (orders.getMassageTypeId()!=null && massageTypeId != oldOrders.getMassageTypeId()) {
return Result.error("当前订单无法修改服务项目!");
}
MassageType massageType = massageTypeService.getById(massageTypeId);
orders.setMassageTypeId(massageTypeId);
orders.setEntryName(massageType.getTitle());
orders.setPrice(BigDecimal.ZERO);
String value1 = commonInfoService.findOne(395).getValue();
int i = 0;
//1.锁定本单服务时间问题
//项目时间
Integer duration = massageType.getDuration();
//精油
String jyValue = commonInfoService.findOne(392).getValue();
int minute=0;
int jyMinuteInt = Integer.parseInt(jyValue);
//公交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++;
}
}
}
String serveTime = orders.getServeTime();
String date = serveTime.substring(0, 10);
String time = serveTime.substring(11, 16);
ArtificerTime artificerTime = artificerTimeService.getOne(
new QueryWrapper<ArtificerTime>()
.eq("artificer_id", orders.getArtificerId())
.eq("artificer_date", date).eq("artificer_time", time));
if (artificerTime != null) {
return Result.error("预约时间正忙,请更换其他时间!");
}
if (i > 1) {
Date parse = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm");;
Calendar calendar = Calendar.getInstance();
calendar.setTime(parse);
for (int j = 1; j < i; j++) {
calendar.add(Calendar.MINUTE, minute);
String format = DateUtils.format(calendar.getTime());
date = format.substring(0, 10);
time = format.substring(11, 16);
artificerTime = artificerTimeService.getOne(
new QueryWrapper<ArtificerTime>()
.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("暂不支持当前地址,请更换其他地址!");
}
BigDecimal taxiMoney = new BigDecimal(travelPriceVo.getTravelPrice());
orders.setTaxiMoney(taxiMoney);
orders.setKm(travelPriceVo.getKilometerNum());
orders.setPayMoney(taxiMoney);
orders.setStatus(1);
orders.setCreateTime(DateUtils.format(new Date()));
Artificer artificer = artificerService.getById(orders.getArtificerId());
orders.setArtificerRate(artificer.getRate());
orders.setSumMoney(orders.getPayMoney());
baseMapper.insert(orders);
if(orders.getOrdersMassageList() != null){
List<OrdersMassage> ordersMassageList = orders.getOrdersMassageList();
for (OrdersMassage ordersMassage : ordersMassageList) {
ordersMassage.setOrdersId(orders.getOrdersId());
ordersMassageService.save(ordersMassage);
}
}else {
OrdersMassage ordersMassage = new OrdersMassage();
ordersMassage.setOrdersId(orders.getOrdersId());
ordersMassage.setMassageId(massageTypeId);
ordersMassage.setNum(1);
ordersMassageService.save(ordersMassage);
}
Orders ordersOld = new Orders();
ordersOld.setOrdersId(orders.getOrdersId());
ordersOld.setStatus(11);
baseMapper.updateById(ordersOld);//原单暂变成挂单状态
return Result.success().put("data", orders);
}
if (oldOrders.getStatus() == 6) {
//升级项目操作只能修改项目金额大于等于当前项目金额
if (StringUtils.isNotBlank(orders.getServeTime()) && !orders.getServeTime().equals(oldOrders.getServeTime())) {
return Result.error("当前订单无法修改时间!");
}
if (orders.getArtificerId() != null && orders.getArtificerId() != oldOrders.getArtificerId()) {
return Result.error("当前订单无法修改技师!");
}
//判断新price是否大于旧price
//如果是套餐使用原价计算差额
}
if (oldOrders.getStatus() == 1) {
//未支付随便改更新原单据
Long massageTypeId;
if(orders.getOrdersMassageList() != null){
List<OrdersMassage> ordersMassageList = orders.getOrdersMassageList();
massageTypeId = ordersMassageList.get(0).getMassageId();
}else {
return Result.error("当前订单没有选择服务项目!");
}
if(orders.getUserPackageDetailId() !=null ){
if (massageTypeId != oldOrders.getUserPackageDetailId()) {
return Result.error("当前套餐类订单无法修改项目!");
}
UserPackageDetail userPackageDetail = userPackageDetailService.getById(massageTypeId);
//修改套餐类订单
String value1 = commonInfoService.findOne(395).getValue();
int i = 0;
//1.锁定本单服务时间问题
//项目时间
Integer duration = userPackageDetail.getDuration();
//精油
String jyValue = commonInfoService.findOne(392).getValue();
int minute=0;
int jyMinuteInt = Integer.parseInt(jyValue);
//公交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<ArtificerTime>()
.eq("artificer_id", orders.getArtificerId())
.eq("artificer_date", date).eq("artificer_time", time));
if (artificerTime != null) {
return Result.error("预约时间正忙,请更换其他时间!");
}
if (i > 1) {
Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm");
Calendar calendar = Calendar.getInstance();
calendar.setTime(parse);
for (int j = 1; j < i; j++) {
calendar.add(Calendar.MINUTE, minute);
String format = DateUtils.format(calendar.getTime());
date = format.substring(0, 10);
time = format.substring(11, 16);
artificerTime = artificerTimeService.getOne(
new QueryWrapper<ArtificerTime>()
.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());
} else {
if ("".equals(value1)) {
ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper<ArtificerTime>().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;
Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm");
Calendar calendar = Calendar.getInstance();
calendar.setTime(parse);
for (int j = 0; j < i; j++) {
calendar.add(Calendar.MINUTE, minute);
String format = DateUtils.format(calendar.getTime());
date = format.substring(0, 10);
time = format.substring(11, 16);
artificerTime = artificerTimeService.getOne(
new QueryWrapper<ArtificerTime>()
.eq("artificer_id", orders.getArtificerId())
.eq("artificer_date", date).eq("artificer_time", time));
if (artificerTime != null) {
return Result.error("预约时间正忙,请更换其他时间!");
}
}
}
}
//加上车费
orders.setPayMoney(orders.getMassageMoney().add(taxiMoney));
BigDecimal artificerPrice = BigDecimal.ZERO;
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 = orders.getMassageMoney();
//计算技师项目提成金额
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.updateById(orders);
return Result.success().put("data", orders);
}else {
//修改一般订单
MassageType massageType = massageTypeService.getById(massageTypeId);
orders.setMassageTypeId(massageType.getMassageTypeId());
orders.setEntryName(massageType.getTitle());
//获取原优惠卷
List<String> oldCouponList = Lists.newArrayList();
String oldCouponId = oldOrders.getCouponId();
if (oldCouponId.length() > 0) {
String[] oldCouponArr = oldCouponId.trim().split(",");
for (int i = 0; i < oldCouponArr.length; i++) {
if (oldCouponArr[i] != null && !oldCouponArr[i].equals("")) {
oldCouponList.add(oldCouponArr[i]);
}
}
}
//判断新优惠卷是否可用
BigDecimal couponMinMoney = BigDecimal.ZERO;//所有代金券的使用额度总和
//获取并判断代金券信息
List<CouponUser> 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 < couponArr.length; i++) {
if (couponArr[i] != null && !couponArr[i].equals("")) {
String couponIdStr = couponArr[i];
Long couponId = Long.valueOf(couponIdStr);
CouponUser couponUser = couponUserService.getById(couponId);
boolean isGoon = false;
if (!couponUser.getStatus().equals(0)) {
isGoon = false;//被占用
}
if (!isGoon) {
if (oldCouponList.size() > 0) {
if (oldCouponList.contains(couponIdStr)) {
isGoon = true;//被占用的新优惠卷在原优惠卷中存在则继续
}
}
}
if (!isGoon) {
return Result.error("优惠券已被使用!");
}
if (couponUser.getClassifyId() != 0) {
if (orders.getClassifyId() != couponUser.getClassifyId()) {
return Result.error("优惠券不满足使用条件!");
}
}
couponMinMoney = couponMinMoney.add(couponUser.getMinMoney());
CouponUserList.add(couponUser);
BigDecimal money = couponUser.getMoney();
couponMoney = couponMoney.add(money);
couponNameSb.append(couponUser.getCouponName());
couponNameSb.append(",");
}
}
orders.setCouponName(couponNameSb.toString());
orders.setCouponMoney(couponMoney);
} else {
orders.setCouponName("");
orders.setCouponMoney(BigDecimal.ZERO);
}
//获取用户VIP的优惠信息
BigDecimal vipRate = new BigDecimal(100);
UserVip userVip = userVipService.selectUserVipByUserId(orders.getUserId());
if (userVip != null) {
if (userVip.getIsVip() == 1) {
//获取用户到期时间
Date date = null;
try {
date = DateUtils.stringToDate(userVip.getEndTime(), DateUtils.DATE_TIME_PATTERN);
if (date.getTime() >= System.currentTimeMillis()) {
VipDetails vipDetails = vipDetailsDao.selectOne(new QueryWrapper<VipDetails>().eq("vip_name_type", userVip.getVipNameType()));
if (vipDetails != null) {
vipRate = vipDetails.getRate();
}
}
} catch (Exception e) {
e.getMessage();
}
}
}
orders.setVipRate(vipRate);
Artificer artificer = artificerService.getById(orders.getArtificerId());
orders.setTechnicianType(artificer.getTechnicianType());
BigDecimal artificerVipRate = BigDecimal.ZERO;
VipDetails artificerVipDetails = vipDetailsDao.selectOne(new QueryWrapper<VipDetails>().eq("vip_name_type", artificer.getTechnicianType()));
if (artificerVipDetails != null) {
artificerVipRate = artificerVipDetails.getRate();
}
orders.setTechnicianRate(artificerVipRate);
BigDecimal payMoney = BigDecimal.ZERO;
List<OrdersMassage> ordersMassageList = orders.getOrdersMassageList();
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.getTechnicianRate()).divide(new BigDecimal(100)).add(price);//技师等级加成金额
massagePrice = massagePrice.multiply(orders.getVipRate()).divide(new BigDecimal(100));//会员优惠后金额
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 (payMoney.compareTo(couponMinMoney) < 0) {
return Result.error("当前应付总金额不满足优惠券使用的最小额度,请重新选择优惠卷!");
}
//减去代金券的金额
payMoney = payMoney.subtract(orders.getCouponMoney());
orders.setMassageMoney(payMoney);
String value1 = commonInfoService.findOne(395).getValue();
int i = 0;
//1.锁定本单服务时间问题
//项目时间
Integer duration = massageType.getDuration();
//精油
String jyValue = commonInfoService.findOne(392).getValue();
int minute = 0;
int jyMinuteInt = Integer.parseInt(jyValue);
//公交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<ArtificerTime>()
.eq("artificer_id", orders.getArtificerId())
.eq("artificer_date", date).eq("artificer_time", time));
if (artificerTime != null) {
return Result.error("预约时间正忙,请更换其他时间!");
}
if (i > 1) {
Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm");
Calendar calendar = Calendar.getInstance();
calendar.setTime(parse);
for (int j = 1; j < i; j++) {
calendar.add(Calendar.MINUTE, minute);
String format = DateUtils.format(calendar.getTime());
date = format.substring(0, 10);
time = format.substring(11, 16);
artificerTime = artificerTimeService.getOne(
new QueryWrapper<ArtificerTime>()
.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());
} else {
if ("".equals(value1)) {
ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper<ArtificerTime>().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;
Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm");
Calendar calendar = Calendar.getInstance();
calendar.setTime(parse);
for (int j = 0; j < i; j++) {
calendar.add(Calendar.MINUTE, minute);
String format = DateUtils.format(calendar.getTime());
date = format.substring(0, 10);
time = format.substring(11, 16);
artificerTime = artificerTimeService.getOne(
new QueryWrapper<ArtificerTime>()
.eq("artificer_id", orders.getArtificerId())
.eq("artificer_date", date).eq("artificer_time", time));
if (artificerTime != null) {
return Result.error("预约时间正忙,请更换其他时间!");
}
}
}
}
//加上车费
orders.setPayMoney(payMoney.add(taxiMoney));
//查询是否计算出租车扣费
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 = orders.getMassageMoney();
//计算技师项目提成金额
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.updateById(orders);
//释放原优惠卷
if (oldCouponList.size() > 0) {
for (String couponIdStr : oldCouponList) {
CouponUser couponUser = new CouponUser();
couponUser.setId(Long.valueOf(couponIdStr));
couponUser.setStatus(0);
couponUserService.updateById(couponUser);
}
}
//占用新代金券
if (CouponUserList.size() > 0) {
for (CouponUser couponUser : CouponUserList) {
couponUser.setStatus(1);
couponUserService.updateById(couponUser);
}
}
return Result.success().put("data", orders);
}
}else{
//判断是否是可修改
boolean canUpdate = commonInfoService.isCheckEditOrder(DateUtils.stringToDate(orders.getServeTime(),"yyyy-MM-dd HH:mm") ,new Date());
if(!canUpdate){
return Result.error("当前订单无法修改!");
}
//判断是否是修改后的订单再继续修改
if(orders.getOrdersId() != null){
return Result.error("当前订单是修改后生成的新订单无法修改!");
}
}
if (StringUtils.isNotBlank(orders.getServeTime()) && !orders.getServeTime().equals(oldOrders.getServeTime())) {
//修改预约时间
//判断订单是否开始
@ -1641,7 +2256,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
/***
* 待补单处理及待补单全单退款
* @param userId
* @param isAuto 是否自动退款 1是 系统自动变成待补单0否 用户点击操作变成待补单
* @param isAuto 是否自动退款 1是 技师操作变成待补单0否 用户点击操作变成待补单
* @param type 是否全额退款1车费 2项目费 3全部
* @return
*/
@ -1804,6 +2419,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
userMoneyDetails.setBlFlag(1);
userMoneyDetailsService.save(userMoneyDetails);
}
BigDecimal payMoney = orders.getPayMoney().subtract(orders.getTaxiMoney());
orders.setPayMoney(payMoney);
}
if(orders.getOldOrdersId() !=null){
//此笔单子退车费并改为取消再将原单改成待补单
@ -2196,6 +2813,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
userMoneyDetails.setBlFlag(1);
userMoneyDetailsService.save(userMoneyDetails);
}
BigDecimal payMoney = orders.getPayMoney().subtract(orders.getTaxiMoney());
orders.setPayMoney(payMoney);
}
if(orders.getOldOrdersId() !=null){
//此笔单子退车费并改为取消再将原单改成待补单

View File

@ -22,10 +22,10 @@ public enum CommonEnum {
/**服务开始n分钟后不可以取消订单*/
V3_ORDER_FORM_CANCEL_START_02(440, "v3_order_form", "服务开始n分钟后不可以取消订单", "15"),
/**距离服务开始前n个小时可修改*/
V3_ORDER_FORM_EDIT_NOT_START_01(441, "v3_order_form", "距离服务开始前n个小时可修改", "2"),
/**距离服务开始n个小时内不可修改*/
V3_ORDER_FORM_EDIT_NOT_START_02(442, "v3_order_form", "距离服务开始n个小时内不可修改", "2"),
/**距离服务开始前n分钟可修改*/
V3_ORDER_FORM_EDIT_NOT_START_01(441, "v3_order_form", "距离服务开始前n分钟可修改", "120"),
/**距离服务开始n分钟内不可修改*/
V3_ORDER_FORM_EDIT_NOT_START_02(442, "v3_order_form", "距离服务开始n分钟内不可修改", "120"),
/**夏令时开始时间~结束时间*/
V3_TRAVEL_CONF_DAYLIGHT_SAVING_TIME(443, "v3_travel_conf", "夏令时开始时间~结束时间", "0521,0823"),

View File

@ -195,29 +195,21 @@ public class CommonInfoServiceImpl extends ServiceImpl<CommonInfoDao, CommonInfo
@Override
public boolean isCheckEditOrder(Date businessTime, Date nowTime) {
long bnDiffDay = DateUtil.between(businessTime, nowTime, DateUnit.DAY, false);
long bnDiffDay = DateUtil.between(nowTime, businessTime, DateUnit.MINUTE, false);
Map<Integer, CommonInfo> configMap = getMapByCondition(CommonEnum.GroupConditionEnum.V3_ORDER_FORM.getValue());
//距离服务开始前n个小时可修改 - 2
//距离服务开始前n分钟可修改 120
CommonInfo v3OrderFormEditNotStart01 = configMap.get(CommonEnum.V3_ORDER_FORM_EDIT_NOT_START_01.getKey());
//距离服务开始n个小时内不可修改 - 2
CommonInfo v3OrderFormEditNotStart02 = configMap.get(CommonEnum.V3_ORDER_FORM_EDIT_NOT_START_02.getKey());
Double v3OrderFormEditNotStart01I = CommonConfigUtil.getDoubleValue(v3OrderFormEditNotStart01.getValue());
if(v3OrderFormEditNotStart01I == null) v3OrderFormEditNotStart01I = -1D;
Double v3OrderFormEditNotStart02I = CommonConfigUtil.getDoubleValue(v3OrderFormEditNotStart02.getValue());
if(v3OrderFormEditNotStart02I == null) v3OrderFormEditNotStart02I = -1D;
Long v3OrderFormEditNotStart01I = CommonConfigUtil.getLongValue(v3OrderFormEditNotStart01.getValue());
if(v3OrderFormEditNotStart01I == null) v3OrderFormEditNotStart01I = 120L;
if(bnDiffDay >= 0) {
//正数服务开始前
if(v3OrderFormEditNotStart01I == -1) return true;
return bnDiffDay >= v3OrderFormEditNotStart01I;
} else {
//负数服务开始后
if(v3OrderFormEditNotStart02I == -1) return true;
double burdenV3OrderFormEditNotStart02I = - v3OrderFormEditNotStart02I;
return burdenV3OrderFormEditNotStart02I >= bnDiffDay;
if(bnDiffDay >= v3OrderFormEditNotStart01I) {
return true;
}else{
return false;
}
}
}