package com.stylefeng.guns.modular.api; import java.text.SimpleDateFormat; import java.util.Date; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.pagination.PageHelper; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.common.constant.factory.PageFactory; import com.stylefeng.guns.modular.dto.BackReasonDto; import com.stylefeng.guns.modular.system.dao.ComplaintMapper; import com.stylefeng.guns.modular.system.dao.TUseMoneyMapper; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.*; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.terracotta.offheapstore.paging.Page; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 总览信息 * * @author fengshuonan * @Date 2017年3月4日23:05:54 */ @Controller @RequestMapping("/api/zion") @Api(tags = "子昂新增") public class ZiOnController extends BaseController { @Autowired private INoticeService noticeService; @Autowired private IDriverService driverService; @Autowired private ICompanyService companyService; @Autowired private IOrderTaxiService orderTaxiService; @Autowired private ITransactionDetailsService iTransactionDetailsService; @Autowired private IWithdrawalService withdrawalService; @Autowired private ITRechargeMoneyService rechargeMoneyService; @Autowired private PayMoneyUtil payMoneyUtil; @Autowired private TUseMoneyMapper useMoneyMapper; @ResponseBody @PostMapping ("/money/get") @ApiOperation(value = "拿到后台配置的充值金额") public ResultUtil money(){ try { TRechargeMoney tRechargeMoney = rechargeMoneyService.selectOne(null); return ResultUtil.success(tRechargeMoney); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping ("/recharge") @ApiOperation(value = "微信充值操作") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "充值金额", name = "money", required = true, dataType = "double"), }) public ResultUtil recharge(BigDecimal money,HttpServletRequest request) throws Exception { Integer uid = driverService.getUserIdFormRedis(request); if (null == uid) { return ResultUtil.tokenErr(); } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String s = sdf.format(new Date()) + UUIDUtil.getRandomCode(3); ResultUtil weixinpay = payMoneyUtil.weixinpay("充值", "", s, money.toString(), "/base/wxRecharge", "APP"); if (weixinpay.getCode()==200){ // 新增扣除使用费记录 TransactionDetails transactionDetails = new TransactionDetails(); transactionDetails.setCode(s); transactionDetails.setUserId(uid); transactionDetails.setInsertTime(new Date()); transactionDetails.setRemark("充值"); // 将money转化为double类型 transactionDetails.setMoney(money.doubleValue()); transactionDetails.setState(1); transactionDetails.setType(1); transactionDetails.setUserType(2); transactionDetails.setOrderType(5); iTransactionDetailsService.insert(transactionDetails); } return weixinpay; } @ResponseBody @PostMapping ("/out") @ApiOperation(value = "微信提现操作") public ResultUtil out(BigDecimal money,HttpServletRequest request) throws Exception { Integer uid = driverService.getUserIdFormRedis(request); if (null == uid) { return ResultUtil.tokenErr(); } Driver driver = driverService.selectById(uid); Double balance = driver.getBalance(); driver.setBalance(balance-money.doubleValue()); driverService.updateById(driver); Withdrawal withdrawal = new Withdrawal(); withdrawal.setUserId(uid); withdrawal.setHandleTime(new Date()); withdrawal.setBalance(balance); withdrawal.setMoney(money.doubleValue()); withdrawal.setState(1); withdrawal.setRemark(""); withdrawal.setCode(""); withdrawal.setName(driver.getName()); withdrawal.setUserType(2); withdrawal.setType(2); withdrawal.setInsertTime(new Date()); withdrawal.setFlag(1); withdrawal.setWithdrawalType(1); withdrawal.setSerialNo(""); withdrawalService.insert(withdrawal); TransactionDetails transactionDetails = new TransactionDetails(); transactionDetails.setUserId(uid); transactionDetails.setInsertTime(new Date()); transactionDetails.setRemark(""); transactionDetails.setMoney(money.doubleValue()); transactionDetails.setState(2); transactionDetails.setType(1); transactionDetails.setUserType(2); transactionDetails.setOrderType(2); transactionDetails.setOrderId(0); iTransactionDetailsService.insert(transactionDetails); return ResultUtil.success(); } @ResponseBody @PostMapping("/bind") @ApiOperation(value = "绑定openId") public ResultUtil queryByType(String openId,HttpServletRequest request) { try { Integer uid = driverService.getUserIdFormRedis(request); if (null == uid) { return ResultUtil.tokenErr(); } Driver driver = driverService.selectById(uid); driver.setAppletsOpenId(openId); driverService.updateById(driver); }catch (Exception e){ e.printStackTrace(); } return ResultUtil.success(); } @Resource private ComplaintMapper complaintMapper; @Resource private IUserService userService; @ResponseBody @PostMapping("/order/edit") @ApiOperation(value = "订单反馈", notes = "backReason和backPic") public ResultUtil queryByType(String backReason,String backPic,Integer id){ try { OrderTaxi orderTaxi = orderTaxiService.selectById(id); orderTaxi.setBackPic(backPic); orderTaxi.setBackReason(backReason); orderTaxi.setIsBack(1); orderTaxiService.updateById(orderTaxi); // List phone = userService.selectList( // new EntityWrapper() // .eq("phone", orderTaxi.getPassengersPhone())); // if (phone.isEmpty()){ // return ResultUtil.success(); // } Complaint complaint = new Complaint(); if (orderTaxi.getUserId()!=null) { complaint.setUserId(orderTaxi.getUserId()); } complaint.setReason(backReason); complaint.setDriverId(orderTaxi.getDriverId()); complaint.setIsHandle(0); complaint.setInsertTime(new Date()); complaint.setType(2); complaint.setImg(backPic); complaintMapper.insert(complaint); return ResultUtil.success(); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/order/backreson") @ApiOperation(value = "订单反馈内容", notes = "backReason和backPic") public ResultUtil queryByType(Integer id){ OrderTaxi orderTaxi = orderTaxiService.selectById(id); BackReasonDto backReasonDto = new BackReasonDto(); backReasonDto.setBackReason(orderTaxi.getBackReason()); backReasonDto.setPic(orderTaxi.getBackPic()); return ResultUtil.success(backReasonDto); } @ResponseBody @PostMapping("/order/hisory") @ApiOperation(value = "历史记录", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil queryByType( Integer pageNum,Integer size,HttpServletRequest request,Integer state){ try { // int pageNum = 1; // 页码,从1开始 // int pageSize = 10; // 每页记录数 // 计算起始索引 int startIndex = (pageNum - 1) * size; // 获取总记录数 Integer driverId = driverService.getUserIdFormRedis(request); if(null == driverId){ return ResultUtil.tokenErr(); } Wrapper eq = new EntityWrapper().eq("userType", 2).eq("userId", driverId); if (state!=null&&state==1){ eq.eq("state",1); } eq.ne("orderType",6); if (state!=null&&state==2){ eq.ne("state",2); } eq.orderBy("insertTime",false); List transactionDetails = iTransactionDetailsService.selectList(eq); List orderTaxis = orderTaxiService.selectList(null); if ((state!=null&&state==1)||(state!=null&&state==2)){ List historyVos = new ArrayList<>(); for (TransactionDetails transactionDetail : transactionDetails) { HistoryVo historyVo = new HistoryVo(); if (transactionDetail.getState()==1){ switch (transactionDetail.getOrderType()){ case 2: historyVo.setState("订单收入"); break; case 3: historyVo.setState("城际出行"); break; case 4: historyVo.setState("同城小件物流"); break; default: historyVo.setState("充值"); break; } historyVo.setAddordown(1); }else { OrderTaxi orderTaxi = orderTaxis.stream().filter(e -> e.getId().equals(transactionDetail.getOrderId())).findFirst().orElse(null); if (orderTaxi!=null){ if (orderTaxi.getPayType()!=null && (orderTaxi.getPayType()!=1||orderTaxi.getPayType()!=2)){ continue; } } historyVo.setState("扣除"); historyVo.setAddordown(0); } historyVo.setMoney(transactionDetail.getMoney()); historyVo.setCreateTime(transactionDetail.getInsertTime()); historyVos.add(historyVo); } int totalRecords = historyVos.size(); int endIndex = Math.min(startIndex + size, totalRecords); List historyVos1 = historyVos.subList(startIndex, endIndex); return ResultUtil.success(historyVos1); } Wrapper eq1 = new EntityWrapper().eq("userType", 2).eq("userId", driverId); List withdrawals = withdrawalService.selectList(eq1); List historyVos = new ArrayList<>(); List historyVos1 = new ArrayList<>(); for (TransactionDetails transactionDetail : transactionDetails) { HistoryVo historyVo = new HistoryVo(); if (transactionDetail.getState()==1){ switch (transactionDetail.getOrderType()){ case 2: historyVo.setState("订单收入"); break; case 3: historyVo.setState("城际出行"); break; case 4: historyVo.setState("同城小件物流"); break; default: historyVo.setState("充值"); break; } historyVo.setAddordown(1); }else { OrderTaxi orderTaxi = orderTaxis.stream().filter(e -> e.getId().equals(transactionDetail.getOrderId())).findFirst().orElse(null); if (orderTaxi!=null){ if (orderTaxi.getPayType()!=null && (orderTaxi.getPayType()!=1||orderTaxi.getPayType()!=2)){ continue; } } historyVo.setState("扣除"); historyVo.setAddordown(0); } historyVo.setMoney(transactionDetail.getMoney()); historyVo.setCreateTime(transactionDetail.getInsertTime()); historyVos.add(historyVo); } for (Withdrawal transactionDetail : withdrawals) { HistoryVo historyVo = new HistoryVo(); if (transactionDetail.getState()==1){ historyVo.setState("待处理"); historyVo.setAddordown(0); }else if(transactionDetail.getState()==2) { historyVo.setState("成功"); historyVo.setAddordown(0); }else { historyVo.setState("失败"); historyVo.setAddordown(1); } historyVo.setMoney(transactionDetail.getMoney()); historyVo.setCreateTime(transactionDetail.getInsertTime()); historyVos.add(historyVo); historyVos1.add(historyVo); } if (state!=null&&state==3){ int totalRecords = historyVos1.size(); int endIndex = Math.min(startIndex + size, totalRecords); List historyVos2 = historyVos1.subList(startIndex, endIndex); return ResultUtil.success(historyVos2); } int totalRecords = historyVos.size(); int endIndex = Math.min(startIndex + size, totalRecords); List historyVos3 = historyVos.subList(startIndex, endIndex); return ResultUtil.success(historyVos3); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @Autowired private PushUtil pushUtil; @ResponseBody @PostMapping("/confirm/money") @ApiOperation(value = "确认费用是否够下次上班",notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil work( HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if (null == uid) { return ResultUtil.tokenErr(); } Driver driver = driverService.selectById(uid); // List tUseMoney = useMoneyMapper.selectList(null); Company company = companyService.selectById(driver.getCompanyId()); if (company.getDriverRestriction() > driver.getBalance()) { pushUtil.expireWork(uid,2); return new ResultUtil(-1, "您的余额不足,请及时充值!"); } }catch (Exception e){ e.printStackTrace(); } return ResultUtil.success(); } }