优化订单查询

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")
private Integer userId;
@ApiModelProperty(value = "投资人ID")
private Integer touziUserId;
@ApiModelProperty(value = "排序(数字越小越靠前)")
private Integer sortNumber;
@@ -145,4 +147,8 @@ public class Equipment implements Serializable {
@ApiModelProperty(value = "绑定的用户")
@TableField(exist = false)
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");
// System.out.println("device_id = " + device_id);
// 从设备请求头拿ID
String DeviceID = request.getHeader("Device-ID");
if (StrUtil.isNotBlank(DeviceID)) {
return new LongValue(10048);
}
// 从请求头拿ID
final String tenantId = request.getHeader("tenantId");
if(tenantId != null){
return new LongValue(tenantId);
}
return getLoginUserTenantId();
try {
String DeviceID = request.getHeader("Device-ID");
if (StrUtil.isNotBlank(DeviceID)) {
return new LongValue(6);
}
// 从请求头拿ID
final String tenantId = request.getHeader("tenantId");
if(tenantId != null){
return new LongValue(tenantId);
}
return getLoginUserTenantId();
}catch (Exception e){
return new LongValue(6);
}
}
@Override

View File

@@ -19,6 +19,8 @@ public class OrderConstants {
// 收货状态
public static final Integer RECEIPT_STATUS_NO = 10; // 未收货
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; // 已退货
// 订单状态
@@ -33,5 +35,4 @@ public class OrderConstants {
}

View File

@@ -67,7 +67,7 @@ public class AlipayConfigUtil {
*/
public JSONObject payment(Integer 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);
String cache = stringRedisTemplate.opsForValue().get(key);
if (cache == null) {

View File

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

View File

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

View File

@@ -174,6 +174,9 @@ public class Order implements Serializable {
@ApiModelProperty(value = "是否临时报餐")
private Integer isTemporary;
@ApiModelProperty(value = "推荐人手机号")
private String dealerPhone;
@ApiModelProperty(value = "用户ID")
private Integer userId;

View File

@@ -5,10 +5,10 @@ spring:
datasource:
url: jdbc:mysql://47.119.165.234:3308/open_ws?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
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
# username: open_ws
# password: DzAmFiZfPJ6ZGApm
password: DzAmFiZfPJ6ZGApm
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource