package com.dsh.guns.modular.system.controller.specialTrain;
|
|
import com.dsh.course.feignClient.account.IncomeClient;
|
import com.dsh.course.feignClient.account.model.IncomeReq;
|
import com.dsh.course.feignClient.account.model.QueryIncomeListReq;
|
import com.dsh.course.feignClient.activity.TUserClinet;
|
import com.dsh.course.feignClient.driver.DriverClient;
|
import com.dsh.course.feignClient.driver.model.DriverInfoReq;
|
import com.dsh.course.feignClient.driver.model.DriverInfoRes;
|
import com.dsh.course.feignClient.order.OrderLogisticsClient;
|
import com.dsh.course.feignClient.order.TransactionDetailsClient;
|
import com.dsh.course.feignClient.order.model.OrderLogisticsInfoReq;
|
import com.dsh.course.feignClient.order.model.OrderLogisticsInfoRes;
|
import com.dsh.course.feignClient.order.model.QueryLoginsicsListReq;
|
import com.dsh.course.feignClient.order.model.TransactionDetailsReq;
|
import com.dsh.course.feignClient.orderCancel.OrderCancelClient;
|
import com.dsh.course.feignClient.orderCancel.model.OrderCancelRes;
|
import com.dsh.course.feignClient.payment.PaymentClient;
|
import com.dsh.course.feignClient.payment.model.QueryPaymentRecordReq;
|
import com.dsh.guns.config.UserExt;
|
import com.dsh.guns.core.base.controller.BaseController;
|
import com.dsh.guns.core.support.HttpKit;
|
import com.dsh.guns.core.util.SinataUtil;
|
import com.dsh.guns.modular.system.model.*;
|
import com.dsh.guns.modular.system.util.HttpRequestUtil;
|
import com.dsh.guns.modular.system.util.PushURL;
|
import com.dsh.guns.modular.system.util.ResultUtil;
|
import org.apache.commons.beanutils.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.lang.reflect.InvocationTargetException;
|
import java.math.BigDecimal;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 小件物流订单控制器
|
*
|
* @author fengshuonan
|
* @Date 2020-09-24 14:20:41
|
*/
|
@Controller
|
@RequestMapping("/tOrderLogistics")
|
public class TOrderLogisticsController extends BaseController {
|
|
private String PREFIX = "/system/tOrderLogistics/";
|
|
@Autowired
|
private OrderLogisticsClient orderLogisticsClient;
|
|
@Autowired
|
private OrderCancelClient orderCancelClient;
|
|
@Autowired
|
private TUserClinet userClinet;
|
|
|
@Autowired
|
private PaymentClient paymentClient;
|
|
// @Autowired
|
// private ICBCPayUtil icbcPayUtil;
|
|
@Autowired
|
private IncomeClient incomeClient;
|
|
@Autowired
|
private DriverClient driverClient;
|
|
@Autowired
|
private TransactionDetailsClient transactionDetailsClient;
|
|
|
/**
|
* 跳转到小件物流订单首页
|
*/
|
@RequestMapping("")
|
public String index(Model model) {
|
model.addAttribute("language", UserExt.getLanguage());
|
return PREFIX + "tOrderLogistics.html";
|
}
|
|
/**
|
* 跳转到添加小件物流订单
|
*/
|
@RequestMapping("/tOrderLogistics_add")
|
public String tOrderLogisticsAdd() {
|
return PREFIX + "tOrderLogistics_add.html";
|
}
|
|
/**
|
* 跳转到查看小件物流订单
|
*/
|
@RequestMapping("/tOrderLogistics_detail/{tOrderLogisticsId}")
|
public String tOrderLogistics_detail(@PathVariable Long tOrderLogisticsId, Model model) {
|
Map<String, Object> tOrderLogistics = orderLogisticsClient.getLogisticsOrderDetailById(tOrderLogisticsId);
|
model.addAttribute("item", tOrderLogistics);
|
model.addAttribute("language",UserExt.getLanguage());
|
return PREFIX + "tOrderLogistics_detail.html";
|
}
|
|
/**
|
* 获取小件物流订单列表
|
*/
|
@RequestMapping(value = "/list")
|
@ResponseBody
|
public Object list(String insertTime,
|
String orderNum,
|
Integer type,
|
Integer orderSource,
|
String userName,
|
String userPhone,
|
String recipient,
|
String recipientPhone,
|
String driver,
|
Integer state) {
|
String beginTime = null;
|
String endTime = null;
|
if (SinataUtil.isNotEmpty(insertTime)) {
|
String[] timeArray = insertTime.split(" - ");
|
beginTime = timeArray[0];
|
endTime = timeArray[1];
|
}
|
|
HttpServletRequest request = HttpKit.getRequest();
|
int limit = Integer.valueOf(request.getParameter("limit")); //每页多少条数据
|
int offset = Integer.valueOf(request.getParameter("offset"));
|
|
|
return super.packForBT( orderLogisticsClient.getLogisticsOrderList(new QueryLoginsicsListReq(limit,offset, beginTime, endTime, UserExt.getUser().getRoleType(), UserExt.getUser().getObjectId(),
|
orderNum, orderSource, type, userName, userPhone, recipient, recipientPhone, driver, state)));
|
}
|
|
|
/**
|
* 取消小件物流订单
|
*/
|
@RequestMapping(value = "/cancel")
|
@ResponseBody
|
public Object cancel(@RequestParam Long tOrderLogisticsId) {
|
try {
|
// ShiroUser user = ShiroKit.getUser();
|
OrderLogisticsInfoRes tOrderLogistics = orderLogisticsClient.queryOrderLogisticsInfo(tOrderLogisticsId);
|
tOrderLogistics.setState(10);
|
|
//已支付的情况下进行退款操作
|
if (null != tOrderLogistics.getPayType() && null != tOrderLogistics.getPayMoney()) {
|
if (tOrderLogistics.getPayType() == 3) {//余额支付
|
TUser tUser = userClinet.queryById(tOrderLogistics.getUserId());
|
// TUser tUser = userService.selectById(tOrderLogistics.getUserId());
|
tUser.setBalance(tUser.getBalance().add(new BigDecimal(tOrderLogistics.getPayMoney())));
|
userClinet.updateById(tUser);
|
// userService.updateById(tUser);
|
} else {
|
// List<PaymentRecord> paymentRecords = paymentRecordService.query();
|
List<PaymentRecord> paymentRecords = paymentClient.queryPaymentRecordList(new QueryPaymentRecordReq(1, null, null, tOrderLogisticsId, tOrderLogistics.getType(), null, 2));
|
if (paymentRecords.size() == 0) {
|
return ResultUtil.error("订单还未进行支付");
|
}
|
boolean b = false;
|
for (PaymentRecord query : paymentRecords) {
|
// Map<String, Object> merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), tOrderLogistics.getId() + "_" + tOrderLogistics.getType(), tOrderLogistics.getOrderNum());
|
// if (Integer.valueOf(merrefund.get("code").toString()) == 0) {
|
// Map<String, Object> refundqry = icbcPayUtil.refundqry("", query.getCode(), tOrderLogistics.getOrderNum());
|
// if (Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 0) {//成功
|
// b = true;
|
// }
|
// if (Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 1) {//失败
|
// return ResultUtil.error("订单取消失败(退款不成功)");
|
// }
|
// if (Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 2) {//未知
|
// return ResultUtil.error("退款返回未知异常");
|
// }
|
// }
|
}
|
if (b) {
|
//添加交易明细
|
|
}
|
}
|
|
transactionDetailsClient.addTransactionDetails(new TransactionDetailsReq(tOrderLogistics.getUserId(), "小件订单取消退款", tOrderLogistics.getPayMoney().doubleValue(), 1, 1, 1, 4, tOrderLogistics.getId()));
|
|
//添加负的收入明细
|
// List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", tOrderLogistics.getId()).eq("orderType", tOrderLogistics.getType()));
|
List<Income> incomes = incomeClient.queryIncomeListByType(new QueryIncomeListReq(2,tOrderLogistics.getId(),tOrderLogistics.getType()));
|
for (Income income : incomes) {
|
if (income.getUserType() == 2) {//处理司机的收入
|
DriverInfoRes driver = driverClient.getDriver(income.getObjectId());
|
driver.setBalance(new BigDecimal(driver.getBalance()).subtract(new BigDecimal(income.getMoney())).doubleValue());
|
// if(driver.getLaveBusinessMoney().compareTo(income.getMoney()) >= 0){
|
// driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney());
|
// }else{
|
// double b = driver.getLaveBusinessMoney() - income.getMoney();
|
// driver.setLaveBusinessMoney(0d);
|
// driver.setLaveActivityMoney(driver.getLaveActivityMoney() - b);
|
// }
|
DriverInfoReq driverInfoReq = new DriverInfoReq();
|
BeanUtils.copyProperties(driver,driverInfoReq);
|
driverClient.updateDriver(driverInfoReq);
|
}
|
Income income1 = new Income();
|
BeanUtils.copyProperties(income, income1);
|
income1.setMoney(income.getMoney() * -1);
|
income1.setId(null);
|
income1.setInsertTime(new Date());
|
// incomeService.insert(income1);
|
IncomeReq incomeReq = new IncomeReq();
|
BeanUtils.copyProperties(income1,incomeReq);
|
incomeClient.insertIncome(incomeReq);
|
}
|
}
|
OrderLogisticsInfoReq orderLogisticsInfoReq = new OrderLogisticsInfoReq();
|
orderLogisticsInfoReq.setId(tOrderLogistics.getId());
|
orderLogisticsInfoReq.setState(10);
|
orderLogisticsClient.updateOrderLogistics(orderLogisticsInfoReq);
|
// tOrderLogisticsService.updateById(tOrderLogistics);
|
|
//添加取消记录
|
OrderCancel orderCancel = new OrderCancel();
|
orderCancel.setOrderId(tOrderLogistics.getId());
|
orderCancel.setOrderType(tOrderLogistics.getType());
|
orderCancel.setReason("调度端取消订单");
|
// orderCancel.setRemark("调度“" + user.getName() + "-" + user.getId() + "”执行取消操作");
|
orderCancel.setState(2);
|
orderCancel.setInsertTime(new Date());
|
orderCancel.setUserType(3);
|
// orderCancel.setUserId(user.getId());
|
OrderCancelRes orderCancelRes = new OrderCancelRes();
|
BeanUtils.copyProperties(orderCancel,orderCancelRes);
|
orderCancelClient.saveOrderCancel(orderCancelRes);
|
// orderCancelMapper.insert(orderCancel);
|
|
//增加推送
|
Map<String, String> map = new HashMap<>();
|
map.put("id", tOrderLogistics.getId().toString());
|
map.put("orderType", tOrderLogistics.getType().toString());
|
String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map);
|
System.out.println("小件物流取消:【orderId=" + tOrderLogistics.getId().toString() + "】,调用接口:" + result);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 删除小件物流订单
|
*/
|
@RequestMapping(value = "/delete")
|
@ResponseBody
|
public Object delete(@RequestParam Long tOrderLogisticsId) throws InvocationTargetException, IllegalAccessException {
|
OrderLogisticsInfoRes orderLogisticsInfoRes = orderLogisticsClient.queryOrderLogisticsInfo(tOrderLogisticsId);
|
orderLogisticsInfoRes.setIsDelete(2);
|
OrderLogisticsInfoReq orderLogisticsInfoReq = new OrderLogisticsInfoReq();
|
BeanUtils.copyProperties(orderLogisticsInfoRes,orderLogisticsInfoReq);
|
orderLogisticsClient.updateOrderLogistics(orderLogisticsInfoReq);
|
// TOrderLogistics tOrderLogistics = tOrderLogisticsService.selectById(tOrderLogisticsId);
|
// tOrderLogistics.setIsDelete(2);
|
// tOrderLogisticsService.updateById(tOrderLogistics);
|
return SUCCESS_TIP;
|
}
|
|
}
|