|
@@ -10,10 +10,7 @@ import com.jpsoft.bus.modules.base.service.MergeOrderInfoService;
|
|
|
import com.jpsoft.bus.modules.base.service.OrderInfoService;
|
|
|
import com.jpsoft.bus.modules.bus.dto.VehicleDTO;
|
|
|
import com.jpsoft.bus.modules.bus.entity.*;
|
|
|
-import com.jpsoft.bus.modules.bus.service.CompanyInfoService;
|
|
|
-import com.jpsoft.bus.modules.bus.service.ShiftInfoService;
|
|
|
-import com.jpsoft.bus.modules.bus.service.StationInfoService;
|
|
|
-import com.jpsoft.bus.modules.bus.service.VehicleInfoService;
|
|
|
+import com.jpsoft.bus.modules.bus.service.*;
|
|
|
import com.jpsoft.bus.modules.common.dto.MessageResult;
|
|
|
import com.jpsoft.bus.modules.common.dto.Sort;
|
|
|
import com.jpsoft.bus.modules.common.utils.DES3;
|
|
@@ -21,10 +18,14 @@ import com.jpsoft.bus.modules.common.utils.JwtUtil;
|
|
|
import com.jpsoft.bus.modules.common.utils.SMSUtil;
|
|
|
import com.jpsoft.bus.modules.merchant.dto.ProfitListDTO;
|
|
|
import com.jpsoft.bus.modules.merchant.dto.SellListDTO;
|
|
|
+import com.jpsoft.bus.modules.merchant.dto.WithdrawalRecordDetailDTO;
|
|
|
+import com.jpsoft.bus.modules.merchant.dto.WithdrawalRecordListDTO;
|
|
|
import com.jpsoft.bus.modules.merchant.entity.AccountInfo;
|
|
|
import com.jpsoft.bus.modules.merchant.entity.CapitalInfo;
|
|
|
+import com.jpsoft.bus.modules.merchant.entity.WithdrawalRecord;
|
|
|
import com.jpsoft.bus.modules.merchant.service.AccountInfoService;
|
|
|
import com.jpsoft.bus.modules.merchant.service.CapitalInfoService;
|
|
|
+import com.jpsoft.bus.modules.merchant.service.WithdrawalRecordService;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiImplicitParam;
|
|
|
import io.swagger.annotations.ApiImplicitParams;
|
|
@@ -39,6 +40,7 @@ import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.BigInteger;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
@@ -58,9 +60,21 @@ public class MerchantApiController {
|
|
|
@Autowired
|
|
|
private CompanyInfoService companyInfoService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private DriverInfoService driverInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RouteInfoService routeInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PassengerInfoService passengerInfoService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private CapitalInfoService capitalInfoService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private WithdrawalRecordService withdrawalRecordService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private MergeOrderInfoService mergeOrderInfoService;
|
|
|
|
|
@@ -573,5 +587,317 @@ public class MerchantApiController {
|
|
|
return messageResult;
|
|
|
}
|
|
|
|
|
|
+ @PostMapping("sellDetail")
|
|
|
+ @ApiOperation(value = "售票详情")
|
|
|
+ @ApiImplicitParams({
|
|
|
+ @ApiImplicitParam(name = "id", value = "id", required = true, paramType = "form")
|
|
|
+ })
|
|
|
+ public MessageResult<Map> sellDetail(String id,String token, @RequestAttribute String subject) {
|
|
|
+ MessageResult<Map> messageResult = new MessageResult<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ AccountInfo accountInfo = accountInfoService.get(subject);
|
|
|
+ if (accountInfo == null){
|
|
|
+ throw new Exception("请重新登录");
|
|
|
+ }
|
|
|
+ OrderInfo orderInfo = orderInfoService.get(id);
|
|
|
+
|
|
|
+ if (orderInfo == null){
|
|
|
+ throw new Exception("订单不存在");
|
|
|
+ }
|
|
|
+ //乘客记录
|
|
|
+ PassengerInfo passengerInfo = passengerInfoService.get(orderInfo.getPassengerId());
|
|
|
+
|
|
|
+ MergeOrderInfo mergeOrderInfo = mergeOrderInfoService.get(orderInfo.getMergeOrderId());
|
|
|
+ //购票上车点
|
|
|
+ StationInfo ticketUpStation = stationInfoService.get(orderInfo.getTicketUpStationId());
|
|
|
+ //购票下车点
|
|
|
+ StationInfo ticketDownStation = stationInfoService.get(orderInfo.getTicketDownStationId());
|
|
|
+
|
|
|
+
|
|
|
+ //班次
|
|
|
+ ShiftInfo shiftInfo = shiftInfoService.get(mergeOrderInfo.getVehicleShiftId());
|
|
|
+ //线路
|
|
|
+ RouteInfo routeInfo = routeInfoService.get(shiftInfo.getRouteId());
|
|
|
+ //班次开始点
|
|
|
+ StationInfo start = stationInfoService.get(shiftInfo.getStartStationId());
|
|
|
+ //班次终点
|
|
|
+ StationInfo end = stationInfoService.get(shiftInfo.getEndStationId());
|
|
|
+ //司机
|
|
|
+ DriverInfo driverInfo = driverInfoService.get(shiftInfo.getDriverId());
|
|
|
+ //车辆
|
|
|
+ VehicleInfo vehicleInfo = vehicleInfoService.get(shiftInfo.getVehicleId());
|
|
|
+
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+
|
|
|
+ map.put("outOrderNo",orderInfo.getOutOrderNo());
|
|
|
+ map.put("payName",orderInfo.getPayName());
|
|
|
+ map.put("payNameStr",orderInfo.getPayNameStr(orderInfo.getPayName()));
|
|
|
+ map.put("ticketType",orderInfo.getTicketType());
|
|
|
+ map.put("ticketTypeStr",orderInfo.getTicketTypeStr(orderInfo.getTicketType()));
|
|
|
+ map.put("goodTicketFee",orderInfo.getGoodsTicket());
|
|
|
+ map.put("ticketFee",orderInfo.getTotalFee().subtract(orderInfo.getGoodsTicket()));
|
|
|
+ map.put("totalFee",orderInfo.getTotalFee());
|
|
|
+ map.put("ticketTrip",ticketUpStation.getName() + "-" +ticketDownStation.getName());
|
|
|
+ if ("2".equals(passengerInfo.getStatus())){
|
|
|
+ map.put("ticketStatus","已过期");
|
|
|
+ }
|
|
|
+ if ("1".equals(passengerInfo.getStatus())){
|
|
|
+ map.put("ticketStatus","乘车中");
|
|
|
+ }
|
|
|
+ map.put("createTime",DateUtil.format(orderInfo.getCreateTime(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
+ map.put("payTime",DateUtil.format(orderInfo.getPayTime(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
+ Date closeTime = null;
|
|
|
+ if (passengerInfo.getDownTime() != null){
|
|
|
+ closeTime = passengerInfo.getDownTime();
|
|
|
+
|
|
|
+ }
|
|
|
+ map.put("closeTime",DateUtil.format(closeTime,"yyyy-MM-dd HH:mm:ss"));
|
|
|
+
|
|
|
+ map.put("routeName",routeInfo.getName());
|
|
|
+ map.put("routeTrip",start.getName() + "-" + end.getName());
|
|
|
+ map.put("routeTime",routeInfo.getStartTime() + "-" + routeInfo.getEndTime());
|
|
|
+ map.put("licensePlateNumber",vehicleInfo.getLicensePlateNumber());
|
|
|
+ map.put("driverName",driverInfo.getName());
|
|
|
+ map.put("phone",driverInfo.getPhone());
|
|
|
+
|
|
|
+
|
|
|
+ messageResult.setData(map);
|
|
|
+ messageResult.setResult(true);
|
|
|
+ messageResult.setCode(200);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ log.error(ex.getMessage(),ex);
|
|
|
+ messageResult.setCode(400);
|
|
|
+ messageResult.setResult(false);
|
|
|
+ messageResult.setMessage(ex.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return messageResult;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @PostMapping("myAccount")
|
|
|
+ @ApiOperation(value = "我的账户")
|
|
|
+ public MessageResult<Map> myAccount(String token, @RequestAttribute String subject) {
|
|
|
+ MessageResult<Map> messageResult = new MessageResult<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ AccountInfo accountInfo = accountInfoService.get(subject);
|
|
|
+ if (accountInfo == null){
|
|
|
+ throw new Exception("请重新登录");
|
|
|
+ }
|
|
|
+ BigDecimal withdrawalAmount = BigDecimal.ZERO;
|
|
|
+ BigDecimal todayRevenue = BigDecimal.ZERO;
|
|
|
+ BigDecimal onlineTotalRevenue = BigDecimal.ZERO;
|
|
|
+ BigDecimal alreadyWithdrawalAmount = BigDecimal.ZERO;
|
|
|
+
|
|
|
+ CapitalInfo capitalInfo = capitalInfoService.findByMerchantId(accountInfo.getId());
|
|
|
+ if (capitalInfo != null){
|
|
|
+ withdrawalAmount = capitalInfo.getWithdrawalAmount();
|
|
|
+ onlineTotalRevenue = capitalInfo.getOnlineTotalRevenue();
|
|
|
+ alreadyWithdrawalAmount = capitalInfo.getAlreadyWithdrawalAmount();
|
|
|
+ }
|
|
|
+ CompanyInfo companyInfo = companyInfoService.get(accountInfo.getCompanyId());
|
|
|
+ List<VehicleInfo> vehicleInfoList = vehicleInfoService.findByCompanyId(companyInfo.getId());
|
|
|
+ if (vehicleInfoList.size()>0){
|
|
|
+ BigDecimal wechatTodaySum = orderInfoService.paySum(vehicleInfoList,"wechat",DateUtil.beginOfDay(new Date()),DateUtil.endOfDay(new Date()),false);
|
|
|
+ BigDecimal alipayTodaySum = orderInfoService.paySum(vehicleInfoList,"alipay",DateUtil.beginOfDay(new Date()),DateUtil.endOfDay(new Date()),false);
|
|
|
+ todayRevenue = (wechatTodaySum == null?BigDecimal.ZERO:wechatTodaySum).add(alipayTodaySum==null?BigDecimal.ZERO:alipayTodaySum);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ map.put("withdrawalAmount",withdrawalAmount);
|
|
|
+ map.put("todayRevenue",todayRevenue);
|
|
|
+ map.put("onlineTotalRevenue",onlineTotalRevenue);
|
|
|
+ map.put("alreadyWithdrawalAmount",alreadyWithdrawalAmount);
|
|
|
+ map.put("account",accountInfo);
|
|
|
+
|
|
|
+
|
|
|
+ messageResult.setData(map);
|
|
|
+ messageResult.setResult(true);
|
|
|
+ messageResult.setCode(200);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ log.error(ex.getMessage(), ex);
|
|
|
+ messageResult.setResult(false);
|
|
|
+ messageResult.setCode(400);
|
|
|
+ messageResult.setMessage(ex.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return messageResult;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @PostMapping("logOut")
|
|
|
+ @ApiOperation(value = "登出")
|
|
|
+ public MessageResult<Map> logOut(String token, @RequestAttribute String subject) {
|
|
|
+ MessageResult<Map> messageResult = new MessageResult<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ AccountInfo accountInfo = accountInfoService.get(subject);
|
|
|
+ if (accountInfo == null){
|
|
|
+ throw new Exception("请重新登录");
|
|
|
+ }
|
|
|
+
|
|
|
+ accountInfo.setOpenId("");
|
|
|
+ accountInfoService.update(accountInfo);
|
|
|
+
|
|
|
+
|
|
|
+ messageResult.setResult(true);
|
|
|
+ messageResult.setCode(200);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ log.error(ex.getMessage(), ex);
|
|
|
+ messageResult.setResult(false);
|
|
|
+ messageResult.setCode(400);
|
|
|
+ messageResult.setMessage(ex.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return messageResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("withdrawalRecordList")
|
|
|
+ @ApiOperation(value = "提现记录")
|
|
|
+ public MessageResult<Map> withdrawalRecordList(String token, @RequestAttribute String subject,@RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex, @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
|
|
|
+ MessageResult<Map> messageResult = new MessageResult<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ AccountInfo accountInfo = accountInfoService.get(subject);
|
|
|
+ if (accountInfo == null){
|
|
|
+ throw new Exception("请重新登录");
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String,Object> searchParams = new HashMap<>();
|
|
|
+ searchParams.put("merchantId",accountInfo.getId());
|
|
|
+ List<Sort> sortList = new ArrayList<>();
|
|
|
+ sortList.add(new Sort("create_time","desc"));
|
|
|
+ Page<WithdrawalRecord> page = withdrawalRecordService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
|
|
|
+
|
|
|
+ List<WithdrawalRecord> withdrawalRecordList = page.getResult();
|
|
|
+ List<WithdrawalRecordListDTO> list = new ArrayList<>();
|
|
|
+ if (withdrawalRecordList.size()>0){
|
|
|
+ for (WithdrawalRecord withdrawalRecord : withdrawalRecordList){
|
|
|
+ WithdrawalRecordListDTO withdrawalRecordListDTO = new WithdrawalRecordListDTO();
|
|
|
+ withdrawalRecordListDTO.setId(withdrawalRecord.getId());
|
|
|
+ withdrawalRecordListDTO.setName("账户提现");
|
|
|
+ withdrawalRecordListDTO.setTime(DateUtil.format(withdrawalRecord.getCreateTime(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
+ withdrawalRecordListDTO.setStatus(withdrawalRecord.getStatus());
|
|
|
+ withdrawalRecordListDTO.setStatusStr(withdrawalRecord.getStatusStr(withdrawalRecord.getStatus()));
|
|
|
+ withdrawalRecordListDTO.setAmount("-" + withdrawalRecord.getApplyWithdrawalAmount());
|
|
|
+ list.add(withdrawalRecordListDTO);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Map<String,Object> pageMap = new HashMap<>();
|
|
|
+ pageMap.put("recordsTotal",page.getTotal());
|
|
|
+ pageMap.put("recordsFiltered",page.getTotal());
|
|
|
+ pageMap.put("totalPage",page.getPages());
|
|
|
+ pageMap.put("pageNumber",page.getPageNum());
|
|
|
+ pageMap.put("pageSize",page.getPageSize());
|
|
|
+ pageMap.put("data", list);
|
|
|
+
|
|
|
+ messageResult.setData(pageMap);
|
|
|
+ messageResult.setResult(true);
|
|
|
+ messageResult.setCode(200);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ log.error(ex.getMessage(), ex);
|
|
|
+ messageResult.setResult(false);
|
|
|
+ messageResult.setCode(400);
|
|
|
+ messageResult.setMessage(ex.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return messageResult;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @PostMapping("withdrawalRecordDetail")
|
|
|
+ @ApiOperation(value = "提现记录详情")
|
|
|
+ public MessageResult<WithdrawalRecordDetailDTO> withdrawalRecordDetail(String id, String token, @RequestAttribute String subject) {
|
|
|
+ MessageResult<WithdrawalRecordDetailDTO> messageResult = new MessageResult<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ AccountInfo accountInfo = accountInfoService.get(subject);
|
|
|
+ if (accountInfo == null){
|
|
|
+ throw new Exception("请重新登录");
|
|
|
+ }
|
|
|
+
|
|
|
+ WithdrawalRecord withdrawalRecord = withdrawalRecordService.get(id);
|
|
|
+ if (withdrawalRecord == null){
|
|
|
+ throw new Exception("记录不存在");
|
|
|
+ }
|
|
|
+ WithdrawalRecordDetailDTO withdrawalRecordDetailDTO = new WithdrawalRecordDetailDTO();
|
|
|
+ withdrawalRecordDetailDTO.setName("账户提现");
|
|
|
+ withdrawalRecordDetailDTO.setAmount("-"+withdrawalRecord.getApplyWithdrawalAmount());
|
|
|
+ withdrawalRecordDetailDTO.setStatus(withdrawalRecord.getStatus());
|
|
|
+ withdrawalRecordDetailDTO.setStatusStr(withdrawalRecord.getStatusStr(withdrawalRecord.getStatus()));
|
|
|
+ withdrawalRecordDetailDTO.setWithdrawalNo(withdrawalRecord.getWithdrawalNo());
|
|
|
+ if ("0".equals(withdrawalRecord.getStatus())){
|
|
|
+ withdrawalRecordDetailDTO.setTime(DateUtil.format(withdrawalRecord.getCreateTime(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ withdrawalRecordDetailDTO.setTime(DateUtil.format(withdrawalRecord.getExamineTime(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
+ }
|
|
|
+
|
|
|
+ withdrawalRecordDetailDTO.setRemark(withdrawalRecord.getRemark());
|
|
|
+
|
|
|
+ messageResult.setData(withdrawalRecordDetailDTO);
|
|
|
+ messageResult.setResult(true);
|
|
|
+ messageResult.setCode(200);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ log.error(ex.getMessage(), ex);
|
|
|
+ messageResult.setResult(false);
|
|
|
+ messageResult.setCode(400);
|
|
|
+ messageResult.setMessage(ex.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return messageResult;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @PostMapping("withdrawal")
|
|
|
+ @ApiOperation(value = "提现")
|
|
|
+ public MessageResult<Map> withdrawal(String amount, String token, @RequestAttribute String subject) {
|
|
|
+ MessageResult<Map> messageResult = new MessageResult<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ AccountInfo accountInfo = accountInfoService.get(subject);
|
|
|
+ if (accountInfo == null){
|
|
|
+ throw new Exception("请重新登录");
|
|
|
+ }
|
|
|
+
|
|
|
+ CapitalInfo capitalInfo = capitalInfoService.findByMerchantId(accountInfo.getId());
|
|
|
+ if (capitalInfo == null){
|
|
|
+ throw new Exception("没有相关账户信息");
|
|
|
+ }
|
|
|
+ List<WithdrawalRecord> withdrawalRecordList = withdrawalRecordService.findByMerchantIdAndStatus(accountInfo.getId(),"0");
|
|
|
+
|
|
|
+ if (withdrawalRecordList.size()>0){
|
|
|
+ throw new Exception("有一笔正在审核的提现记录,不可再次申请");
|
|
|
+ }
|
|
|
+ BigDecimal bigAmount = new BigDecimal(amount);
|
|
|
+ if (bigAmount.compareTo(capitalInfo.getWithdrawalAmount()) >0){
|
|
|
+ throw new Exception("提现金额不可超过可提现金额");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ messageResult.setResult(true);
|
|
|
+ messageResult.setCode(200);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ log.error(ex.getMessage(), ex);
|
|
|
+ messageResult.setResult(false);
|
|
|
+ messageResult.setCode(400);
|
|
|
+ messageResult.setMessage(ex.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return messageResult;
|
|
|
+ }
|
|
|
|
|
|
}
|