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 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 paymentRecords = paymentRecordService.query(); List 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 merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), tOrderLogistics.getId() + "_" + tOrderLogistics.getType(), tOrderLogistics.getOrderNum()); // if (Integer.valueOf(merrefund.get("code").toString()) == 0) { // Map 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 incomes = incomeService.selectList(new EntityWrapper().eq("type", 2).eq("incomeId", tOrderLogistics.getId()).eq("orderType", tOrderLogistics.getType())); List 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 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; } }