package com.stylefeng.guns.modular.system.controller;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.stylefeng.guns.core.base.controller.BaseController;
|
import com.stylefeng.guns.core.common.constant.factory.PageFactory;
|
import com.stylefeng.guns.core.shiro.ShiroKit;
|
import com.stylefeng.guns.core.util.DateUtil;
|
import com.stylefeng.guns.core.util.ExcelExportUtil;
|
import com.stylefeng.guns.core.util.SinataUtil;
|
import com.stylefeng.guns.modular.system.model.*;
|
import com.stylefeng.guns.modular.system.service.*;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import com.stylefeng.guns.core.log.LogObjectHolder;
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* 控制器
|
*
|
* @author fengshuonan
|
* @Date 2021-04-22 10:53:34
|
*/
|
@Controller
|
@RequestMapping("/tIncome")
|
public class TIncomeController extends BaseController {
|
|
private String PREFIX = "/system/tIncome/";
|
|
@Autowired
|
private IIncomeService tIncomeService;
|
@Autowired
|
private ITOrderPrivateCarService orderPrivateCarService;
|
@Autowired
|
private ITPubTransactionDetailsService pubTransactionDetailsService;
|
@Autowired
|
private ITPubWithdrawalService pubWithdrawalService;
|
@Autowired
|
private ITDriverService driverService;
|
|
/**
|
* 跳转到首页
|
*/
|
@RequestMapping("")
|
public String index(Integer id, Model model) {
|
model.addAttribute("id", id);
|
return PREFIX + "tIncome.html";
|
}
|
@RequestMapping("/balance")
|
public String balance(Integer id, Model model) {
|
model.addAttribute("id", id);
|
return PREFIX + "balance.html";
|
}
|
|
@RequestMapping("driverWork")
|
public String driverWork(Model model) {
|
return PREFIX + "driverWork.html";
|
}
|
|
@RequestMapping(value = "/driverWorkList")
|
@ResponseBody
|
public Object driverWorkList() {
|
Page<Map<String,Object>> page = new PageFactory<Map<String,Object>>().defaultPage();
|
List<Map<String,Object>> list = tIncomeService.getList1(page);
|
for (Map<String,Object> map:list){
|
List<Map<String,Object>> list1 = tIncomeService.getTotal(map.get("times").toString());
|
map.put("driverNum",list1.get(0).get("driverNum"));
|
map.put("timeNumber",list1.get(0).get("timeNumber"));
|
}
|
page.setRecords(list);
|
return super.packForBT(page);
|
}
|
|
@RequestMapping("driverWorkDetail")
|
public String driverWorkDetail(String times, Model model) {
|
model.addAttribute("times", times);
|
return PREFIX + "driverWorkDetail.html";
|
}
|
|
@RequestMapping(value = "/driverWorkDetailList")
|
@ResponseBody
|
public Object driverWorkDetailList(String times) {
|
Page<Map<String,Object>> page = new PageFactory<Map<String,Object>>().defaultPage();
|
page.setRecords(tIncomeService.getList2(page,times));
|
return super.packForBT(page);
|
}
|
/**
|
* 跳转到添加
|
*/
|
@RequestMapping("/tIncome_add")
|
public String tIncomeAdd() {
|
return PREFIX + "tIncome_add.html";
|
}
|
|
|
/**
|
* 获取列表
|
*/
|
@RequestMapping(value = "/list")
|
@ResponseBody
|
public Object list(Integer id) {
|
Page<Map<String,Object>> page = new PageFactory<Map<String,Object>>().defaultPage();
|
page.setRecords(tIncomeService.getList(page,id));
|
return super.packForBT(page);
|
}
|
|
|
/**
|
* 司机余额修改
|
*/
|
@RequestMapping(value = "/changeMoney")
|
@ResponseBody
|
public Object oneChange(Integer id ,Integer type,String mount,String remark) {
|
TDriver tDriver = driverService.selectById(id);
|
TPubTransactionDetails tPubTransactionDetails = new TPubTransactionDetails();
|
tPubTransactionDetails.setUserId(tDriver.getId());
|
tPubTransactionDetails.setInsertTime(new Date());
|
tPubTransactionDetails.setRemark(remark);
|
tPubTransactionDetails.setMoney(new BigDecimal(mount));
|
tPubTransactionDetails.setState(type);
|
tPubTransactionDetails.setType(1);
|
tPubTransactionDetails.setUserType(2);
|
switch ( type){
|
case 1:
|
tPubTransactionDetails.setOrderType(6);
|
break;
|
case 2:
|
tPubTransactionDetails.setOrderType(7);
|
break;
|
}
|
pubTransactionDetailsService.insert(tPubTransactionDetails);
|
// type=1增加 type=2减少
|
switch (type){
|
case 1:
|
BigDecimal bigDecimal = new BigDecimal(mount);
|
|
BigDecimal add = tDriver.getBalance().add(bigDecimal);
|
tDriver.setBalance(add);
|
break;
|
case 2:
|
BigDecimal bigDecimal1 = new BigDecimal(mount);
|
BigDecimal subtract = tDriver.getBalance().subtract(bigDecimal1);
|
int comparisonResult = subtract.compareTo(BigDecimal.ZERO);
|
// 小于0 设置为0 不要为负数
|
if (comparisonResult<0){
|
// tDriver.setBalance(BigDecimal.ZERO);
|
|
return 502;
|
}else{
|
tDriver.setBalance(subtract);
|
}
|
break;
|
}
|
driverService.updateById(tDriver);
|
return SUCCESS_TIP;
|
}
|
/**
|
* 余额明细列表
|
*/
|
@RequestMapping(value = "/listBalance")
|
@ResponseBody
|
public Object list(Integer id,String insertTime ,Integer handleType) {
|
String beginTime = null;
|
String endTime = null;
|
if (SinataUtil.isNotEmpty(insertTime)){
|
String[] timeArray = insertTime.split(" - ");
|
beginTime = timeArray[0];
|
endTime = timeArray[1];
|
}
|
List<TOrderPrivateCar> tOrderPrivateCars = orderPrivateCarService.selectList(
|
new EntityWrapper<TOrderPrivateCar>().eq("driverId",id)
|
);
|
|
List<Map<String, Object>> res = new ArrayList<>();
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
// 跑单收入
|
if (handleType == null || handleType == 1){
|
Wrapper<Income> eq = new EntityWrapper<Income>()
|
.eq("objectId", id)
|
.eq("type", 2)
|
.eq("userType", 2);
|
if (beginTime!=null){
|
eq.ge("insertTime", beginTime);
|
eq.le("insertTime", endTime);
|
}
|
List<Income> incomes = tIncomeService.selectList(eq);
|
for (Income income : incomes) {
|
Map<String, Object> temp = new HashMap<>();
|
String times = simpleDateFormat.format(income.getInsertTime());
|
if (income.getIncomeId()!=null){
|
TOrderPrivateCar tOrderPrivateCar = tOrderPrivateCars.stream().filter(e -> e.getId()
|
.equals(income.getIncomeId())).findFirst().orElse(null);
|
temp.put("orderNumber",tOrderPrivateCar==null?null:tOrderPrivateCar.getOrderNum());
|
temp.put("remark",tOrderPrivateCar.getRemark());
|
}
|
temp.put("times",times);
|
temp.put("handleType","车费收入");
|
temp.put("amount",income.getMoney());
|
temp.put("withType","订单号");
|
// todo 新增收入明细时 需要存储当前账户余额
|
temp.put("balance",income.getDriverBalance());
|
res.add(temp);
|
}
|
}
|
|
// 司机专车订单ids
|
List<Integer> orderIds = orderPrivateCarService.selectList(new EntityWrapper<TOrderPrivateCar>()
|
.eq("driverId", id)).stream()
|
.map(TOrderPrivateCar::getId).collect(Collectors.toList());
|
if (orderIds.isEmpty()){
|
orderIds.add(-1);
|
}
|
// 车费平台手续费扣除
|
if (handleType == null || handleType == 2){
|
Wrapper<Income> eq = new EntityWrapper<Income>()
|
.eq("type", 2)
|
.in("incomeId",orderIds)
|
.eq("userType", 1);
|
if (beginTime!=null){
|
eq.ge("insertTime", beginTime);
|
eq.le("insertTime", endTime);
|
}
|
List<Income> incomes = tIncomeService.selectList(eq);
|
for (Income income : incomes) {
|
Map<String, Object> temp = new HashMap<>();
|
String times = simpleDateFormat.format(income.getInsertTime());
|
if (income.getIncomeId()!=null){
|
TOrderPrivateCar tOrderPrivateCar = tOrderPrivateCars.stream().filter(e -> e.getId()
|
.equals(income.getIncomeId())).findFirst().orElse(null);
|
temp.put("orderNumber",tOrderPrivateCar==null?null:tOrderPrivateCar.getOrderNum());
|
temp.put("remark",tOrderPrivateCar==null?"":tOrderPrivateCar.getRemark());
|
}
|
temp.put("times",times);
|
temp.put("handleType","车费平台手续费扣除");
|
temp.put("amount",income.getMoney());
|
temp.put("withType","订单号");
|
// todo 新增收入明细时 需要存储当前账户余额
|
temp.put("balance",income.getDriverBalance());
|
res.add(temp);
|
}
|
}
|
// 充值
|
if (handleType == null || handleType == 3){
|
Wrapper<TPubTransactionDetails> eq = new EntityWrapper<TPubTransactionDetails>()
|
.eq("userId", id)
|
.eq("orderType", 5)
|
.eq("userType", 2);
|
if (beginTime!=null){
|
eq.ge("insertTime", beginTime);
|
eq.le("insertTime", endTime);
|
}
|
List<TPubTransactionDetails> pubTransactionDetails = pubTransactionDetailsService.selectList(eq);
|
for (TPubTransactionDetails details : pubTransactionDetails) {
|
Map<String, Object> temp = new HashMap<>();
|
String times = simpleDateFormat.format(details.getInsertTime());
|
temp.put("orderNumber","");
|
temp.put("remark","");
|
temp.put("times",times);
|
temp.put("handleType","充值");
|
temp.put("amount",details.getMoney());
|
temp.put("withType","交易流水号");
|
// todo 新增收入明细时 需要存储当前账户余额
|
temp.put("balance",details.getDriverBalance());
|
res.add(temp);
|
}
|
}
|
// 提现
|
if (handleType == null || handleType == 4){
|
Wrapper<TPubWithdrawal> eq = new EntityWrapper<TPubWithdrawal>()
|
.eq("userId", id)
|
.eq("state", 2)
|
.eq("userType", 2);
|
if (beginTime!=null){
|
eq.ge("insertTime", beginTime);
|
eq.le("insertTime", endTime);
|
}
|
List<TPubWithdrawal> pubTransactionDetails = pubWithdrawalService.selectList(eq);
|
for (TPubWithdrawal details : pubTransactionDetails) {
|
Map<String, Object> temp = new HashMap<>();
|
String times = simpleDateFormat.format(details.getInsertTime());
|
temp.put("orderNumber",details.getOrderNumber());
|
temp.put("remark",details.getRemark());
|
temp.put("times",times);
|
temp.put("handleType","提现");
|
temp.put("amount",details.getMoney());
|
temp.put("withType","交易流水号");
|
// todo 新增收入明细时 需要存储当前账户余额
|
temp.put("balance",details.getDriverBalance());
|
res.add(temp);
|
}
|
}
|
// 平台充值
|
if (handleType == null || handleType == 5){
|
Wrapper<TPubTransactionDetails> eq = new EntityWrapper<TPubTransactionDetails>()
|
.eq("userId", id)
|
.eq("orderType", 6)
|
.eq("userType", 2);
|
if (beginTime!=null){
|
eq.ge("insertTime", beginTime);
|
eq.le("insertTime", endTime);
|
}
|
List<TPubTransactionDetails> pubTransactionDetails = pubTransactionDetailsService.selectList(eq);
|
for (TPubTransactionDetails details : pubTransactionDetails) {
|
Map<String, Object> temp = new HashMap<>();
|
String times = simpleDateFormat.format(details.getInsertTime());
|
temp.put("orderNumber","");
|
temp.put("remark","");
|
temp.put("times",times);
|
temp.put("handleType","平台充值");
|
temp.put("amount",details.getMoney());
|
temp.put("withType","无");
|
// todo 新增收入明细时 需要存储当前账户余额
|
temp.put("balance",details.getDriverBalance());
|
res.add(temp);
|
}
|
}
|
// 平台扣除
|
if (handleType == null || handleType == 6){
|
Wrapper<TPubTransactionDetails> eq = new EntityWrapper<TPubTransactionDetails>()
|
.eq("userId", id)
|
.eq("orderType", 7)
|
.eq("userType", 2);
|
if (beginTime!=null){
|
eq.ge("insertTime", beginTime);
|
eq.le("insertTime", endTime);
|
}
|
List<TPubTransactionDetails> pubTransactionDetails = pubTransactionDetailsService.selectList(eq);
|
for (TPubTransactionDetails details : pubTransactionDetails) {
|
Map<String, Object> temp = new HashMap<>();
|
String times = simpleDateFormat.format(details.getInsertTime());
|
|
temp.put("orderNumber","");
|
temp.put("remark","");
|
temp.put("times",times);
|
temp.put("handleType","平台扣除");
|
temp.put("amount",details.getMoney());
|
temp.put("withType","无");
|
// todo 新增收入明细时 需要存储当前账户余额
|
temp.put("balance",details.getDriverBalance());
|
res.add(temp);
|
}
|
}
|
// 取消订单收入
|
if (handleType == null || handleType == 7){
|
Wrapper<Income> eq = new EntityWrapper<Income>()
|
.eq("objectId", id)
|
.eq("type", 3)
|
.eq("userType", 2);
|
if (beginTime!=null){
|
eq.ge("insertTime", beginTime);
|
eq.le("insertTime", endTime);
|
}
|
List<Income> incomes = tIncomeService.selectList(eq);
|
for (Income income : incomes) {
|
Map<String, Object> temp = new HashMap<>();
|
String times = simpleDateFormat.format(income.getInsertTime());
|
if (income.getIncomeId()!=null){
|
TOrderPrivateCar tOrderPrivateCar = tOrderPrivateCars.stream().filter(e -> e.getId()
|
.equals(income.getIncomeId())).findFirst().orElse(null);
|
temp.put("orderNumber",tOrderPrivateCar==null?null:tOrderPrivateCar.getOrderNum());
|
temp.put("remark",tOrderPrivateCar.getRemark());
|
}
|
temp.put("times",times);
|
temp.put("handleType","取消订单收入");
|
temp.put("amount",income.getMoney());
|
temp.put("withType","订单号");
|
// todo 新增收入明细时 需要存储当前账户余额
|
temp.put("balance",income.getDriverBalance());
|
res.add(temp);
|
}
|
}
|
res.sort((o1, o2) -> {
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
try {
|
Date date1 = format.parse((String) o1.get("times"));
|
Date date2 = format.parse((String) o2.get("times"));
|
return date2.compareTo(date1); // 降序
|
} catch (Exception e) {
|
e.printStackTrace();
|
return 0;
|
}
|
});
|
return res;
|
}
|
@RequestMapping("/getExcel")
|
@ResponseBody
|
public void getExcel(
|
Integer id,
|
HttpServletRequest request,
|
HttpServletResponse response) {
|
String beginTime = null;
|
String endTime = null;
|
List<Map<String, Object>> list = tIncomeService.getExcelList(id);
|
// 表格数据【封装】
|
List<List<String>> dataList = new ArrayList<>();
|
// 表头行
|
List<String> shellList = new ArrayList<String>();
|
shellList.add("日期");
|
shellList.add("活动收入");
|
shellList.add("业务收入");
|
|
dataList.add(shellList);
|
for (Map<String, Object> map : list) {
|
//数据行
|
shellList = new ArrayList<String>();
|
//下单时间
|
if(SinataUtil.isNotEmpty(map.get("times"))){
|
shellList.add(String.valueOf(map.get("times")));
|
}else{
|
shellList.add("-");
|
}
|
//订单编号
|
if(SinataUtil.isNotEmpty(map.get("activityMoney"))){
|
shellList.add(map.get("activityMoney").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(map.get("orderMoney"))){
|
shellList.add(map.get("orderMoney").toString());
|
}else{
|
shellList.add("-");
|
}
|
|
dataList.add(shellList);
|
}
|
try {
|
// 调用工具类进行导出
|
ExcelExportUtil.easySheet("收入明细数据"+ DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "收入明细数据", dataList,request, response);
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
}
|
}
|