优化订单查询

This commit is contained in:
weicw
2023-08-08 17:20:57 +08:00
parent 2ca82fedb1
commit 44cfec9028
9 changed files with 483 additions and 294 deletions

View File

@@ -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;
} }

View 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);
}
}
}

View File

@@ -38,16 +38,22 @@ 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
String DeviceID = request.getHeader("Device-ID"); try {
if (StrUtil.isNotBlank(DeviceID)) { String DeviceID = request.getHeader("Device-ID");
return new LongValue(10048); if (StrUtil.isNotBlank(DeviceID)) {
} return new LongValue(6);
// 从请求头拿ID }
final String tenantId = request.getHeader("tenantId"); // 从请求头拿ID
if(tenantId != null){ final String tenantId = request.getHeader("tenantId");
return new LongValue(tenantId); if(tenantId != null){
} return new LongValue(tenantId);
return getLoginUserTenantId(); }
return getLoginUserTenantId();
}catch (Exception e){
return new LongValue(6);
}
} }
@Override @Override

View File

@@ -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 {
} }

View File

@@ -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) {

View File

@@ -66,7 +66,7 @@ public class OpenEquipmentController extends BaseController {
PageParam<Equipment, EquipmentParam> page = new PageParam<>(param); PageParam<Equipment, EquipmentParam> page = new PageParam<>(param);
page.setDefaultOrder("create_time desc"); page.setDefaultOrder("create_time desc");
if (getMerchantCode() != null) { if (getMerchantCode() != null) {
param.setMerchantCode(getMerchantCode()); param.setMerchantCode(getMerchantCode());
} }
return success(equipmentService.pageRel(param)); return success(equipmentService.pageRel(param));
} }
@@ -101,18 +101,18 @@ public class OpenEquipmentController extends BaseController {
// 记录当前登录用户id、租户id // 记录当前登录用户id、租户id
User loginUser = getLoginUser(); User loginUser = getLoginUser();
if (loginUser != null && getMerchantCode() != null) { if (loginUser != null && getMerchantCode() != null) {
equipment.setMerchantCode(getMerchantCode()); equipment.setMerchantCode(getMerchantCode());
} }
if (equipmentService.count(new LambdaQueryWrapper<Equipment>() if (equipmentService.count(new LambdaQueryWrapper<Equipment>()
.eq(Equipment::getEquipmentCode, equipment.getEquipmentCode())) > 0) { .eq(Equipment::getEquipmentCode, equipment.getEquipmentCode())) > 0) {
return fail("设备编号已存在"); return fail("设备编号已存在");
} }
if (equipmentService.save(equipment)) { if (equipmentService.save(equipment)) {
// 生成二维码 // 生成二维码
String qrcode = createQrcode(equipment); String qrcode = createQrcode(equipment);
equipment.setQrcode(qrcode); equipment.setQrcode(qrcode);
equipmentService.saveOrUpdate(equipment); equipmentService.saveOrUpdate(equipment);
return success("添加成功"); return success("添加成功");
} }
return fail("添加失败"); return fail("添加失败");
} }
@@ -123,10 +123,10 @@ public class OpenEquipmentController extends BaseController {
@PutMapping() @PutMapping()
public ApiResult<?> update(@RequestBody Equipment equipment) throws AlipayApiException { public ApiResult<?> update(@RequestBody Equipment equipment) throws AlipayApiException {
if (equipmentService.updateById(equipment)) { if (equipmentService.updateById(equipment)) {
// 生成二维码 // 生成二维码
String qrcode = createQrcode(equipment); String qrcode = createQrcode(equipment);
equipment.setQrcode(qrcode); equipment.setQrcode(qrcode);
equipmentService.saveOrUpdate(equipment); equipmentService.saveOrUpdate(equipment);
return success("修改成功"); return success("修改成功");
} }
return fail("修改失败"); return fail("修改失败");
@@ -177,163 +177,173 @@ public class OpenEquipmentController extends BaseController {
} }
// 生成支付宝小程序码 // 生成支付宝小程序码
private String createQrcode(Equipment equipment) throws AlipayApiException{ private String createQrcode(Equipment equipment) throws AlipayApiException {
// 实例化客户端 // 实例化客户端
DefaultAlipayClient alipayClient = alipayConfig.alipayClient(getTenantId()); DefaultAlipayClient alipayClient = alipayConfig.alipayClient(getTenantId());
AlipayOpenAppQrcodeCreateRequest request = new AlipayOpenAppQrcodeCreateRequest(); AlipayOpenAppQrcodeCreateRequest request = new AlipayOpenAppQrcodeCreateRequest();
AlipayOpenAppQrcodeCreateModel model = new AlipayOpenAppQrcodeCreateModel(); AlipayOpenAppQrcodeCreateModel model = new AlipayOpenAppQrcodeCreateModel();
model.setUrlParam("pages/checkout/checkout"); model.setUrlParam("pages/checkout/checkout");
model.setQueryParam("equipmentId=".concat(equipment.getEquipmentId().toString()).concat("&equipmentCode=").concat(equipment.getEquipmentCode())); model.setQueryParam("equipmentId=".concat(equipment.getEquipmentId().toString()).concat("&equipmentCode=").concat(equipment.getEquipmentCode()));
model.setDescribe("扫码租赁电池"); model.setDescribe("扫码租赁电池");
request.setBizModel(model); request.setBizModel(model);
AlipayOpenAppQrcodeCreateResponse response = alipayClient.certificateExecute(request); AlipayOpenAppQrcodeCreateResponse response = alipayClient.certificateExecute(request);
System.out.println(response.getBody()); System.out.println(response.getBody());
if (response.isSuccess()) { if (response.isSuccess()) {
System.out.println("调用成功"); System.out.println("调用成功");
final JSONObject jsonObject = JSONObject.parseObject(response.getBody()); final JSONObject jsonObject = JSONObject.parseObject(response.getBody());
final String alipay_open_app_qrcode_create_response = jsonObject.getString("alipay_open_app_qrcode_create_response"); final String alipay_open_app_qrcode_create_response = jsonObject.getString("alipay_open_app_qrcode_create_response");
final JSONObject jsonObject1 = JSONObject.parseObject(alipay_open_app_qrcode_create_response); final JSONObject jsonObject1 = JSONObject.parseObject(alipay_open_app_qrcode_create_response);
return jsonObject1.getString("qr_code_url"); return jsonObject1.getString("qr_code_url");
} else { } else {
System.out.println("调用失败"); System.out.println("调用失败");
return null; return null;
} }
} }
@ApiOperation("绑定设备") @ApiOperation("绑定设备")
@PostMapping("/bind") @PostMapping("/bind")
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
public ApiResult<?> bindEquipment(@RequestBody Equipment equipment) { public ApiResult<?> bindEquipment(@RequestBody Equipment equipment) {
// 验证签名 // 验证签名
isCheckSign(); isCheckSign();
final Integer orderId = equipment.getOrderId(); final Integer orderId = equipment.getOrderId();
final String equipmentCode = equipment.getEquipmentCode(); final String equipmentCode = equipment.getEquipmentCode();
final Order order = orderService.getById(orderId); final Order order = orderService.getById(orderId);
Equipment one = equipmentService.getByEquipmentCode(equipmentCode); Equipment one = equipmentService.getByEquipmentCode(equipmentCode);
if(one == null){ if (one == null) {
return fail("设备不存在"); return fail("设备不存在");
} }
if(!one.getUserId().equals(0)){ if (!one.getUserId().equals(0)) {
return fail("该设备已被绑定"); return fail("该设备已被绑定");
} }
// 绑定设备 // 绑定设备
Equipment saveData = new Equipment(); Equipment saveData = new Equipment();
saveData.setEquipmentId(one.getEquipmentId()); saveData.setEquipmentId(one.getEquipmentId());
saveData.setUserId(getLoginUserId()); saveData.setUserId(getLoginUserId());
saveData.setOrderId(orderId); saveData.setOrderId(orderId);
if (equipmentService.updateById(saveData)) { if (equipmentService.updateById(saveData)) {
// 记录明细 // 记录明细
EquipmentRecord record = new EquipmentRecord(); EquipmentRecord record = new EquipmentRecord();
record.setEquipmentCode(one.getEquipmentCode()); record.setEquipmentCode(one.getEquipmentCode());
record.setUserId(getLoginUserId()); record.setUserId(getLoginUserId());
record.setOrderId(orderId); record.setOrderId(orderId);
record.setEventType(EVENT_TYPE_BIND); record.setEventType(EVENT_TYPE_BIND);
record.setComments("使用电池:"); record.setComments("使用电池:");
record.setMerchantCode(one.getMerchantCode()); record.setMerchantCode(one.getMerchantCode());
equipmentRecordService.save(record); equipmentRecordService.save(record);
// 订单发货 // 订单发货
order.setDeliveryStatus(DELIVERY_STATUS_YES); order.setDeliveryStatus(DELIVERY_STATUS_YES);
order.setOrderStatus(ORDER_STATUS_COMPLETED); order.setOrderStatus(ORDER_STATUS_COMPLETED);
order.setReceiptStatus(RECEIPT_STATUS_YES); order.setReceiptStatus(RECEIPT_STATUS_YES);
order.setExpirationTime(DateUtil.nextMonth()); order.setExpirationTime(DateUtil.nextMonth());
order.setEquipmentId(one.getEquipmentId()); order.setEquipmentId(one.getEquipmentId());
orderService.updateById(order); orderService.updateById(order);
return success("绑定成功"); return success("绑定成功");
} }
return fail("绑定失败"); return fail("绑定失败");
} }
@ApiOperation("更换设备") @ApiOperation("更换设备")
@PostMapping("/change") @PostMapping("/change")
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
public ApiResult<?> changeEquipment(@RequestBody Equipment equipment) { public ApiResult<?> changeEquipment(@RequestBody Equipment equipment) {
// 验证签名 // 验证签名
isCheckSign(); isCheckSign();
String equipmentCode = equipment.getEquipmentCode(); String equipmentCode = equipment.getEquipmentCode();
Integer oid = equipment.getEquipmentId(); Integer oid = equipment.getEquipmentId();
Integer orderId = equipment.getOrderId(); Integer orderId = equipment.getOrderId();
System.out.println("oid = " + oid); System.out.println("oid = " + oid);
Integer loginUserId = getLoginUserId(); Integer loginUserId = getLoginUserId();
// 新电池 // 新电池
Equipment one = equipmentService.getByEquipmentCode(equipmentCode); Equipment one = equipmentService.getByEquipmentCode(equipmentCode);
// 旧电池 // 旧电池
Equipment old = equipmentService.getById(oid); Equipment old = equipmentService.getById(oid);
// 订单信息 // 订单信息
Order order = orderService.getById(orderId); Order order = orderService.getById(orderId);
if(one == null){ if (one == null) {
return fail("设备不存在"); return fail("设备不存在");
} }
if(!one.getUserId().equals(0)){ if (!one.getUserId().equals(0)) {
return fail("该设备已被绑定"); return fail("该设备已被绑定");
} }
// 绑定新电池 // 绑定新电池
Equipment saveData = new Equipment(); Equipment saveData = new Equipment();
saveData.setEquipmentId(one.getEquipmentId()); saveData.setEquipmentId(one.getEquipmentId());
saveData.setUserId(loginUserId); saveData.setUserId(loginUserId);
saveData.setOrderId(orderId); saveData.setOrderId(orderId);
boolean b = equipmentService.updateById(saveData); boolean b = equipmentService.updateById(saveData);
// 记录新电池明细 // 记录新电池明细
EquipmentRecord record = new EquipmentRecord(); EquipmentRecord record = new EquipmentRecord();
record.setEquipmentCode(equipmentCode); record.setEquipmentCode(equipmentCode);
record.setEventType(EVENT_TYPE_BIND); record.setEventType(EVENT_TYPE_BIND);
record.setUserId(loginUserId); record.setUserId(loginUserId);
record.setOrderId(orderId); record.setOrderId(orderId);
record.setMerchantCode(one.getMerchantCode()); record.setMerchantCode(one.getMerchantCode());
equipmentRecordService.save(record); equipmentRecordService.save(record);
if (b) { if (b) {
// 解绑旧电池 // 解绑旧电池
old.setUserId(0); old.setUserId(0);
old.setMerchantCode(one.getMerchantCode()); old.setMerchantCode(one.getMerchantCode());
equipmentService.updateById(old); equipmentService.updateById(old);
// 记录明细 // 记录明细
EquipmentRecord record2 = new EquipmentRecord(); EquipmentRecord record2 = new EquipmentRecord();
record2.setEquipmentCode(old.getEquipmentCode()); record2.setEquipmentCode(old.getEquipmentCode());
record2.setUserId(loginUserId); record2.setUserId(loginUserId);
record2.setOrderId(orderId); record2.setOrderId(orderId);
record2.setEventType(EVENT_TYPE_UNBIND); record2.setEventType(EVENT_TYPE_UNBIND);
record2.setMerchantCode(one.getMerchantCode()); record2.setMerchantCode(one.getMerchantCode());
equipmentRecordService.save(record2); equipmentRecordService.save(record2);
// 更新订单 // 更新订单
order.setEquipmentId(one.getEquipmentId()); order.setEquipmentId(one.getEquipmentId());
orderService.updateById(order); orderService.updateById(order);
return success("换电成功"); return success("换电成功");
} }
return fail("换电失败"); return fail("换电失败");
} }
@ApiOperation("重置") @ApiOperation("重置")
@PostMapping("/receipt") @PostMapping("/receipt")
public ApiResult<?> receipt(@RequestBody Order order){ public ApiResult<?> receipt(@RequestBody Order order) {
// 验证签名 // 验证签名
isCheckSign(); isCheckSign();
orderService.updateById(order); orderService.updateById(order);
return success("重置成功"); return success("重置成功");
} }
@ApiModelProperty("退租") @ApiModelProperty("退租")
@PostMapping("/rentingOut") @PostMapping("/rentingOut")
public ApiResult<?> rentingOut(@RequestBody Order order){ public ApiResult<?> rentingOut(@RequestBody Order order) {
// 验证签名
isCheckSign(); // 验证签名
final int count = orderRefundService.count(new LambdaQueryWrapper<OrderRefund>().eq(OrderRefund::getOrderId, order.getOrderId())); isCheckSign();
if(count > 0){ OrderRefund refund = orderRefundService.getOne(new LambdaQueryWrapper<OrderRefund>()
return fail("申请成功,请等待客服人员审核"); .eq(OrderRefund::getOrderId, order.getOrderId()));
}
final OrderRefund refund = new OrderRefund(); if (refund != null) {
refund.setOrderId(order.getOrderId()); if (refund.getAuditStatus() != 30) {
refund.setOrderGoodsId(order.getGoodsId()); return fail("申请成功,请等待客服人员审核");
refund.setUserId(getLoginUserId()); }
refund.setType(10); }else {
refund.setApplyDesc("申请退租"); refund = new OrderRefund();
refund.setRefundMoney(new BigDecimal(0)); refund.setOrderId(order.getOrderId());
refund.setMerchantCode(order.getMerchantCode()); refund.setOrderGoodsId(order.getGoodsId());
if (orderRefundService.save(refund)) { refund.setUserId(getLoginUserId());
refund.setType(10);
refund.setApplyDesc("申请退租");
refund.setRefundMoney(new BigDecimal(0));
refund.setMerchantCode(order.getMerchantCode());
}
refund.setAuditStatus(10);
orderRefundService.saveOrUpdate(refund);
// 更新订单状态
Order updateOrder = new Order();
updateOrder.setReceiptStatus(RECEIPT_STATUS_APPLY);
updateOrder.setOrderId(order.getOrderId());
orderService.updateById(updateOrder);
return success("申请成功,请等待客服人员审核"); return success("申请成功,请等待客服人员审核");
}
return fail("退租失败");
} }
// @ApiModelProperty("退租") // @ApiModelProperty("退租")

View File

@@ -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;
@@ -75,37 +81,53 @@ public class OrderController extends BaseController {
public ApiResult<PageResult<Order>> page(OrderParam param) { public ApiResult<PageResult<Order>> page(OrderParam param) {
// 搜索条件 // 搜索条件
if (getMerchantCode() != null) { if (getMerchantCode() != null) {
param.setMerchantCode(getMerchantCode()); param.setMerchantCode(getMerchantCode());
} }
// 云芯威项目查询关联设备 // 云芯威项目查询关联设备
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<>();
for (Order order : list) { Set<Integer> orderIds = new HashSet<>();
final OrderGoodsParam orderGoodsParam = new OrderGoodsParam(); for (Order order : list) {
orderGoodsParam.setOrderId(order.getOrderId()); equipmentIds.add(order.getEquipmentId());
order.setGoodsList(orderGoodsService.listRel(orderGoodsParam)); orderIds.add(order.getOrderId());
order.setEquipmentGoods(equipmentOrderGoodsService.getOne(new LambdaQueryWrapper<EquipmentOrderGoods>().eq(EquipmentOrderGoods::getOrderId,order.getOrderId()))); }
order.setEquipment(equipmentService.getById(order.getEquipmentId())); 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));
PageParam<Order, OrderParam> page = new PageParam<>(param); Map<Integer, List<Equipment>> equipmentCollect = equipmentList.stream().collect(Collectors.groupingBy(Equipment::getEquipmentId));
return success(new PageResult<>(list, page.getTotal())); Map<Integer, List<EquipmentOrderGoods>> equipmentOrderGoodsCollect = equipmentOrderGoodsList.stream().collect(Collectors.groupingBy(EquipmentOrderGoods::getOrderId));
// 查询订单的设备
for (Order order : list) {
final OrderGoodsParam orderGoodsParam = new OrderGoodsParam();
orderGoodsParam.setOrderId(order.getOrderId());
List<EquipmentOrderGoods> equipmentOrderGoods = equipmentOrderGoodsCollect.get(order.getOrderId());
if(CollectionUtils.isNotEmpty(equipmentOrderGoods)){
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);
return success(new PageResult<>(list, page.getTotal()));
} }
// 贵港自然资源报餐 // 贵港自然资源报餐
if(getTenantId().equals(10048) && getAppId() != null){ if (getTenantId().equals(10048) && getAppId() != null) {
param.setUserId(getLoginUserId()); param.setUserId(getLoginUserId());
final Boolean agent = param.getAgent(); final Boolean agent = param.getAgent();
if (agent != null) { if (agent != null) {
final BcAgentParam bcAgentParam = new BcAgentParam(); final BcAgentParam bcAgentParam = new BcAgentParam();
bcAgentParam.setParentId(getLoginUserId()); bcAgentParam.setParentId(getLoginUserId());
bcAgentParam.setLimit(100L); bcAgentParam.setLimit(100L);
final PageResult<BcAgent> result = bcAgentService.pageRel(bcAgentParam); final PageResult<BcAgent> result = bcAgentService.pageRel(bcAgentParam);
final Set<Integer> collect = result.getList().stream().map(BcAgent::getUserId).collect(Collectors.toSet()); final Set<Integer> collect = result.getList().stream().map(BcAgent::getUserId).collect(Collectors.toSet());
param.setUserId(null); param.setUserId(null);
param.setUserIds(collect); param.setUserIds(collect);
} }
return success(orderService.pageRel(param)); return success(orderService.pageRel(param));
} }
// 使用关联查询 // 使用关联查询
@@ -118,7 +140,7 @@ public class OrderController extends BaseController {
@GetMapping() @GetMapping()
public ApiResult<List<Order>> list(OrderParam param) { public ApiResult<List<Order>> list(OrderParam param) {
// 使用关联查询 // 使用关联查询
return success(orderService.listRel(param)); return success(orderService.listRel(param));
} }
@PreAuthorize("hasAuthority('shop:order:list')") @PreAuthorize("hasAuthority('shop:order:list')")
@@ -126,11 +148,11 @@ public class OrderController extends BaseController {
@ApiOperation("按订单集查询") @ApiOperation("按订单集查询")
@PostMapping("/listByIds") @PostMapping("/listByIds")
public ApiResult<List<Order>> listByIds(@RequestBody List<Integer> orderIds) { public ApiResult<List<Order>> listByIds(@RequestBody List<Integer> orderIds) {
System.out.println("按订单集查询 = " + orderIds); System.out.println("按订单集查询 = " + orderIds);
if(orderIds.size() > 0){ if (orderIds.size() > 0) {
return success(orderService.listByIds(orderIds)); return success(orderService.listByIds(orderIds));
} }
return fail("订单不存在",null); return fail("订单不存在", null);
// //
@@ -164,19 +186,19 @@ public class OrderController extends BaseController {
@ApiOperation("临时报餐订单") @ApiOperation("临时报餐订单")
@PostMapping("/getByTemporary") @PostMapping("/getByTemporary")
public ApiResult<List<Order>> getByTemporary(@RequestBody OrderParam order) { public ApiResult<List<Order>> getByTemporary(@RequestBody OrderParam order) {
final List<Order> list = orderService.listRel(order); final List<Order> list = orderService.listRel(order);
// 是否查询订单商品 // 是否查询订单商品
if(order.getShowGoodsList()){ if (order.getShowGoodsList()) {
list.forEach(d->{ list.forEach(d -> {
final OrderGoodsParam ogp = new OrderGoodsParam(); final OrderGoodsParam ogp = new OrderGoodsParam();
ogp.setOrderId(d.getOrderId()); ogp.setOrderId(d.getOrderId());
ogp.setTemporary(1); ogp.setTemporary(1);
d.setGoodsList(orderGoodsService.listRel(ogp)); d.setGoodsList(orderGoodsService.listRel(ogp));
}); });
} }
// 返回待支付订单 // 返回待支付订单
return success(list); return success(list);
} }
@PreAuthorize("hasAuthority('shop:order:list')") @PreAuthorize("hasAuthority('shop:order:list')")
@@ -184,14 +206,14 @@ public class OrderController extends BaseController {
@ApiOperation("根据id查询订单记录表") @ApiOperation("根据id查询订单记录表")
@GetMapping("/{id}") @GetMapping("/{id}")
public ApiResult<Order> get(@PathVariable("id") Integer id) { public ApiResult<Order> get(@PathVariable("id") Integer id) {
// 使用关联查询 // 使用关联查询
Order order = orderService.getByIdRel(id); Order order = orderService.getByIdRel(id);
// 云芯威关联设备查询 // 云芯威关联设备查询
if (!order.getGoodsId().equals(0) || !order.getEquipmentId().equals(0)) { if (!order.getGoodsId().equals(0) || !order.getEquipmentId().equals(0)) {
order.setEquipmentGoods(equipmentOrderGoodsService.getOne(new LambdaQueryWrapper<EquipmentOrderGoods>().eq(EquipmentOrderGoods::getOrderId,order.getOrderId()))); order.setEquipmentGoods(equipmentOrderGoodsService.getOne(new LambdaQueryWrapper<EquipmentOrderGoods>().eq(EquipmentOrderGoods::getOrderId, order.getOrderId())));
order.setEquipment(equipmentService.getById(order.getEquipmentId())); order.setEquipment(equipmentService.getById(order.getEquipmentId()));
} }
return success(order); return success(order);
} }
@PreAuthorize("hasAuthority('shop:order:save')") @PreAuthorize("hasAuthority('shop:order:save')")
@@ -202,58 +224,58 @@ public class OrderController extends BaseController {
// 记录当前登录用户id、租户id // 记录当前登录用户id、租户id
User loginUser = getLoginUser(); User loginUser = getLoginUser();
if (loginUser != null) { if (loginUser != null) {
order.setUserId(loginUser.getUserId()); order.setUserId(loginUser.getUserId());
} }
if (orderService.save(order)) { if (orderService.save(order)) {
// 云芯威BMS // 云芯威BMS
if (order.getTenantId().equals(6)) { if (order.getTenantId().equals(6)) {
final EquipmentGoods eg = equipmentGoodsService.getById(order.getOrderSourceId()); final EquipmentGoods eg = equipmentGoodsService.getById(order.getOrderSourceId());
eg.setOrderId(order.getOrderId()); eg.setOrderId(order.getOrderId());
// 添加订单商品 // 添加订单商品
final EquipmentOrderGoods oeg = new EquipmentOrderGoods(); final EquipmentOrderGoods oeg = new EquipmentOrderGoods();
oeg.setOrderId(order.getOrderId()); oeg.setOrderId(order.getOrderId());
oeg.setGoodsName(eg.getGoodsName()); oeg.setGoodsName(eg.getGoodsName());
oeg.setEquipmentCategory(eg.getEquipmentCategory()); oeg.setEquipmentCategory(eg.getEquipmentCategory());
oeg.setImage(eg.getImage()); oeg.setImage(eg.getImage());
oeg.setCategoryId(eg.getCategoryId()); oeg.setCategoryId(eg.getCategoryId());
oeg.setBatteryModel(eg.getBatteryModel()); oeg.setBatteryModel(eg.getBatteryModel());
oeg.setSellingPoint(eg.getSellingPoint()); oeg.setSellingPoint(eg.getSellingPoint());
oeg.setStockTotal(eg.getStockTotal()); oeg.setStockTotal(eg.getStockTotal());
oeg.setContent(eg.getContent()); oeg.setContent(eg.getContent());
oeg.setBatteryPrice(eg.getBatteryPrice()); oeg.setBatteryPrice(eg.getBatteryPrice());
oeg.setBatteryRent(eg.getBatteryRent()); oeg.setBatteryRent(eg.getBatteryRent());
oeg.setBatteryInsurance(eg.getBatteryInsurance()); oeg.setBatteryInsurance(eg.getBatteryInsurance());
oeg.setBatteryDeposit(eg.getBatteryDeposit()); oeg.setBatteryDeposit(eg.getBatteryDeposit());
oeg.setDownPayment(eg.getDownPayment()); oeg.setDownPayment(eg.getDownPayment());
oeg.setPeriods(eg.getPeriods()); oeg.setPeriods(eg.getPeriods());
oeg.setRepayment(eg.getRepayment()); oeg.setRepayment(eg.getRepayment());
oeg.setServiceCharges(eg.getServiceCharges()); oeg.setServiceCharges(eg.getServiceCharges());
oeg.setPeriodsType(eg.getPeriodsType()); oeg.setPeriodsType(eg.getPeriodsType());
oeg.setUserId(eg.getUserId()); oeg.setUserId(eg.getUserId());
oeg.setComments(eg.getComments()); oeg.setComments(eg.getComments());
oeg.setStatus(eg.getStatus()); oeg.setStatus(eg.getStatus());
oeg.setMerchantCode(eg.getMerchantCode()); oeg.setMerchantCode(eg.getMerchantCode());
oeg.setTenantId(eg.getTenantId()); oeg.setTenantId(eg.getTenantId());
equipmentOrderGoodsService.saveOrUpdate(oeg); equipmentOrderGoodsService.saveOrUpdate(oeg);
// 添加推荐人关系 // 添加推荐人关系
if (order.getDealerId() != null) { if (order.getDealerId() != null) {
final User dealer = userService.getById(order.getDealerId()); final User dealer = userService.getById(order.getDealerId());
if(dealer == null){ if (dealer == null) {
return fail("推荐人的用户ID不存在"); return fail("推荐人的用户ID不存在");
} }
final UserReferee referee = new UserReferee(); final UserReferee referee = new UserReferee();
referee.setDealerId(order.getDealerId()); referee.setDealerId(order.getDealerId());
referee.setUserId(getLoginUserId()); referee.setUserId(getLoginUserId());
userRefereeService.save(referee); userRefereeService.save(referee);
}
} }
} // 是否存入星期值(10048)
// 是否存入星期值(10048) if (order.getDeliveryTime() != null) {
if(order.getDeliveryTime() != null){ order.setWeek(DateUtil.dayOfWeek(order.getDeliveryTime()) - 1);
order.setWeek(DateUtil.dayOfWeek(order.getDeliveryTime()) - 1); }
} return success("添加成功", order);
return success("添加成功",order);
} }
return fail("添加失败"); return fail("添加失败");
} }
@@ -315,11 +337,11 @@ public class OrderController extends BaseController {
@ApiOperation("支付成功") @ApiOperation("支付成功")
@PostMapping("/setPayStatus") @PostMapping("/setPayStatus")
public ApiResult<?> setPayStatus(@RequestBody Order order){ public ApiResult<?> setPayStatus(@RequestBody Order order) {
if (orderService.updateById(order)) { if (orderService.updateById(order)) {
return success("设置成功"); return success("设置成功");
} }
return fail("设置失败"); return fail("设置失败");
} }
@PreAuthorize("hasAuthority('shop:order:list')") @PreAuthorize("hasAuthority('shop:order:list')")
@@ -327,34 +349,34 @@ public class OrderController extends BaseController {
@ApiOperation("生成核销付款码(二维码)") @ApiOperation("生成核销付款码(二维码)")
@GetMapping("/generateQrCode") @GetMapping("/generateQrCode")
public ApiResult<?> generateQrCode(OrderParam param) throws IOException { public ApiResult<?> generateQrCode(OrderParam param) throws IOException {
// 查询当天的报餐信息 // 查询当天的报餐信息
param.setUserId(getLoginUserId()); param.setUserId(getLoginUserId());
param.setDeliveryTime(DateUtil.beginOfDay(DateUtil.date()).toString()); param.setDeliveryTime(DateUtil.beginOfDay(DateUtil.date()).toString());
param.setOrderStatus(ORDER_STATUS_DOING); param.setOrderStatus(ORDER_STATUS_DOING);
param.setPayStatus(PAY_STATUS_SUCCESS); param.setPayStatus(PAY_STATUS_SUCCESS);
param.setDeleted(0); param.setDeleted(0);
final List<Order> list = orderService.listRel(param); final List<Order> list = orderService.listRel(param);
if(list.size() == 0){ if (list.size() == 0) {
return fail("今日无报餐记录"); return fail("今日无报餐记录");
} }
final Order order = list.get(0); final Order order = list.get(0);
// LOGO URL地址 // LOGO URL地址
String logoUrl = "https://file.wsdns.cn/20230430/6fa31aca3b0d47af98a149cf2dd26a4f.jpeg"; String logoUrl = "https://file.wsdns.cn/20230430/6fa31aca3b0d47af98a149cf2dd26a4f.jpeg";
// 二维码生成图片保存路径 // 二维码生成图片保存路径
String filePath = "/www/wwwroot/file.ws/file/qrcode/" + getLoginUserId() + "/payQrCode.jpg"; String filePath = "/www/wwwroot/file.ws/file/qrcode/" + getLoginUserId() + "/payQrCode.jpg";
// 二维码访问路径 // 二维码访问路径
String qrcodeUrl = "https://file.gxwebsoft.com/qrcode/" + getLoginUserId() + "/payQrCode.jpg" + "?v=" + DateUtil.current(); String qrcodeUrl = "https://file.gxwebsoft.com/qrcode/" + getLoginUserId() + "/payQrCode.jpg" + "?v=" + DateUtil.current();
// 二维码内容 // 二维码内容
final String orderNo = order.getOrderNo().toString(); final String orderNo = order.getOrderNo().toString();
// 将URL转为BufferedImage // 将URL转为BufferedImage
BufferedImage bufferedImage = ImageIO.read(new URL(logoUrl)); BufferedImage bufferedImage = ImageIO.read(new URL(logoUrl));
// 生成二维码 // 生成二维码
QrConfig config = new QrConfig(300, 300); QrConfig config = new QrConfig(300, 300);
// 设置边距,既二维码和背景之间的边距 // 设置边距,既二维码和背景之间的边距
config.setMargin(1); config.setMargin(1);
// 附带小logo // 附带小logo
config.setImg(bufferedImage); config.setImg(bufferedImage);
QrCodeUtil.generate(orderNo, config, FileUtil.file(filePath)); QrCodeUtil.generate(orderNo, config, FileUtil.file(filePath));
return success("请求成功",qrcodeUrl); return success("请求成功", qrcodeUrl);
} }
} }

View File

@@ -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;

View File

@@ -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