|
|
|
@ -7,17 +7,21 @@ import java.util.stream.Collectors;
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
|
|
|
|
import com.bs.common.annotation.Anonymous;
|
|
|
|
|
import com.bs.common.constant.Constants;
|
|
|
|
|
import com.bs.common.core.domain.entity.SysUser;
|
|
|
|
|
import com.bs.common.utils.SecurityUtils;
|
|
|
|
|
import com.bs.common.utils.ServletUtils;
|
|
|
|
|
import com.bs.df.domain.DfBizClue;
|
|
|
|
|
import com.bs.df.domain.DfBroker;
|
|
|
|
|
import com.bs.df.mapper.DfBizClueMapper;
|
|
|
|
|
import com.bs.df.mapper.DfOrderMapper;
|
|
|
|
|
import com.bs.df.service.IDfBizClueService;
|
|
|
|
|
import com.bs.df.service.IDfBrokerService;
|
|
|
|
|
import com.bs.system.mapper.SysUserMapper;
|
|
|
|
|
import com.bs.system.service.ISysUserService;
|
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
|
|
|
@ -39,6 +43,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import cn.hutool.core.lang.Validator;
|
|
|
|
|
import com.bs.df.domain.DfOrder;
|
|
|
|
|
import com.bs.df.service.IDfOrderService;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -63,48 +68,86 @@ public class DfOrderController extends BaseController {
|
|
|
|
|
private IDfBizClueService dfBizClueService;
|
|
|
|
|
@Resource
|
|
|
|
|
private DfBizClueMapper dfBizClueMapper;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private SysUserMapper sysUserMapper;
|
|
|
|
|
/**
|
|
|
|
|
* 分页查询客户订单列表
|
|
|
|
|
*/
|
|
|
|
|
@ApiOperation("分页查询客户订单列表")
|
|
|
|
|
@GetMapping("/pageList")
|
|
|
|
|
public TableDataInfo pageList(DfOrder dfOrder) {
|
|
|
|
|
startPage();
|
|
|
|
|
// startPage();
|
|
|
|
|
Integer pageNum = ServletUtils.getParameterToInt(Constants.PAGE_NUM);
|
|
|
|
|
Integer pageSize = ServletUtils.getParameterToInt(Constants.PAGE_SIZE);
|
|
|
|
|
LambdaQueryWrapper<DfOrder> queryWrapper = new LambdaQueryWrapper();
|
|
|
|
|
queryWrapper.orderByDesc(DfOrder::getSubmitTime);
|
|
|
|
|
condition(queryWrapper, dfOrder);
|
|
|
|
|
boolean admin = SecurityUtils.isAdmin(SecurityUtils.getUserId());
|
|
|
|
|
if (!admin) {
|
|
|
|
|
SysUser byId = userService.getById(SecurityUtils.getUserId());
|
|
|
|
|
if ("jj".equals(byId.getUserType())) {
|
|
|
|
|
queryWrapper.eq(DfOrder::getUserId,SecurityUtils.getUserId());
|
|
|
|
|
queryWrapper.eq(DfOrder::getBrokerId, SecurityUtils.getUserId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
List<DfOrder> list = dfOrderService.list(queryWrapper);
|
|
|
|
|
List<DfOrder> dfOrders = setOrderList(list);
|
|
|
|
|
if (StringUtils.isNotEmpty(dfOrder.getUserName())) {
|
|
|
|
|
dfOrders = dfOrders.stream()
|
|
|
|
|
.filter(info -> info.getUserName() != null && info.getUserName().contains(dfOrder.getUserName()))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isNotEmpty(dfOrder.getBrokerName())) {
|
|
|
|
|
dfOrders = dfOrders.stream()
|
|
|
|
|
.filter(info -> info.getBrokerName() != null && info.getBrokerName().contains(dfOrder.getBrokerName()))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isNotEmpty(dfOrder.getPhone())) {
|
|
|
|
|
dfOrders = dfOrders.stream()
|
|
|
|
|
.filter(info -> info.getPhone() != null && info.getPhone().contains(dfOrder.getPhone()))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
Integer start = (pageNum - 1) * pageSize;
|
|
|
|
|
List<DfOrder> result = dfOrders.stream()
|
|
|
|
|
.skip(start)
|
|
|
|
|
.limit(pageSize)
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
TableDataInfo data = getDataTable(result);
|
|
|
|
|
data.setTotal(dfOrders.size());
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<DfOrder> setOrderList(List<DfOrder> list) {
|
|
|
|
|
List<SysUser> userList = userService.list();
|
|
|
|
|
List<DfBroker> brokerList = dfBrokerService.list();
|
|
|
|
|
// 将用户列表转换为 Map,以 userId 为键,userName 为值
|
|
|
|
|
Map<Long, String> userIdToNameMap = userList.stream()
|
|
|
|
|
List<DfBizClue> clueList = dfBizClueService.list(new LambdaQueryWrapper<DfBizClue>().orderByDesc(DfBizClue::getCreateTime));
|
|
|
|
|
Map<String, String> userIdToNameMap = clueList.stream()
|
|
|
|
|
.filter(clue -> clue.getOrderId() != null && clue.getNickName() != null)
|
|
|
|
|
.collect(Collectors.toMap(
|
|
|
|
|
DfBizClue::getOrderId,
|
|
|
|
|
DfBizClue::getNickName,
|
|
|
|
|
(existingValue, newValue) -> existingValue));
|
|
|
|
|
Map<String, String> orderIdToPhoneMap = clueList.stream()
|
|
|
|
|
.filter(clue -> clue.getOrderId() != null && clue.getPhone() != null)
|
|
|
|
|
.collect(Collectors.toMap(
|
|
|
|
|
DfBizClue::getOrderId,
|
|
|
|
|
DfBizClue::getPhone,
|
|
|
|
|
(existingValue, newValue) -> existingValue));
|
|
|
|
|
Map<Long, String> userIdToNameMapVo = userList.stream()
|
|
|
|
|
.collect(Collectors.toMap(SysUser::getUserId, SysUser::getUserName));
|
|
|
|
|
Map<Long, String> userIdToPhoneMap = userList.stream()
|
|
|
|
|
.collect(Collectors.toMap(SysUser::getUserId, SysUser::getPhonenumber));
|
|
|
|
|
Map<Long, String> brokerToNameMap = brokerList.stream()
|
|
|
|
|
.collect(Collectors.toMap(DfBroker::getId, DfBroker::getBrokerName));
|
|
|
|
|
list.forEach(order -> {
|
|
|
|
|
String userName = userIdToNameMap.get(order.getUserId());
|
|
|
|
|
String brokerName = brokerToNameMap.get(order.getBrokerId());
|
|
|
|
|
String phone = userIdToPhoneMap.get(order.getUserId());
|
|
|
|
|
String userName = userIdToNameMap.get(order.getId().toString());
|
|
|
|
|
String userJJName = userIdToNameMapVo.get(order.getBrokerId());
|
|
|
|
|
String phone = orderIdToPhoneMap.get(order.getId().toString());
|
|
|
|
|
if (null != userName) {
|
|
|
|
|
order.setUserName(userName);
|
|
|
|
|
}
|
|
|
|
|
if (null != brokerName) {
|
|
|
|
|
order.setBrokerName(brokerName);
|
|
|
|
|
if (null != userJJName) {
|
|
|
|
|
order.setBrokerName(userJJName);
|
|
|
|
|
}
|
|
|
|
|
if (null != phone) {
|
|
|
|
|
order.setPhone(phone);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return getDataTable(list);
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -127,41 +170,41 @@ public class DfOrderController extends BaseController {
|
|
|
|
|
@PostMapping("/export")
|
|
|
|
|
public void export(HttpServletResponse response, DfOrder dfOrder) {
|
|
|
|
|
LambdaQueryWrapper<DfOrder> queryWrapper = new LambdaQueryWrapper();
|
|
|
|
|
queryWrapper.orderByDesc(DfOrder::getSubmitTime);
|
|
|
|
|
condition(queryWrapper, dfOrder);
|
|
|
|
|
List<DfOrder> list = dfOrderService.list(queryWrapper);
|
|
|
|
|
List<SysUser> userList = userService.list();
|
|
|
|
|
List<DfBroker> brokerList = dfBrokerService.list();
|
|
|
|
|
// 将用户列表转换为 Map,以 userId 为键,userName 为值
|
|
|
|
|
Map<Long, String> userIdToNameMap = userList.stream()
|
|
|
|
|
.collect(Collectors.toMap(SysUser::getUserId, SysUser::getUserName));
|
|
|
|
|
Map<Long, String> brokerToNameMap = brokerList.stream()
|
|
|
|
|
.collect(Collectors.toMap(DfBroker::getId, DfBroker::getBrokerName));
|
|
|
|
|
list.forEach(order -> {
|
|
|
|
|
String userName = userIdToNameMap.get(order.getUserId());
|
|
|
|
|
String brokerName = brokerToNameMap.get(order.getBrokerId());
|
|
|
|
|
if (userName != null) {
|
|
|
|
|
order.setUserName(userName);
|
|
|
|
|
boolean admin = SecurityUtils.isAdmin(SecurityUtils.getUserId());
|
|
|
|
|
if (!admin) {
|
|
|
|
|
SysUser byId = userService.getById(SecurityUtils.getUserId());
|
|
|
|
|
if ("jj".equals(byId.getUserType())) {
|
|
|
|
|
queryWrapper.eq(DfOrder::getBrokerId, SecurityUtils.getUserId());
|
|
|
|
|
}
|
|
|
|
|
if (brokerName != null) {
|
|
|
|
|
order.setBrokerName(brokerName);
|
|
|
|
|
}
|
|
|
|
|
if (Validator.isNotNull(order.getStaus())) {
|
|
|
|
|
if ("0".equals(order.getStaus())) {
|
|
|
|
|
order.setStaus("未完成");
|
|
|
|
|
} else if ("1".equals(order.getStaus())) {
|
|
|
|
|
order.setStaus("已完成");
|
|
|
|
|
List<DfOrder> list = dfOrderService.list(queryWrapper);
|
|
|
|
|
List<DfOrder> dfOrders = setOrderList(list);
|
|
|
|
|
dfOrders.forEach(order -> {
|
|
|
|
|
String isFirst = order.getIsFirst();
|
|
|
|
|
if (StringUtils.isNotEmpty(isFirst)) {
|
|
|
|
|
String isFirstDisplay = isFirst.equals("1") ? "是" : "否";
|
|
|
|
|
order.setIsFirst(isFirstDisplay);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
if (StringUtils.isNotEmpty(dfOrder.getUserName())) {
|
|
|
|
|
dfOrders = dfOrders.stream()
|
|
|
|
|
.filter(info -> info.getUserName() != null && info.getUserName().contains(dfOrder.getUserName()))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
if (Validator.isNotNull(order.getIsFirst())) {
|
|
|
|
|
if ("0".equals(order.getIsFirst())) {
|
|
|
|
|
order.setIsFirst("否");
|
|
|
|
|
} else if ("1".equals(order.getIsFirst())) {
|
|
|
|
|
order.setIsFirst("是");
|
|
|
|
|
if (StringUtils.isNotEmpty(dfOrder.getBrokerName())) {
|
|
|
|
|
dfOrders = dfOrders.stream()
|
|
|
|
|
.filter(info -> info.getBrokerName() != null && info.getBrokerName().contains(dfOrder.getBrokerName()))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isNotEmpty(dfOrder.getPhone())) {
|
|
|
|
|
dfOrders = dfOrders.stream()
|
|
|
|
|
.filter(info -> info.getPhone() != null && info.getPhone().contains(dfOrder.getPhone()))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
ExcelUtil<DfOrder> util = new ExcelUtil<DfOrder>(DfOrder.class);
|
|
|
|
|
util.exportExcel(response, list, "客户订单数据");
|
|
|
|
|
util.exportExcel(response, dfOrders, "客户订单数据");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -170,7 +213,37 @@ public class DfOrderController extends BaseController {
|
|
|
|
|
@ApiOperation("获取客户订单详细信息")
|
|
|
|
|
@GetMapping(value = "/{id}")
|
|
|
|
|
public AjaxResult getInfo(@PathVariable("id") Long id) {
|
|
|
|
|
return success(dfOrderService.getById(id));
|
|
|
|
|
DfOrder byId = dfOrderService.getById(id);
|
|
|
|
|
List<SysUser> userList = userService.list();
|
|
|
|
|
List<DfBizClue> clueList = dfBizClueService.list(new LambdaQueryWrapper<DfBizClue>().orderByDesc(DfBizClue::getCreateTime));
|
|
|
|
|
// 将用户列表转换为 Map,以 userId 为键,userName 为值
|
|
|
|
|
Map<String, String> userIdToNameMap = clueList.stream()
|
|
|
|
|
.filter(clue -> clue.getOrderId() != null && clue.getNickName() != null)
|
|
|
|
|
.collect(Collectors.toMap(
|
|
|
|
|
DfBizClue::getOrderId, // Key mapper
|
|
|
|
|
DfBizClue::getNickName, // Value mapper
|
|
|
|
|
(existingValue, newValue) -> existingValue)); // Merge function (keep existing value)
|
|
|
|
|
Map<String, String> orderIdToPhoneMap = clueList.stream()
|
|
|
|
|
.filter(clue -> clue.getOrderId() != null && clue.getPhone() != null)
|
|
|
|
|
.collect(Collectors.toMap(
|
|
|
|
|
DfBizClue::getOrderId, // Key mapper
|
|
|
|
|
DfBizClue::getPhone, // Value mapper
|
|
|
|
|
(existingValue, newValue) -> existingValue)); // Merge function (keep existing value)
|
|
|
|
|
Map<Long, String> userIdToNameMapVo = userList.stream()
|
|
|
|
|
.collect(Collectors.toMap(SysUser::getUserId, SysUser::getUserName));
|
|
|
|
|
String userName = userIdToNameMap.get(byId.getId().toString());
|
|
|
|
|
String userJJName = userIdToNameMapVo.get(byId.getBrokerId());
|
|
|
|
|
String phone = orderIdToPhoneMap.get(byId.getId().toString());
|
|
|
|
|
if (null != userName) {
|
|
|
|
|
byId.setUserName(userName);
|
|
|
|
|
}
|
|
|
|
|
if (null != userJJName) {
|
|
|
|
|
byId.setBrokerName(userJJName);
|
|
|
|
|
}
|
|
|
|
|
if (null != phone) {
|
|
|
|
|
byId.setPhone(phone);
|
|
|
|
|
}
|
|
|
|
|
return success(byId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -184,23 +257,35 @@ public class DfOrderController extends BaseController {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增客户订单
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
@ApiOperation("新增客户订单")
|
|
|
|
|
@PostMapping("/visitorAdd")
|
|
|
|
|
@Anonymous
|
|
|
|
|
public AjaxResult visitorAdd(DfOrder dfOrder) {
|
|
|
|
|
public AjaxResult visitorAdd(@RequestBody DfOrder dfOrder) {
|
|
|
|
|
SysUser sysUser = sysUserMapper.selectById(dfOrder.getShareUser());
|
|
|
|
|
if (sysUser == null) {
|
|
|
|
|
return AjaxResult.warn("链接有误");
|
|
|
|
|
}
|
|
|
|
|
List<Long> productIdsByBrokerId = dfBrokerService.getProductIdsByBrokerIdByUserId(Long.valueOf(dfOrder.getShareUser()));
|
|
|
|
|
Long productId = Long.valueOf(dfOrder.getProductId());
|
|
|
|
|
if (!productIdsByBrokerId.contains(productId)) {
|
|
|
|
|
return AjaxResult.warn("链接有误");
|
|
|
|
|
}
|
|
|
|
|
Date date = new Date();
|
|
|
|
|
dfOrder.setCreateTimeVo(date);
|
|
|
|
|
String billNumber = dfOrderService.getBillNumber("RK");
|
|
|
|
|
dfOrder.setOrderNo(billNumber);
|
|
|
|
|
dfOrder.setTenantId(0L);
|
|
|
|
|
dfOrderMapper.insertOrder(dfOrder);
|
|
|
|
|
List<DfOrder> dfOrders = dfOrderService.list(new LambdaQueryWrapper<DfOrder>().eq(DfOrder::getOrderNo, dfOrder.getOrderNo())
|
|
|
|
|
.eq(DfOrder::getUserId, dfOrder.getUserId())
|
|
|
|
|
List<DfOrder> dfOrders = dfOrderService.list(new LambdaQueryWrapper<DfOrder>().eq(DfOrder::getOrderNo, billNumber)
|
|
|
|
|
.orderByDesc(DfOrder::getCreateTime));
|
|
|
|
|
if (Validator.isNotEmpty(dfOrder.getShareUser())) {
|
|
|
|
|
List<DfBizClue> list = dfBizClueService.list(new LambdaQueryWrapper<DfBizClue>().eq(DfBizClue::getShareUser, dfOrder.getShareUser())
|
|
|
|
|
.isNull(DfBizClue::getOrderId));
|
|
|
|
|
for (DfBizClue clue : list) {
|
|
|
|
|
clue.setOrderId(dfOrders.get(0).getId().toString());
|
|
|
|
|
clue.setPhone(dfOrder.getPhone());
|
|
|
|
|
clue.setNickName(dfOrder.getUserName());
|
|
|
|
|
dfBizClueMapper.updateClue(clue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -209,6 +294,8 @@ public class DfOrderController extends BaseController {
|
|
|
|
|
.isNull(DfBizClue::getOrderId));
|
|
|
|
|
for (DfBizClue clue : list) {
|
|
|
|
|
clue.setOrderId(dfOrders.get(0).getId().toString());
|
|
|
|
|
clue.setPhone(dfOrder.getPhone());
|
|
|
|
|
clue.setNickName(dfOrder.getUserName());
|
|
|
|
|
dfBizClueMapper.updateClue(clue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -244,6 +331,7 @@ public class DfOrderController extends BaseController {
|
|
|
|
|
String billNumber = dfOrderService.getBillNumber(billPrefix);
|
|
|
|
|
return AjaxResult.success("获取成功", billNumber);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 条件设置
|
|
|
|
|
*/
|
|
|
|
|