feat: 在QyLoginDTO中添加name字段并更新开柜逻辑

在QyLoginDTO中添加name字段以存储用户名称,并修改开柜逻辑以支持记录操作日志。具体更改包括:
1. 在QyLoginDTO中添加name字段
2. 将CabinetCellOperationEntity中的isInternal字段类型从Boolean改为Integer
3. 在PaymentController中获取用户名称并传递给QyLoginDTO
4. 在OrderController和OrderApplicationService中更新开柜逻辑,支持记录操作日志
This commit is contained in:
dzq 2025-04-22 10:46:50 +08:00
parent 523e545ace
commit f8379c2b74
5 changed files with 25 additions and 5 deletions

View File

@ -2,6 +2,7 @@ package com.agileboot.api.controller;
import com.agileboot.common.constant.PayApiConstants;
import com.agileboot.common.core.base.BaseController;
import com.agileboot.domain.cabinet.operation.command.AddCabinetCellOperationCommand;
import com.agileboot.domain.shop.order.dto.CreateOrderResult;
import com.agileboot.domain.shop.order.dto.GetOrdersByOpenIdDTO;
import com.agileboot.domain.shop.order.model.OrderGoodsModelFactory;
@ -50,8 +51,9 @@ public class OrderController extends BaseController {
* @return 空响应
*/
@PostMapping("/openCabinet/{orderId}/{orderGoodsId}")
public ResponseDTO<?> openCabinet(@PathVariable Long orderId, @PathVariable Long orderGoodsId) {
orderApplicationService.openOrderGoodsCabinet(orderId, orderGoodsId);
public ResponseDTO<?> openCabinet(@PathVariable Long orderId, @PathVariable Long orderGoodsId,
@RequestBody AddCabinetCellOperationCommand operationCommand) {
orderApplicationService.openOrderGoodsCabinet(orderId, orderGoodsId, operationCommand);
return ResponseDTO.ok();
}

View File

@ -179,7 +179,9 @@ public class PaymentController {
OpenidResponse openidResponse = QywxApiUtil.convertToOpenid(qyAccessToken.getAccessToken(), userid);
return ResponseDTO.ok(new QyLoginDTO(userid, openidResponse.getOpenid(), isCabinetAdmin));
QyUserEntity qyUserEntity = qyUserApplicationService.getUserByUserId(userid, corpid);
return ResponseDTO.ok(new QyLoginDTO(userid, openidResponse.getOpenid(), isCabinetAdmin, qyUserEntity.getName()));
} catch (RestClientException e) {
log.error("qyLogin失败", e);
return ResponseDTO.fail(new ApiException(ErrorCode.Client.COMMON_REQUEST_PARAMETERS_INVALID, "微信服务调用失败"));

View File

@ -49,7 +49,7 @@ public class CabinetCellOperationEntity extends BaseEntity<CabinetCellOperationE
@ApiModelProperty("是否内部用户0否 1是")
@TableField("is_internal")
private Boolean isInternal;
private Integer isInternal;
@ApiModelProperty("成员名称")
@TableField("`name`")

View File

@ -10,4 +10,5 @@ public class QyLoginDTO {
private String userid;
private String openid;
private Integer isCabinetAdmin;
private String name;
}

View File

@ -7,6 +7,9 @@ import com.agileboot.common.exception.ApiException;
import com.agileboot.common.exception.error.ErrorCode;
import com.agileboot.domain.cabinet.cell.db.CabinetCellEntity;
import com.agileboot.domain.cabinet.cell.db.CabinetCellService;
import com.agileboot.domain.cabinet.operation.command.AddCabinetCellOperationCommand;
import com.agileboot.domain.cabinet.operation.model.CabinetCellOperationModel;
import com.agileboot.domain.cabinet.operation.model.CabinetCellOperationModelFactory;
import com.agileboot.domain.cabinet.smartCabinet.db.SmartCabinetEntity;
import com.agileboot.domain.cabinet.smartCabinet.db.SmartCabinetService;
import com.agileboot.domain.common.command.BulkOperationCommand;
@ -64,13 +67,14 @@ public class OrderApplicationService {
private final MqttService mqttService;
private final QyUserService userService;
private final QyUserModelFactory qyUserModelFactory;
private final CabinetCellOperationModelFactory cabinetCellOperationModelFactory;
public PageDTO<ShopOrderEntity> getOrderList(SearchShopOrderQuery<ShopOrderEntity> query) {
Page<ShopOrderEntity> page = orderService.page(query.toPage(), query.toQueryWrapper());
return new PageDTO<>(page.getRecords(), page.getTotal());
}
public void openOrderGoodsCabinet(Long orderId, Long orderGoodsId) {
public void openOrderGoodsCabinet(Long orderId, Long orderGoodsId, AddCabinetCellOperationCommand operationCommand) {
OrderModel orderModel = orderModelFactory.loadById(orderId);
// 验证订单状态
if (orderModel.getStatus() != 2) {
@ -96,6 +100,12 @@ public class OrderApplicationService {
throw new ApiException(ErrorCode.Client.COMMON_FORBIDDEN_TO_CALL, "柜子不存在");
}
operationCommand.setCellId(goodsEntity.getCellId());
operationCommand.setGoodsId(goodsEntity.getGoodsId());
operationCommand.setGoodsName(goodsEntity.getGoodsName());
operationCommand.setStatus(1);
CabinetCellOperationModel cellOperationModel = cabinetCellOperationModelFactory.create();
// 构造MQTT开柜指令
// 指令格式8A + 锁控编号(2位HEX) + 引脚号(2位HEX) + 操作码11
String mqttDate = "8A";
@ -106,7 +116,12 @@ public class OrderApplicationService {
mqttService.publish(mqttDate);
} catch (Exception e) {
log.error("mqtt publish error", e);
operationCommand.setStatus(2);
throw new ApiException(ErrorCode.Internal.INTERNAL_ERROR, "发送指令失败");
} finally {
// 记录操作日志
cellOperationModel.loadAddCommand(operationCommand);
cellOperationModel.insert();
}
}