feat(approval): 添加审批相关功能及每月限购数量字段
- 新增审批ID字段和根据审批ID查询订单商品接口 - 添加商品每月限购数量字段及相关DTO映射 - 实现审批处理逻辑和获取审批订单商品列表功能 - 修复审批流程中corpid硬编码问题
This commit is contained in:
parent
909f61fdd5
commit
b96fd06aea
|
@ -24,6 +24,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 审批请求控制器
|
* 审批请求控制器
|
||||||
|
@ -80,6 +81,32 @@ public class ApprovalApiController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/handle/asset")
|
||||||
|
@ApiOperation(value = "处理审批操作")
|
||||||
|
public ResponseDTO<String> handleAssetApproval(@Valid @RequestBody UpdateReturnApprovalCommand command) {
|
||||||
|
if (command.getApprovalId() == null) {
|
||||||
|
return ResponseDTO.fail(new ApiException(ErrorCode.Internal.INTERNAL_ERROR, "审批ID不能为空"));
|
||||||
|
}
|
||||||
|
if (command.getStatus() == null) {
|
||||||
|
return ResponseDTO.fail(new ApiException(ErrorCode.Internal.INTERNAL_ERROR, "操作状态不能为空"));
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (command.getStatus() == 2) {
|
||||||
|
approvalApplicationService.approveApproval(command);
|
||||||
|
} else if (command.getStatus() == 3) {
|
||||||
|
approvalApplicationService.rejectApproval(command);
|
||||||
|
} else {
|
||||||
|
return ResponseDTO.fail(new ApiException(ErrorCode.Internal.INTERNAL_ERROR, "无效的操作状态"));
|
||||||
|
}
|
||||||
|
return ResponseDTO.ok("操作成功");
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("审批操作失败", e);
|
||||||
|
return ResponseDTO.fail(new ApiException(ErrorCode.Internal.INTERNAL_ERROR, e.getMessage()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提交退货审批申请
|
* 提交退货审批申请
|
||||||
*
|
*
|
||||||
|
@ -117,4 +144,11 @@ public class ApprovalApiController {
|
||||||
PageDTO<ReturnApprovalEntity> page = approvalApplicationService.getApprovalWithGoodsInfo(query);
|
PageDTO<ReturnApprovalEntity> page = approvalApplicationService.getApprovalWithGoodsInfo(query);
|
||||||
return ResponseDTO.ok(page);
|
return ResponseDTO.ok(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/getApprovalOrderGoods")
|
||||||
|
@ApiOperation(value = "审批列表")
|
||||||
|
public ResponseDTO<List<ShopOrderGoodsEntity>> getApprovalOrderGoods(Long approvalId) {
|
||||||
|
List<ShopOrderGoodsEntity> list = approvalApplicationService.getApprovalOrderGoods(approvalId);
|
||||||
|
return ResponseDTO.ok(list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,6 +67,9 @@ public class AssetApplicationService {
|
||||||
if (command.getStock() != null) {
|
if (command.getStock() != null) {
|
||||||
shopGoodsEntity.setStock(command.getStock());
|
shopGoodsEntity.setStock(command.getStock());
|
||||||
}
|
}
|
||||||
|
if (command.getStock() != null) {
|
||||||
|
shopGoodsEntity.setMonthlyPurchaseLimit(command.getMonthlyPurchaseLimit());
|
||||||
|
}
|
||||||
if (command.getAutoApproval() != null) {
|
if (command.getAutoApproval() != null) {
|
||||||
shopGoodsEntity.setAutoApproval(command.getAutoApproval());
|
shopGoodsEntity.setAutoApproval(command.getAutoApproval());
|
||||||
}
|
}
|
||||||
|
@ -168,9 +171,9 @@ public class AssetApplicationService {
|
||||||
String appid = "QWTONG_YS_WXSHOP";
|
String appid = "QWTONG_YS_WXSHOP";
|
||||||
List<QyAuthCorpInfoEntity> authCorpInfoList = authCorpInfoApplicationService.getByAppid(appid);
|
List<QyAuthCorpInfoEntity> authCorpInfoList = authCorpInfoApplicationService.getByAppid(appid);
|
||||||
QyAuthCorpInfoEntity authCorpInfo = authCorpInfoList.stream()
|
QyAuthCorpInfoEntity authCorpInfo = authCorpInfoList.stream()
|
||||||
.filter(a -> WeixinConstants.corpid.equals(a.getCorpid()))
|
.filter(a -> postAssetApprovalCommand.getCorpid().equals(a.getCorpid()))
|
||||||
.findFirst().orElse(null);
|
.findFirst().orElse(null);
|
||||||
QyAccessTokenEntity accessToken = accessTokenApplicationService.getByAppid(appid, authCorpInfo.getCorpid());
|
QyAccessTokenEntity accessToken = accessTokenApplicationService.getByAppid(appid, postAssetApprovalCommand.getCorpid());
|
||||||
// 获取用户ID
|
// 获取用户ID
|
||||||
List<String> adminUserIds = qyUserService.selectAdminUserIds();
|
List<String> adminUserIds = qyUserService.selectAdminUserIds();
|
||||||
String toUser = String.join("|", adminUserIds);
|
String toUser = String.join("|", adminUserIds);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.agileboot.domain.asset.command;
|
package com.agileboot.domain.asset.command;
|
||||||
|
|
||||||
|
import com.agileboot.common.annotation.ExcelColumn;
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
@ -48,5 +49,8 @@ public class PostAssetGoodsCommand {
|
||||||
|
|
||||||
@ApiModelProperty("归属类型(0-借还柜 1-固资通)")
|
@ApiModelProperty("归属类型(0-借还柜 1-固资通)")
|
||||||
private Integer belongType;
|
private Integer belongType;
|
||||||
|
|
||||||
|
@ApiModelProperty("每人每月限购数量")
|
||||||
|
private String monthlyPurchaseLimit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ import com.agileboot.domain.shop.approval.query.SearchReturnApprovalQuery;
|
||||||
import com.agileboot.domain.shop.goods.model.GoodsModel;
|
import com.agileboot.domain.shop.goods.model.GoodsModel;
|
||||||
import com.agileboot.domain.shop.goods.model.GoodsModelFactory;
|
import com.agileboot.domain.shop.goods.model.GoodsModelFactory;
|
||||||
import com.agileboot.domain.shop.order.db.ShopOrderGoodsEntity;
|
import com.agileboot.domain.shop.order.db.ShopOrderGoodsEntity;
|
||||||
|
import com.agileboot.domain.shop.order.db.ShopOrderGoodsService;
|
||||||
import com.agileboot.domain.shop.order.model.OrderGoodsModel;
|
import com.agileboot.domain.shop.order.model.OrderGoodsModel;
|
||||||
import com.agileboot.domain.shop.order.model.OrderGoodsModelFactory;
|
import com.agileboot.domain.shop.order.model.OrderGoodsModelFactory;
|
||||||
import com.agileboot.domain.shop.order.model.OrderModel;
|
import com.agileboot.domain.shop.order.model.OrderModel;
|
||||||
|
@ -59,6 +60,7 @@ public class ReturnApprovalApplicationService {
|
||||||
|
|
||||||
private final ReturnApprovalService approvalService;
|
private final ReturnApprovalService approvalService;
|
||||||
private final ReturnApprovalModelFactory modelFactory;
|
private final ReturnApprovalModelFactory modelFactory;
|
||||||
|
private final ShopOrderGoodsService shopOrderGoodsService;
|
||||||
private final OrderGoodsModelFactory orderGoodsModelFactory;
|
private final OrderGoodsModelFactory orderGoodsModelFactory;
|
||||||
private final OrderModelFactory orderModelFactory;
|
private final OrderModelFactory orderModelFactory;
|
||||||
private final PaymentApplicationService paymentApplicationService;
|
private final PaymentApplicationService paymentApplicationService;
|
||||||
|
@ -187,9 +189,9 @@ public class ReturnApprovalApplicationService {
|
||||||
} else if (Objects.equals(orderModel.getPaymentMethod(), "balance")) {
|
} else if (Objects.equals(orderModel.getPaymentMethod(), "balance")) {
|
||||||
// 余额退款
|
// 余额退款
|
||||||
try {
|
try {
|
||||||
QyAccessTokenEntity accessToken = accessTokenApplicationService.getByAppid("QWTONG_YS_WXSHOP", WeixinConstants.corpid);
|
QyAccessTokenEntity accessToken = accessTokenApplicationService.getByAppid("QWTONG_YS_WXSHOP", command.getCorpid());
|
||||||
String userid = QywxApiUtil.convertToUserid(accessToken.getAccessToken(), orderModel.getOpenid()).getUserid();
|
String userid = QywxApiUtil.convertToUserid(accessToken.getAccessToken(), orderModel.getOpenid()).getUserid();
|
||||||
QyUserEntity qyUser = userService.getUserByUserIdAndCorpid(userid, WeixinConstants.corpid);
|
QyUserEntity qyUser = userService.getUserByUserIdAndCorpid(userid, command.getCorpid());
|
||||||
if (null != qyUser) {
|
if (null != qyUser) {
|
||||||
qyUser.setBalance(qyUser.getBalance().add(command.getReturnAmount()));
|
qyUser.setBalance(qyUser.getBalance().add(command.getReturnAmount()));
|
||||||
qyUser.setUseBalance(qyUser.getUseBalance().subtract(command.getReturnAmount()));
|
qyUser.setUseBalance(qyUser.getUseBalance().subtract(command.getReturnAmount()));
|
||||||
|
@ -204,7 +206,7 @@ public class ReturnApprovalApplicationService {
|
||||||
if (StringUtils.isNotBlank(command.getAuditName())) {
|
if (StringUtils.isNotBlank(command.getAuditName())) {
|
||||||
model.setAuditName(command.getAuditName());
|
model.setAuditName(command.getAuditName());
|
||||||
} else if (StringUtils.isNotBlank(command.getUserid())) {
|
} else if (StringUtils.isNotBlank(command.getUserid())) {
|
||||||
QyUserEntity qyUserEntity = qyUserService.getUserByUserIdAndCorpid(command.getUserid(), WeixinConstants.corpid);
|
QyUserEntity qyUserEntity = qyUserService.getUserByUserIdAndCorpid(command.getUserid(), command.getCorpid());
|
||||||
if (null != qyUserEntity) {
|
if (null != qyUserEntity) {
|
||||||
model.setAuditName(qyUserEntity.getName());
|
model.setAuditName(qyUserEntity.getName());
|
||||||
}
|
}
|
||||||
|
@ -234,6 +236,11 @@ public class ReturnApprovalApplicationService {
|
||||||
cabinetCellModel.updateById();
|
cabinetCellModel.updateById();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void approveAssetApproval(UpdateReturnApprovalCommand command) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提交退货审批申请
|
* 提交退货审批申请
|
||||||
* @param command 添加退货审批命令
|
* @param command 添加退货审批命令
|
||||||
|
@ -278,7 +285,7 @@ public class ReturnApprovalApplicationService {
|
||||||
String appid = "QWTONG_YS_WXSHOP";
|
String appid = "QWTONG_YS_WXSHOP";
|
||||||
List<QyAuthCorpInfoEntity> authCorpInfoList = authCorpInfoApplicationService.getByAppid(appid);
|
List<QyAuthCorpInfoEntity> authCorpInfoList = authCorpInfoApplicationService.getByAppid(appid);
|
||||||
QyAuthCorpInfoEntity authCorpInfo = authCorpInfoList.stream()
|
QyAuthCorpInfoEntity authCorpInfo = authCorpInfoList.stream()
|
||||||
.filter(a -> WeixinConstants.corpid.equals(a.getCorpid()))
|
.filter(a -> command.getCorpid().equals(a.getCorpid()))
|
||||||
.findFirst().orElse(null);
|
.findFirst().orElse(null);
|
||||||
QyAccessTokenEntity accessToken = accessTokenApplicationService.getByAppid(appid, authCorpInfo.getCorpid());
|
QyAccessTokenEntity accessToken = accessTokenApplicationService.getByAppid(appid, authCorpInfo.getCorpid());
|
||||||
// 获取用户ID
|
// 获取用户ID
|
||||||
|
@ -308,6 +315,10 @@ public class ReturnApprovalApplicationService {
|
||||||
return new PageDTO<>(page.getRecords(), page.getTotal());
|
return new PageDTO<>(page.getRecords(), page.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ShopOrderGoodsEntity> getApprovalOrderGoods(Long approvalId) {
|
||||||
|
return shopOrderGoodsService.selectOrderGoodsByApprovalId(approvalId);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 审批驳回退货申请
|
* 审批驳回退货申请
|
||||||
* @param command 更新退货审批命令(包含驳回原因)
|
* @param command 更新退货审批命令(包含驳回原因)
|
||||||
|
@ -318,7 +329,7 @@ public class ReturnApprovalApplicationService {
|
||||||
|
|
||||||
// 审批人信息
|
// 审批人信息
|
||||||
if (StringUtils.isNotBlank(command.getUserid())) {
|
if (StringUtils.isNotBlank(command.getUserid())) {
|
||||||
QyUserEntity qyUserEntity = qyUserService.getUserByUserIdAndCorpid(command.getUserid(), WeixinConstants.corpid);
|
QyUserEntity qyUserEntity = qyUserService.getUserByUserIdAndCorpid(command.getUserid(), command.getCorpid());
|
||||||
if (null != qyUserEntity) {
|
if (null != qyUserEntity) {
|
||||||
model.setAuditName(qyUserEntity.getName());
|
model.setAuditName(qyUserEntity.getName());
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,10 @@ public class ShopGoodsEntity extends BaseEntity<ShopGoodsEntity> {
|
||||||
@TableField("corpid")
|
@TableField("corpid")
|
||||||
private String corpid;
|
private String corpid;
|
||||||
|
|
||||||
|
@ApiModelProperty("每人每月限购数量")
|
||||||
|
@TableField("monthly_purchase_limit")
|
||||||
|
private String monthlyPurchaseLimit;
|
||||||
|
|
||||||
@ApiModelProperty("销售价格")
|
@ApiModelProperty("销售价格")
|
||||||
@TableField("price")
|
@TableField("price")
|
||||||
private BigDecimal price;
|
private BigDecimal price;
|
||||||
|
|
|
@ -9,6 +9,9 @@ import com.agileboot.domain.shop.goods.db.SearchGoodsDO;
|
||||||
import com.agileboot.domain.system.user.db.SysUserEntity;
|
import com.agileboot.domain.system.user.db.SysUserEntity;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@ExcelSheet(name = "商品列表")
|
@ExcelSheet(name = "商品列表")
|
||||||
|
@ -98,4 +101,7 @@ public class ShopGoodsDTO {
|
||||||
|
|
||||||
@ExcelColumn(name = "商品使用说明")
|
@ExcelColumn(name = "商品使用说明")
|
||||||
private String usageInstruction;
|
private String usageInstruction;
|
||||||
|
|
||||||
|
@ExcelColumn(name = "每人每月限购数量")
|
||||||
|
private String monthlyPurchaseLimit;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,10 @@ public class ShopOrderGoodsEntity extends BaseEntity<ShopOrderGoodsEntity> {
|
||||||
@TableField("order_id")
|
@TableField("order_id")
|
||||||
private Long orderId;
|
private Long orderId;
|
||||||
|
|
||||||
|
@ApiModelProperty("审批ID")
|
||||||
|
@TableField("approval_id")
|
||||||
|
private Long approvalId;
|
||||||
|
|
||||||
@ApiModelProperty("关联商品ID")
|
@ApiModelProperty("关联商品ID")
|
||||||
@TableField("goods_id")
|
@TableField("goods_id")
|
||||||
private Long goodsId;
|
private Long goodsId;
|
||||||
|
|
|
@ -24,4 +24,6 @@ public interface ShopOrderGoodsService extends IService<ShopOrderGoodsEntity> {
|
||||||
List<TodayLatestOrderGoodsDTO> selectTodayLatestOrderGoods();
|
List<TodayLatestOrderGoodsDTO> selectTodayLatestOrderGoods();
|
||||||
|
|
||||||
List<ShopOrderGoodsEntity> selectUnReturnOrderGoods();
|
List<ShopOrderGoodsEntity> selectUnReturnOrderGoods();
|
||||||
|
|
||||||
|
List<ShopOrderGoodsEntity> selectOrderGoodsByApprovalId(Long approvalId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.agileboot.domain.shop.order.db;
|
package com.agileboot.domain.shop.order.db;
|
||||||
|
|
||||||
import com.agileboot.domain.shop.order.dto.TopGoodsDTO;
|
import com.agileboot.domain.shop.order.dto.TopGoodsDTO;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@ -42,4 +43,12 @@ public class ShopOrderGoodsServiceImpl extends ServiceImpl<ShopOrderGoodsMapper,
|
||||||
return baseMapper.selectUnReturnOrderGoods();
|
return baseMapper.selectUnReturnOrderGoods();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ShopOrderGoodsEntity> selectOrderGoodsByApprovalId(Long approvalId) {
|
||||||
|
QueryWrapper<ShopOrderGoodsEntity> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("approval_id", approvalId)
|
||||||
|
.eq("deleted", 0);
|
||||||
|
return this.list(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,4 +65,12 @@ ALTER TABLE `shop_order`
|
||||||
ADD COLUMN `corpid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '企业微信id';
|
ADD COLUMN `corpid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '企业微信id';
|
||||||
|
|
||||||
ALTER TABLE `shop_order_goods`
|
ALTER TABLE `shop_order_goods`
|
||||||
ADD COLUMN `corpid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '企业微信id';
|
ADD COLUMN `corpid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '企业微信id';
|
||||||
|
|
||||||
|
ALTER TABLE `shop_goods`
|
||||||
|
ADD COLUMN `monthly_purchase_limit` INT DEFAULT NULL COMMENT '每人每月限购数量'
|
||||||
|
AFTER `corpid`;
|
||||||
|
|
||||||
|
ALTER TABLE `shop_order_goods`
|
||||||
|
ADD COLUMN `approval_id` bigint NULL COMMENT '审批ID'
|
||||||
|
AFTER `order_id`;
|
Loading…
Reference in New Issue