优化订单查询
This commit is contained in:
@@ -90,6 +90,8 @@ public class Equipment implements Serializable {
|
|||||||
|
|
||||||
@ApiModelProperty(value = "用户ID")
|
@ApiModelProperty(value = "用户ID")
|
||||||
private Integer userId;
|
private Integer userId;
|
||||||
|
@ApiModelProperty(value = "投资人ID")
|
||||||
|
private Integer touziUserId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "排序(数字越小越靠前)")
|
@ApiModelProperty(value = "排序(数字越小越靠前)")
|
||||||
private Integer sortNumber;
|
private Integer sortNumber;
|
||||||
@@ -145,4 +147,8 @@ public class Equipment implements Serializable {
|
|||||||
@ApiModelProperty(value = "绑定的用户")
|
@ApiModelProperty(value = "绑定的用户")
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private User user;
|
private User user;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "绑定的用户")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private User touziUser;
|
||||||
}
|
}
|
||||||
|
|||||||
141
src/main/java/com/gxwebsoft/apps/task/OrderTask.java
Normal file
141
src/main/java/com/gxwebsoft/apps/task/OrderTask.java
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
package com.gxwebsoft.apps.task;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateField;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||||
|
import com.baomidou.mybatisplus.annotation.SqlParser;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.gxwebsoft.apps.entity.Equipment;
|
||||||
|
import com.gxwebsoft.apps.service.EquipmentGoodsService;
|
||||||
|
import com.gxwebsoft.apps.service.EquipmentService;
|
||||||
|
import com.gxwebsoft.common.core.config.MybatisPlusConfig;
|
||||||
|
import com.gxwebsoft.common.system.entity.User;
|
||||||
|
import com.gxwebsoft.common.system.service.UserService;
|
||||||
|
import com.gxwebsoft.love.entity.UserPlanLog;
|
||||||
|
import com.gxwebsoft.love.param.UserPlanLogParam;
|
||||||
|
import com.gxwebsoft.shop.entity.Order;
|
||||||
|
import com.gxwebsoft.shop.param.OrderParam;
|
||||||
|
import com.gxwebsoft.shop.service.OrderService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static com.gxwebsoft.common.core.constants.OrderConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定时任务:订单处理
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class OrderTask {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private OrderService orderService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private EquipmentService equipmentService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private EquipmentGoodsService goodsService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除30分钟未下单的订单
|
||||||
|
*/
|
||||||
|
@Scheduled(cron="0 0/30 * * * ? ")
|
||||||
|
public void removeTimeoutOrder() {
|
||||||
|
Date newDate = DateUtil.offset(DateUtil.date(), DateField.MINUTE, -30);
|
||||||
|
LambdaQueryWrapper<Order> wrapper = Wrappers.lambdaQuery(Order.class)
|
||||||
|
.eq(Order::getPayStatus, PAY_STATUS_NO_PAY)
|
||||||
|
.lt(Order::getCreateTime, newDate);
|
||||||
|
|
||||||
|
boolean remove = orderService.remove(wrapper);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算分润
|
||||||
|
*/
|
||||||
|
@Scheduled(cron="0 0/30 * * * ? ")
|
||||||
|
@Transactional
|
||||||
|
public void CalcProfit() {
|
||||||
|
log.info("开始计算分润");
|
||||||
|
// 查询所有未结算订单
|
||||||
|
LambdaQueryWrapper<Order> wrapper = Wrappers.lambdaQuery(Order.class)
|
||||||
|
.eq(Order::getIsSettled, ORDER_SETTLED_NO)
|
||||||
|
.eq(Order::getPayStatus, PAY_STATUS_SUCCESS)
|
||||||
|
.eq(Order::getOrderStatus, ORDER_STATUS_COMPLETED);
|
||||||
|
|
||||||
|
List<Order> orderList = orderService.list(wrapper);
|
||||||
|
|
||||||
|
// 查询所有关联的设备
|
||||||
|
Set<Integer> equipmentIds = new HashSet<>();
|
||||||
|
Set<String> tuijianUserPhones = new HashSet<>();
|
||||||
|
|
||||||
|
for (Order order : orderList) {
|
||||||
|
equipmentIds.add(order.getEquipmentId());
|
||||||
|
if(order.getDealerPhone() != null){
|
||||||
|
tuijianUserPhones.add(order.getDealerPhone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<Equipment> equipmentList = equipmentService.list(Wrappers.lambdaQuery(Equipment.class).in(Equipment::getEquipmentId, equipmentIds));
|
||||||
|
Map<Integer, Equipment> equipmentMap = new HashMap<>();
|
||||||
|
Set<Integer> touziUserIds = new HashSet<>();
|
||||||
|
for (Equipment equipment : equipmentList) {
|
||||||
|
equipmentMap.put(equipment.getEquipmentId(),equipment);
|
||||||
|
if(equipment.getTouziUserId() != null) {
|
||||||
|
touziUserIds.add(equipment.getTouziUserId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询所有投资人
|
||||||
|
Map<Integer, User> touziUserMap = new HashMap<>();
|
||||||
|
if(CollectionUtils.isNotEmpty(touziUserIds)){
|
||||||
|
List<User> list = userService.list(Wrappers.lambdaQuery(User.class).in(User::getUserId, touziUserIds));
|
||||||
|
for (User user : list) {
|
||||||
|
touziUserMap.put(user.getUserId(), user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询所有推荐人
|
||||||
|
Map<String, User> tuijianUserMap = new HashMap<>();
|
||||||
|
if(CollectionUtils.isNotEmpty(tuijianUserPhones)){
|
||||||
|
List<User> tuijianUserList = userService.list(Wrappers.lambdaQuery(User.class).in(User::getPhone, tuijianUserPhones));
|
||||||
|
for (User user : tuijianUserList) {
|
||||||
|
tuijianUserMap.put(user.getPhone(), user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 开始结算
|
||||||
|
for (Order order : orderList) {
|
||||||
|
// 计算投资人收益
|
||||||
|
Equipment equipment = equipmentMap.get(order.getEquipment());
|
||||||
|
User touziUser = touziUserMap.get(equipment.getTouziUserId());
|
||||||
|
if(touziUser != null){
|
||||||
|
|
||||||
|
}
|
||||||
|
//获取推荐人身份、 计算推荐人收益
|
||||||
|
User tuijianUser = tuijianUserMap.get(order.getDealerPhone());
|
||||||
|
if(tuijianUser != null){
|
||||||
|
|
||||||
|
}
|
||||||
|
// 计算门店收益
|
||||||
|
|
||||||
|
// 计算区域经理收益
|
||||||
|
System.out.println(equipment);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -38,9 +38,10 @@ public class MybatisPlusConfig {
|
|||||||
// String device_id = request.getHeader("device-id");
|
// String device_id = request.getHeader("device-id");
|
||||||
// System.out.println("device_id = " + device_id);
|
// System.out.println("device_id = " + device_id);
|
||||||
// 从设备请求头拿ID
|
// 从设备请求头拿ID
|
||||||
|
try {
|
||||||
String DeviceID = request.getHeader("Device-ID");
|
String DeviceID = request.getHeader("Device-ID");
|
||||||
if (StrUtil.isNotBlank(DeviceID)) {
|
if (StrUtil.isNotBlank(DeviceID)) {
|
||||||
return new LongValue(10048);
|
return new LongValue(6);
|
||||||
}
|
}
|
||||||
// 从请求头拿ID
|
// 从请求头拿ID
|
||||||
final String tenantId = request.getHeader("tenantId");
|
final String tenantId = request.getHeader("tenantId");
|
||||||
@@ -48,6 +49,11 @@ public class MybatisPlusConfig {
|
|||||||
return new LongValue(tenantId);
|
return new LongValue(tenantId);
|
||||||
}
|
}
|
||||||
return getLoginUserTenantId();
|
return getLoginUserTenantId();
|
||||||
|
|
||||||
|
}catch (Exception e){
|
||||||
|
return new LongValue(6);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ public class OrderConstants {
|
|||||||
// 收货状态
|
// 收货状态
|
||||||
public static final Integer RECEIPT_STATUS_NO = 10; // 未收货
|
public static final Integer RECEIPT_STATUS_NO = 10; // 未收货
|
||||||
public static final Integer RECEIPT_STATUS_YES = 20; // 已收货
|
public static final Integer RECEIPT_STATUS_YES = 20; // 已收货
|
||||||
|
public static final Integer RECEIPT_STATUS_APPLY = 21; // 申请
|
||||||
|
public static final Integer RECEIPT_STATUS_reject = 22; // 已驳回退租
|
||||||
public static final Integer RECEIPT_STATUS_RETURN = 30; // 已退货
|
public static final Integer RECEIPT_STATUS_RETURN = 30; // 已退货
|
||||||
|
|
||||||
// 订单状态
|
// 订单状态
|
||||||
@@ -33,5 +35,4 @@ public class OrderConstants {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class AlipayConfigUtil {
|
|||||||
*/
|
*/
|
||||||
public JSONObject payment(Integer tenantId) {
|
public JSONObject payment(Integer tenantId) {
|
||||||
System.out.println("tenantId = " + tenantId);
|
System.out.println("tenantId = " + tenantId);
|
||||||
String key = "cache".concat(tenantId.toString()).concat(":setting:payment");
|
String key = "setting:payment:" + tenantId;
|
||||||
System.out.println("key = " + key);
|
System.out.println("key = " + key);
|
||||||
String cache = stringRedisTemplate.opsForValue().get(key);
|
String cache = stringRedisTemplate.opsForValue().get(key);
|
||||||
if (cache == null) {
|
if (cache == null) {
|
||||||
|
|||||||
@@ -316,13 +316,18 @@ public class OpenEquipmentController extends BaseController {
|
|||||||
@ApiModelProperty("退租")
|
@ApiModelProperty("退租")
|
||||||
@PostMapping("/rentingOut")
|
@PostMapping("/rentingOut")
|
||||||
public ApiResult<?> rentingOut(@RequestBody Order order) {
|
public ApiResult<?> rentingOut(@RequestBody Order order) {
|
||||||
|
|
||||||
// 验证签名
|
// 验证签名
|
||||||
isCheckSign();
|
isCheckSign();
|
||||||
final int count = orderRefundService.count(new LambdaQueryWrapper<OrderRefund>().eq(OrderRefund::getOrderId, order.getOrderId()));
|
OrderRefund refund = orderRefundService.getOne(new LambdaQueryWrapper<OrderRefund>()
|
||||||
if(count > 0){
|
.eq(OrderRefund::getOrderId, order.getOrderId()));
|
||||||
|
|
||||||
|
if (refund != null) {
|
||||||
|
if (refund.getAuditStatus() != 30) {
|
||||||
return fail("申请成功,请等待客服人员审核");
|
return fail("申请成功,请等待客服人员审核");
|
||||||
}
|
}
|
||||||
final OrderRefund refund = new OrderRefund();
|
}else {
|
||||||
|
refund = new OrderRefund();
|
||||||
refund.setOrderId(order.getOrderId());
|
refund.setOrderId(order.getOrderId());
|
||||||
refund.setOrderGoodsId(order.getGoodsId());
|
refund.setOrderGoodsId(order.getGoodsId());
|
||||||
refund.setUserId(getLoginUserId());
|
refund.setUserId(getLoginUserId());
|
||||||
@@ -330,10 +335,15 @@ public class OpenEquipmentController extends BaseController {
|
|||||||
refund.setApplyDesc("申请退租");
|
refund.setApplyDesc("申请退租");
|
||||||
refund.setRefundMoney(new BigDecimal(0));
|
refund.setRefundMoney(new BigDecimal(0));
|
||||||
refund.setMerchantCode(order.getMerchantCode());
|
refund.setMerchantCode(order.getMerchantCode());
|
||||||
if (orderRefundService.save(refund)) {
|
|
||||||
return success("申请成功,请等待客服人员审核");
|
|
||||||
}
|
}
|
||||||
return fail("退租失败");
|
refund.setAuditStatus(10);
|
||||||
|
orderRefundService.saveOrUpdate(refund);
|
||||||
|
// 更新订单状态
|
||||||
|
Order updateOrder = new Order();
|
||||||
|
updateOrder.setReceiptStatus(RECEIPT_STATUS_APPLY);
|
||||||
|
updateOrder.setOrderId(order.getOrderId());
|
||||||
|
orderService.updateById(updateOrder);
|
||||||
|
return success("申请成功,请等待客服人员审核");
|
||||||
}
|
}
|
||||||
|
|
||||||
// @ApiModelProperty("退租")
|
// @ApiModelProperty("退租")
|
||||||
|
|||||||
@@ -5,7 +5,10 @@ import cn.hutool.core.io.FileUtil;
|
|||||||
import cn.hutool.extra.qrcode.QrCodeUtil;
|
import cn.hutool.extra.qrcode.QrCodeUtil;
|
||||||
import cn.hutool.extra.qrcode.QrConfig;
|
import cn.hutool.extra.qrcode.QrConfig;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.gxwebsoft.apps.entity.BcAgent;
|
import com.gxwebsoft.apps.entity.BcAgent;
|
||||||
|
import com.gxwebsoft.apps.entity.Equipment;
|
||||||
import com.gxwebsoft.apps.entity.EquipmentGoods;
|
import com.gxwebsoft.apps.entity.EquipmentGoods;
|
||||||
import com.gxwebsoft.apps.entity.EquipmentOrderGoods;
|
import com.gxwebsoft.apps.entity.EquipmentOrderGoods;
|
||||||
import com.gxwebsoft.apps.param.BcAgentParam;
|
import com.gxwebsoft.apps.param.BcAgentParam;
|
||||||
@@ -18,6 +21,7 @@ import com.gxwebsoft.common.core.web.*;
|
|||||||
import com.gxwebsoft.common.system.entity.User;
|
import com.gxwebsoft.common.system.entity.User;
|
||||||
import com.gxwebsoft.common.system.service.UserService;
|
import com.gxwebsoft.common.system.service.UserService;
|
||||||
import com.gxwebsoft.shop.entity.Order;
|
import com.gxwebsoft.shop.entity.Order;
|
||||||
|
import com.gxwebsoft.shop.entity.OrderGoods;
|
||||||
import com.gxwebsoft.shop.entity.UserReferee;
|
import com.gxwebsoft.shop.entity.UserReferee;
|
||||||
import com.gxwebsoft.shop.param.OrderGoodsParam;
|
import com.gxwebsoft.shop.param.OrderGoodsParam;
|
||||||
import com.gxwebsoft.shop.param.OrderParam;
|
import com.gxwebsoft.shop.param.OrderParam;
|
||||||
@@ -34,7 +38,9 @@ import javax.imageio.ImageIO;
|
|||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -81,13 +87,29 @@ public class OrderController extends BaseController {
|
|||||||
if (getTenantId().equals(6)) {
|
if (getTenantId().equals(6)) {
|
||||||
// 查询订单的关联商品
|
// 查询订单的关联商品
|
||||||
List<Order> list = orderService.listRel(param);
|
List<Order> list = orderService.listRel(param);
|
||||||
|
Set<Integer> equipmentIds = new HashSet<>();
|
||||||
|
Set<Integer> orderIds = new HashSet<>();
|
||||||
|
for (Order order : list) {
|
||||||
|
equipmentIds.add(order.getEquipmentId());
|
||||||
|
orderIds.add(order.getOrderId());
|
||||||
|
}
|
||||||
|
List<Equipment> equipmentList = equipmentService.list(Wrappers.lambdaQuery(Equipment.class).in(Equipment::getEquipmentId, equipmentIds));
|
||||||
|
List<EquipmentOrderGoods> equipmentOrderGoodsList = equipmentOrderGoodsService.list(Wrappers.lambdaQuery(EquipmentOrderGoods.class).in(EquipmentOrderGoods::getOrderId, orderIds));
|
||||||
|
Map<Integer, List<Equipment>> equipmentCollect = equipmentList.stream().collect(Collectors.groupingBy(Equipment::getEquipmentId));
|
||||||
|
Map<Integer, List<EquipmentOrderGoods>> equipmentOrderGoodsCollect = equipmentOrderGoodsList.stream().collect(Collectors.groupingBy(EquipmentOrderGoods::getOrderId));
|
||||||
|
|
||||||
// 查询订单的设备
|
// 查询订单的设备
|
||||||
for (Order order : list) {
|
for (Order order : list) {
|
||||||
final OrderGoodsParam orderGoodsParam = new OrderGoodsParam();
|
final OrderGoodsParam orderGoodsParam = new OrderGoodsParam();
|
||||||
orderGoodsParam.setOrderId(order.getOrderId());
|
orderGoodsParam.setOrderId(order.getOrderId());
|
||||||
order.setGoodsList(orderGoodsService.listRel(orderGoodsParam));
|
List<EquipmentOrderGoods> equipmentOrderGoods = equipmentOrderGoodsCollect.get(order.getOrderId());
|
||||||
order.setEquipmentGoods(equipmentOrderGoodsService.getOne(new LambdaQueryWrapper<EquipmentOrderGoods>().eq(EquipmentOrderGoods::getOrderId,order.getOrderId())));
|
if(CollectionUtils.isNotEmpty(equipmentOrderGoods)){
|
||||||
order.setEquipment(equipmentService.getById(order.getEquipmentId()));
|
order.setEquipmentGoods(equipmentOrderGoods.get(0));
|
||||||
|
}
|
||||||
|
List<Equipment> equipment = equipmentCollect.get(order.getEquipmentId());
|
||||||
|
if(CollectionUtils.isNotEmpty(equipment)){
|
||||||
|
order.setEquipment(equipment.get(0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
PageParam<Order, OrderParam> page = new PageParam<>(param);
|
PageParam<Order, OrderParam> page = new PageParam<>(param);
|
||||||
return success(new PageResult<>(list, page.getTotal()));
|
return success(new PageResult<>(list, page.getTotal()));
|
||||||
|
|||||||
@@ -174,6 +174,9 @@ public class Order implements Serializable {
|
|||||||
@ApiModelProperty(value = "是否临时报餐")
|
@ApiModelProperty(value = "是否临时报餐")
|
||||||
private Integer isTemporary;
|
private Integer isTemporary;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "推荐人手机号")
|
||||||
|
private String dealerPhone;
|
||||||
|
|
||||||
@ApiModelProperty(value = "用户ID")
|
@ApiModelProperty(value = "用户ID")
|
||||||
private Integer userId;
|
private Integer userId;
|
||||||
|
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ spring:
|
|||||||
datasource:
|
datasource:
|
||||||
url: jdbc:mysql://47.119.165.234:3308/open_ws?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
|
url: jdbc:mysql://47.119.165.234:3308/open_ws?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
|
||||||
username: open_ws
|
username: open_ws
|
||||||
password: A6k4GHifNWWhjcde
|
# password: A6k4GHifNWWhjcde
|
||||||
# url: jdbc:mysql://47.119.165.234:3308/open_ws?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
|
# url: jdbc:mysql://47.119.165.234:3308/open_ws?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
|
||||||
# username: open_ws
|
# username: open_ws
|
||||||
# password: DzAmFiZfPJ6ZGApm
|
password: DzAmFiZfPJ6ZGApm
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user