Commit 97795c10 by Wangmin

bugfix

parent 5a7ca7e3
package com.pz.system.service.impl; package com.pz.system.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.TypeReference;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
...@@ -15,57 +15,49 @@ import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest; ...@@ -15,57 +15,49 @@ import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.exception.WxPayException;
import com.pz.common.config.KbProperties; import com.pz.common.config.KbProperties;
import com.pz.common.core.domain.PageQuery;
import com.pz.common.core.domain.model.LoginUser; import com.pz.common.core.domain.model.LoginUser;
import com.pz.common.core.page.TableDataInfo; import com.pz.common.core.page.TableDataInfo;
import com.pz.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pz.common.enums.CommonOrderStatus; import com.pz.common.enums.CommonOrderStatus;
import com.pz.common.enums.DBMYOrderStatus;
import com.pz.common.enums.ShopOrderStatus;
import com.pz.common.enums.TotalOrderStatus; import com.pz.common.enums.TotalOrderStatus;
import com.pz.common.exception.ServiceException; import com.pz.common.exception.ServiceException;
import com.pz.common.helper.LoginHelper;
import com.pz.common.utils.HttpUtils; import com.pz.common.utils.HttpUtils;
import com.pz.common.utils.JsonUtils;
import com.pz.merchant.domain.Company; import com.pz.merchant.domain.Company;
import com.pz.merchant.domain.Employees; import com.pz.merchant.domain.Employees;
import com.pz.merchant.domain.EmployeesDivide; import com.pz.merchant.domain.EmployeesDivide;
import com.pz.merchant.domain.vo.EmployeesVo; import com.pz.merchant.domain.vo.EmployeesVo;
import com.pz.common.utils.JsonUtils;
import com.pz.merchant.domain.vo.SonOrderVo; import com.pz.merchant.domain.vo.SonOrderVo;
import com.pz.merchant.mapper.CompanyMapper; import com.pz.merchant.mapper.CompanyMapper;
import com.pz.merchant.mapper.EmployeesDivideMapper; import com.pz.merchant.mapper.EmployeesDivideMapper;
import com.pz.merchant.mapper.EmployeesMapper; import com.pz.merchant.mapper.EmployeesMapper;
import com.pz.merchant.service.ISonOrderService; import com.pz.merchant.service.ISonOrderService;
import com.pz.merchant.service.impl.SonOrderServiceBuilder; import com.pz.merchant.service.impl.SonOrderServiceBuilder;
import com.pz.common.helper.LoginHelper;
import com.pz.system.datastructure.OrderDelayQueue; import com.pz.system.datastructure.OrderDelayQueue;
import com.pz.system.datastructure.TotalOrderDelayOperator; import com.pz.system.datastructure.TotalOrderDelayOperator;
import com.pz.system.domain.*; import com.pz.system.domain.*;
import com.pz.system.domain.bo.CreateOrderBo; import com.pz.system.domain.bo.CreateOrderBo;
import com.pz.system.domain.bo.TotalOrderBo;
import com.pz.system.domain.vo.AccompanyDemandVo; import com.pz.system.domain.vo.AccompanyDemandVo;
import com.pz.system.domain.vo.StoreGoodsVo; import com.pz.system.domain.vo.StoreGoodsVo;
import com.pz.system.domain.vo.TotalOrderVo;
import com.pz.system.domain.vo.UserAddressVo; import com.pz.system.domain.vo.UserAddressVo;
import com.pz.system.mapper.*; import com.pz.system.mapper.*;
import com.pz.system.service.IPayService; import com.pz.system.service.IPayService;
import com.pz.system.service.ITotalOrderService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.http.HttpResponse; import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.pz.system.domain.bo.TotalOrderBo;
import com.pz.system.domain.vo.TotalOrderVo;
import com.pz.system.service.ITotalOrderService;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Map; import java.time.format.DateTimeFormatter;
import java.util.HashMap; import java.time.format.DateTimeFormatterBuilder;
import java.util.Date;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -132,6 +124,14 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -132,6 +124,14 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
private final CompanyMapper companyMapper; private final CompanyMapper companyMapper;
// 时间格式化
private static final DateTimeFormatter FORMATTER = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.append(DateTimeFormatter.ISO_LOCAL_DATE)
.appendLiteral(' ')
.append(DateTimeFormatter.ISO_LOCAL_TIME)
.toFormatter(Locale.getDefault(Locale.Category.FORMAT));
@Override @Override
public TotalOrderVo queryById(Long id) { public TotalOrderVo queryById(Long id) {
return baseMapper.selectVoById(id); return baseMapper.selectVoById(id);
...@@ -508,11 +508,11 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -508,11 +508,11 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
StoreOrder storeOrder = BeanUtil.toBean(bo, StoreOrder.class); StoreOrder storeOrder = BeanUtil.toBean(bo, StoreOrder.class);
StoreGoods storeGoods1 = storeGoodsMapper.selectById(storeOrder.getGoodsId()); StoreGoods storeGoods1 = storeGoodsMapper.selectById(storeOrder.getGoodsId());
if(storeGoods1.getInventory() == 0){ if (storeGoods1.getInventory() == 0) {
throw new ServiceException("商品库存不足!"); throw new ServiceException("商品库存不足!");
} }
//扣除库存 // 扣除库存
storeGoods1.setId(storeOrder.getId()); storeGoods1.setId(storeOrder.getId());
storeGoods1.setInventory(storeGoods1.getInventory() - storeOrder.getNum()); storeGoods1.setInventory(storeGoods1.getInventory() - storeOrder.getNum());
storeGoods1.setSaleNum(storeGoods1.getSaleNum() + 1); storeGoods1.setSaleNum(storeGoods1.getSaleNum() + 1);
...@@ -575,8 +575,8 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -575,8 +575,8 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
return this.refundOrder(totalOrderBo); return this.refundOrder(totalOrderBo);
} }
//商城订单已支付未结单取消退款 // 商城订单已支付未结单取消退款
if(totalOrder.getBusinessId() == 0 && totalOrder.getStatus() == 1 && sonOrderSimpleDataByTotalId.getOrderStatus() == 0){ if (totalOrder.getBusinessId() == 0 && totalOrder.getStatus() == 1 && sonOrderSimpleDataByTotalId.getOrderStatus() == 0) {
totalOrderBo.setIsRefund(0); totalOrderBo.setIsRefund(0);
return this.refundOrder(totalOrderBo); return this.refundOrder(totalOrderBo);
} }
...@@ -584,7 +584,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -584,7 +584,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
if (sonOrderSimpleDataByTotalId.getOrderStatus() == 0 && totalOrder.getEmId() == 0 && totalOrder.getStatus() == 0) {// 预约陪诊 if (sonOrderSimpleDataByTotalId.getOrderStatus() == 0 && totalOrder.getEmId() == 0 && totalOrder.getStatus() == 0) {// 预约陪诊
// yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId,totalOrder)); // yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId,totalOrder));
totalOrder.setStatus(TotalOrderStatus.CANCEL.getCode()); totalOrder.setStatus(TotalOrderStatus.CANCEL.getCode());
if(totalOrder.getBusinessId() == 0){ if (totalOrder.getBusinessId() == 0) {
StoreOrder storeOrder = storeOrderMapper.selectById(sonOrderSimpleDataByTotalId.getSonOrderId()); StoreOrder storeOrder = storeOrderMapper.selectById(sonOrderSimpleDataByTotalId.getSonOrderId());
StoreGoods storeGoods = storeGoodsMapper.selectById(storeOrder.getGoodsId()); StoreGoods storeGoods = storeGoodsMapper.selectById(storeOrder.getGoodsId());
storeGoods.setSaleNum(storeGoods.getSaleNum() - 1); storeGoods.setSaleNum(storeGoods.getSaleNum() - 1);
...@@ -606,15 +606,15 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -606,15 +606,15 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
TotalOrder totalOrder1 = baseMapper.selectById(totalOrder.getId()); TotalOrder totalOrder1 = baseMapper.selectById(totalOrder.getId());
//除了商城订单和诊前挂号不需要给陪诊员和商户分成 // 除了商城订单和诊前挂号不需要给陪诊员和商户分成
if(totalOrder1.getBusinessId() != 0 && totalOrder1.getBusinessId() != 6){ if (totalOrder1.getBusinessId() != 0 && totalOrder1.getBusinessId() != 6) {
Services services = servicesMapper.selectById(totalOrder1.getServiceId()); Services services = servicesMapper.selectById(totalOrder1.getServiceId());
//添加订单分成记录 // 添加订单分成记录
EmployeesDivide employeesDivide = new EmployeesDivide(); EmployeesDivide employeesDivide = new EmployeesDivide();
employeesDivide.setOrderId(totalOrder1.getId().intValue()); employeesDivide.setOrderId(totalOrder1.getId().intValue());
employeesDivide.setOrderPrice(totalOrder1.getPayMoney()+""); employeesDivide.setOrderPrice(totalOrder1.getPayMoney() + "");
if(services.getFenmo() != 0){ if (services.getFenmo() != 0) {
double money = 0; double money = 0;
Employees employees = employeesMapper.selectById(totalOrder1.getEmId()); Employees employees = employeesMapper.selectById(totalOrder1.getEmId());
/** /**
...@@ -628,22 +628,22 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -628,22 +628,22 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
employeesDivide.setEmId(employees.getId()); employeesDivide.setEmId(employees.getId());
money = v; money = v;
if(employees.getCompanyId() != 0){ if (employees.getCompanyId() != 0) {
Company company = companyMapper.selectById(employees.getCompanyId()); Company company = companyMapper.selectById(employees.getCompanyId());
company.setTotalRevenue((Double.parseDouble(company.getTotalRevenue()) + money) + ""); company.setTotalRevenue((Double.parseDouble(company.getTotalRevenue()) + money) + "");
company.setBalance((Double.parseDouble(company.getBalance()) + money) +""); company.setBalance((Double.parseDouble(company.getBalance()) + money) + "");
employeesDivide.setCompanyId(employees.getCompanyId()); employeesDivide.setCompanyId(employees.getCompanyId());
companyMapper.updateById(company); companyMapper.updateById(company);
employeesDivide.setDividePrice(money+""); employeesDivide.setDividePrice(money + "");
}else { } else {
employees.setTotalRevenue((Double.parseDouble(employees.getTotalRevenue()) + money) + ""); employees.setTotalRevenue((Double.parseDouble(employees.getTotalRevenue()) + money) + "");
employees.setBalance((Double.parseDouble(employees.getBalance()) + money) +""); employees.setBalance((Double.parseDouble(employees.getBalance()) + money) + "");
employeesMapper.updateById(employees); employeesMapper.updateById(employees);
employeesDivide.setDividePrice(money+""); employeesDivide.setDividePrice(money + "");
} }
employeesDivideMapper.insert(employeesDivide); employeesDivideMapper.insert(employeesDivide);
...@@ -721,10 +721,10 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -721,10 +721,10 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
// 修改子订单状态 // 修改子订单状态
boolean sonOrderFlag = orderService.switchSonOrderStatus(totalOrder.getId(), CommonOrderStatus.REFUND.getCode()); boolean sonOrderFlag = orderService.switchSonOrderStatus(totalOrder.getId(), CommonOrderStatus.REFUND.getCode());
//除了商城订单和诊前挂号不需要给陪诊员和商户分成 // 除了商城订单和诊前挂号不需要给陪诊员和商户分成
if(totalOrder.getBusinessId() != 0 && totalOrder.getBusinessId() != 6){ if (totalOrder.getBusinessId() != 0 && totalOrder.getBusinessId() != 6) {
Services services = servicesMapper.selectById(totalOrder.getServiceId()); Services services = servicesMapper.selectById(totalOrder.getServiceId());
if(services.getFenmo() != 0){ if (services.getFenmo() != 0) {
double money = 0; double money = 0;
Employees employees = employeesMapper.selectById(totalOrder.getEmId()); Employees employees = employeesMapper.selectById(totalOrder.getEmId());
/** /**
...@@ -737,19 +737,19 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -737,19 +737,19 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
money = v; money = v;
if(employees.getCompanyId() != 0){ if (employees.getCompanyId() != 0) {
Company company = companyMapper.selectById(employees.getCompanyId()); Company company = companyMapper.selectById(employees.getCompanyId());
company.setTotalRevenue((Double.parseDouble(company.getTotalRevenue()) - money) + ""); company.setTotalRevenue((Double.parseDouble(company.getTotalRevenue()) - money) + "");
company.setBalance((Double.parseDouble(company.getBalance()) - money) +""); company.setBalance((Double.parseDouble(company.getBalance()) - money) + "");
companyMapper.updateById(company); companyMapper.updateById(company);
}else { } else {
employees.setTotalRevenue(employees.getTotalRevenue()); employees.setTotalRevenue(employees.getTotalRevenue());
employees.setTotalRevenue((Double.parseDouble(employees.getTotalRevenue()) - money) + ""); employees.setTotalRevenue((Double.parseDouble(employees.getTotalRevenue()) - money) + "");
employees.setBalance((Double.parseDouble(employees.getBalance()) - money) +""); employees.setBalance((Double.parseDouble(employees.getBalance()) - money) + "");
employeesMapper.updateById(employees); employeesMapper.updateById(employees);
} }
...@@ -792,9 +792,9 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -792,9 +792,9 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
if (bo.getIsRefund() == 0) {// 陪诊员订单未完成用户主动退款 if (bo.getIsRefund() == 0) {// 陪诊员订单未完成用户主动退款
// 主订单必须为付款并且子订单为已接单 // 主订单必须为付款并且子订单为已接单
if (totalOrder.getStatus() != 1 && sonOrderSimpleDataByTotalId.getOrderStatus() != 1) { if (totalOrder.getStatus() != 1 && sonOrderSimpleDataByTotalId.getOrderStatus() != 1) {
if(totalOrder.getStatus() == 1 && sonOrderSimpleDataByTotalId.getOrderStatus() == 0){ if (totalOrder.getStatus() == 1 && sonOrderSimpleDataByTotalId.getOrderStatus() == 0) {
money = totalOrder.getPayMoney(); money = totalOrder.getPayMoney();
}else { } else {
throw new ServiceException("退款出错!"); throw new ServiceException("退款出错!");
} }
} }
...@@ -826,7 +826,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -826,7 +826,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
String serveTime = orderService.getFinishTime(totalOrder.getBusinessId()); String serveTime = orderService.getFinishTime(totalOrder.getBusinessId());
if (StringUtils.isNotEmpty(serveTime)) { if (StringUtils.isNotEmpty(serveTime)) {
money = getMoney(serveTime, totalOrder.getPayMoney());// 计算退款金额 money = getMoney(serveTime, totalOrder.getPayMoney());// 计算退款金额
}else { } else {
money = totalOrder.getPayMoney(); money = totalOrder.getPayMoney();
} }
} }
...@@ -853,7 +853,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -853,7 +853,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
// 修改主订单退款理由 // 修改主订单退款理由
totalOrder.setRefundAmount(totalOrder.getPayMoney()); totalOrder.setRefundAmount(totalOrder.getPayMoney());
totalOrder.setRefundReason(bo.getRefundReason()); totalOrder.setRefundReason(bo.getRefundReason());
//添加退款审核记录 // 添加退款审核记录
UserRefund userRefund = new UserRefund(); UserRefund userRefund = new UserRefund();
userRefund.setRefundNo(getOrderSn()); userRefund.setRefundNo(getOrderSn());
userRefund.setOrderId(totalOrder.getId().intValue()); userRefund.setOrderId(totalOrder.getId().intValue());
...@@ -1145,13 +1145,14 @@ public class TotalOrderServiceImpl implements ITotalOrderService { ...@@ -1145,13 +1145,14 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
} }
public long getHour(String date) { public long getHour(String date) {
LocalDateTime startTime = LocalDateTime.parse(date);
LocalDateTime startTime = LocalDateTime.parse(date, FORMATTER);
// 获取当前时间 // 获取当前时间
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
// 计算当前时间和订单开始时间之间的时间差 // 计算当前时间和订单开始时间之间的时间差
Duration duration = Duration.between(now, startTime); Duration duration = Duration.between(startTime, now);
return duration.toHours(); return duration.toHours();
} }
......
...@@ -83,20 +83,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -83,20 +83,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
e.id, e.id,
e.`name` e.`name`
<!--<if test="bo.favorableRate = 0"> <!--<if test="bo.favorableRate = 0">
HAVING HAVING satisfaction_rate >= #{bo.favorableRate};
satisfaction_rate >= #{bo.favorableRate};
</if>--> </if>-->
<if test="bo.favorableRate == 1">
HAVING
satisfaction_rate &gt;= 90 and satisfaction_rate &lt;= 100
</if>
<if test="bo.favorableRate == 2"> <if test="bo.favorableRate == 2">
HAVING HAVING
satisfaction_rate &gt;= 80 and satisfaction_rate &lt;= 90 satisfaction_rate between 90 and 100
</if> </if>
<if test="bo.favorableRate == 3"> <if test="bo.favorableRate == 3">
HAVING HAVING
satisfaction_rate &lt;= 80 satisfaction_rate between 80 and 90
</if>
<if test="bo.favorableRate == 4">
HAVING
<![CDATA[ satisfaction_rate <= 80 ]]>
</if> </if>
ORDER BY satisfaction_rate desc ORDER BY satisfaction_rate desc
</select> </select>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment