Compare commits
No commits in common. "afbd0935e70d862ea40370d03715e3ddd5042ec4" and "00bb295cb094454c275cd2b220d9c46379c24bc2" have entirely different histories.
afbd0935e7
...
00bb295cb0
|
@ -16,7 +16,6 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
@ -27,7 +26,6 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/cabinet/cell")
|
@RequestMapping("/cabinet/cell")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
@ -83,24 +81,4 @@ public class CabinetCellController extends BaseController {
|
||||||
cabinetCellApplicationService.configureGoodsCellsStock(cellId, goodsId, stock);
|
cabinetCellApplicationService.configureGoodsCellsStock(cellId, goodsId, stock);
|
||||||
return ResponseDTO.ok();
|
return ResponseDTO.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "调整格口商品库存")
|
|
||||||
@AccessLog(title = "格口管理", businessType = BusinessTypeEnum.MODIFY)
|
|
||||||
@PutMapping("/changeGoodsCellsStock/{cellId}/{stock}")
|
|
||||||
public ResponseDTO<Void> changeGoodsCellsStock(@PathVariable Long cellId, @PathVariable Integer stock) {
|
|
||||||
if (stock < 0) {
|
|
||||||
log.error("调整格口商品库存,库存不能小于0");
|
|
||||||
return ResponseDTO.fail();
|
|
||||||
}
|
|
||||||
cabinetCellApplicationService.changeGoodsCellsStock(cellId, stock);
|
|
||||||
return ResponseDTO.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "清空格口商品")
|
|
||||||
@AccessLog(title = "格口管理", businessType = BusinessTypeEnum.MODIFY)
|
|
||||||
@PutMapping("/clearGoodsCells/{cellId}")
|
|
||||||
public ResponseDTO<Void> clearGoodsCells(@PathVariable Long cellId) {
|
|
||||||
cabinetCellApplicationService.clearGoodsCells(cellId);
|
|
||||||
return ResponseDTO.ok();
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -1,31 +0,0 @@
|
||||||
package com.agileboot.admin.controller.shop;
|
|
||||||
|
|
||||||
import com.agileboot.common.core.base.BaseController;
|
|
||||||
import com.agileboot.common.core.dto.ResponseDTO;
|
|
||||||
import com.agileboot.common.core.page.PageDTO;
|
|
||||||
import com.agileboot.domain.shop.order.OrderApplicationService;
|
|
||||||
import com.agileboot.domain.shop.order.db.ShopOrderEntity;
|
|
||||||
import com.agileboot.domain.shop.order.query.SearchShopOrderQuery;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/shop/order")
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Validated
|
|
||||||
public class ShopOrderController extends BaseController {
|
|
||||||
private final OrderApplicationService orderApplicationService;
|
|
||||||
|
|
||||||
|
|
||||||
@Operation(summary = "订单列表")
|
|
||||||
// @PreAuthorize("@permission.has('shop:goods:list')")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public ResponseDTO<PageDTO<ShopOrderEntity>> list(SearchShopOrderQuery<ShopOrderEntity> query) {
|
|
||||||
PageDTO<ShopOrderEntity> page = orderApplicationService.getOrderList(query);
|
|
||||||
return ResponseDTO.ok(page);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -91,14 +91,4 @@ public class CabinetCellApplicationService {
|
||||||
model.setUsageStatus(2);
|
model.setUsageStatus(2);
|
||||||
model.updateById();
|
model.updateById();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void changeGoodsCellsStock(Long cellId, Integer stock) {
|
|
||||||
CabinetCellModel model = cabinetCellModelFactory.loadById(cellId);
|
|
||||||
model.setStock(stock);
|
|
||||||
model.updateById();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void clearGoodsCells(Long cellId) {
|
|
||||||
cabinetCellService.clearGoodsIdAndFreeCell(cellId);
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -47,7 +47,7 @@ public interface CabinetCellMapper extends BaseMapper<CabinetCellEntity> {
|
||||||
List<CabinetCellEntity> selectByGoodsId(@Param("goodsId")Long goodsId);
|
List<CabinetCellEntity> selectByGoodsId(@Param("goodsId")Long goodsId);
|
||||||
|
|
||||||
@Update("UPDATE cabinet_cell " +
|
@Update("UPDATE cabinet_cell " +
|
||||||
"SET stock = 0, goods_id = NULL, usage_status = 1 " +
|
"SET goods_id = NULL, usage_status = 1 " +
|
||||||
"WHERE cell_id = #{cellId}")
|
"WHERE cell_id = #{cellId}")
|
||||||
void clearGoodsIdAndFreeCell(@Param("cellId") Long cellId);
|
void clearGoodsIdAndFreeCell(@Param("cellId") Long cellId);
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
package com.agileboot.domain.shop.approval;
|
package com.agileboot.domain.shop.approval;
|
||||||
|
|
||||||
import com.agileboot.common.constant.PayApiConstants;
|
import com.agileboot.common.constant.PayApiConstants;
|
||||||
import com.agileboot.common.constant.WeixinConstants;
|
|
||||||
import com.agileboot.common.core.page.PageDTO;
|
import com.agileboot.common.core.page.PageDTO;
|
||||||
import com.agileboot.domain.cabinet.cell.model.CabinetCellModel;
|
|
||||||
import com.agileboot.domain.cabinet.cell.model.CabinetCellModelFactory;
|
|
||||||
import com.agileboot.domain.common.command.BulkOperationCommand;
|
import com.agileboot.domain.common.command.BulkOperationCommand;
|
||||||
import com.agileboot.domain.qywx.accessToken.AccessTokenApplicationService;
|
import com.agileboot.domain.qywx.accessToken.AccessTokenApplicationService;
|
||||||
import com.agileboot.domain.qywx.accessToken.db.QyAccessTokenEntity;
|
import com.agileboot.domain.qywx.accessToken.db.QyAccessTokenEntity;
|
||||||
|
@ -12,7 +9,6 @@ import com.agileboot.domain.qywx.api.QywxApiUtil;
|
||||||
import com.agileboot.domain.qywx.api.response.NewsArticle;
|
import com.agileboot.domain.qywx.api.response.NewsArticle;
|
||||||
import com.agileboot.domain.qywx.authCorpInfo.AuthCorpInfoApplicationService;
|
import com.agileboot.domain.qywx.authCorpInfo.AuthCorpInfoApplicationService;
|
||||||
import com.agileboot.domain.qywx.authCorpInfo.db.QyAuthCorpInfoEntity;
|
import com.agileboot.domain.qywx.authCorpInfo.db.QyAuthCorpInfoEntity;
|
||||||
import com.agileboot.domain.qywx.user.db.QyUserEntity;
|
|
||||||
import com.agileboot.domain.qywx.user.db.QyUserService;
|
import com.agileboot.domain.qywx.user.db.QyUserService;
|
||||||
import com.agileboot.domain.shop.approval.command.AddReturnApprovalCommand;
|
import com.agileboot.domain.shop.approval.command.AddReturnApprovalCommand;
|
||||||
import com.agileboot.domain.shop.approval.command.UpdateReturnApprovalCommand;
|
import com.agileboot.domain.shop.approval.command.UpdateReturnApprovalCommand;
|
||||||
|
@ -44,7 +40,6 @@ import java.util.stream.Collectors;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -64,7 +59,6 @@ public class ReturnApprovalApplicationService {
|
||||||
private final AuthCorpInfoApplicationService authCorpInfoApplicationService;
|
private final AuthCorpInfoApplicationService authCorpInfoApplicationService;
|
||||||
private final AccessTokenApplicationService accessTokenApplicationService;
|
private final AccessTokenApplicationService accessTokenApplicationService;
|
||||||
private final QyUserService qyUserService;
|
private final QyUserService qyUserService;
|
||||||
private final CabinetCellModelFactory cabinetCellModelFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取退货审批列表
|
* 获取退货审批列表
|
||||||
|
@ -157,16 +151,6 @@ public class ReturnApprovalApplicationService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 审批人信息
|
|
||||||
if (StringUtils.isNotBlank(command.getAuditName())) {
|
|
||||||
model.setAuditName(command.getAuditName());
|
|
||||||
} else if (StringUtils.isNotBlank(command.getUserid())) {
|
|
||||||
QyUserEntity qyUserEntity = qyUserService.getUserByUserId(command.getUserid(), WeixinConstants.corpid);
|
|
||||||
if (null != qyUserEntity) {
|
|
||||||
model.setAuditName(qyUserEntity.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新审批状态为通过
|
// 更新审批状态为通过
|
||||||
model.validateApprovalStatus();
|
model.validateApprovalStatus();
|
||||||
model.setAuditImages(command.getAuditImages());
|
model.setAuditImages(command.getAuditImages());
|
||||||
|
@ -183,11 +167,6 @@ public class ReturnApprovalApplicationService {
|
||||||
GoodsModel goodsModel = goodsModelFactory.loadById(orderGoodsModel.getGoodsId());
|
GoodsModel goodsModel = goodsModelFactory.loadById(orderGoodsModel.getGoodsId());
|
||||||
goodsModel.setStock(goodsModel.getStock() + orderGoodsModel.getQuantity());
|
goodsModel.setStock(goodsModel.getStock() + orderGoodsModel.getQuantity());
|
||||||
goodsModel.updateById();
|
goodsModel.updateById();
|
||||||
|
|
||||||
// 更新格口库存
|
|
||||||
CabinetCellModel cabinetCellModel = cabinetCellModelFactory.loadById(orderGoodsModel.getCellId());
|
|
||||||
cabinetCellModel.setStock(cabinetCellModel.getStock() + orderGoodsModel.getQuantity());
|
|
||||||
cabinetCellModel.updateById();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -218,17 +197,6 @@ public class ReturnApprovalApplicationService {
|
||||||
orderGoodsModel.setStatus(5);
|
orderGoodsModel.setStatus(5);
|
||||||
orderGoodsModel.updateById();
|
orderGoodsModel.updateById();
|
||||||
|
|
||||||
GoodsModel goodsModel = goodsModelFactory.loadById(orderGoods.getGoodsId());
|
|
||||||
// 如果商品免审批,则自动审批
|
|
||||||
if (goodsModel.getAutoApproval().equals(1)) {
|
|
||||||
UpdateReturnApprovalCommand approveCommand = new UpdateReturnApprovalCommand();
|
|
||||||
approveCommand.setApprovalId(returnApprovalModel.getApprovalId());
|
|
||||||
approveCommand.setReturnAmount(orderGoods.getTotalAmount());
|
|
||||||
approveCommand.setAuditName("自动审批");
|
|
||||||
approveCommand.setAuditRemark("自动审批");
|
|
||||||
approveApproval(approveCommand);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 发送审核消息
|
// 发送审核消息
|
||||||
try {
|
try {
|
||||||
String appid = "QWTONG_YS_WXSHOP";
|
String appid = "QWTONG_YS_WXSHOP";
|
||||||
|
@ -272,13 +240,6 @@ public class ReturnApprovalApplicationService {
|
||||||
ReturnApprovalModel model = modelFactory.loadById(command.getApprovalId());
|
ReturnApprovalModel model = modelFactory.loadById(command.getApprovalId());
|
||||||
model.validateApprovalStatus();
|
model.validateApprovalStatus();
|
||||||
|
|
||||||
// 审批人信息
|
|
||||||
if (StringUtils.isNotBlank(command.getUserid())) {
|
|
||||||
QyUserEntity qyUserEntity = qyUserService.getUserByUserId(command.getUserid(), WeixinConstants.corpid);
|
|
||||||
if (null != qyUserEntity) {
|
|
||||||
model.setAuditName(qyUserEntity.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 更新审批状态为驳回
|
// 更新审批状态为驳回
|
||||||
model.setStatus(3);
|
model.setStatus(3);
|
||||||
model.setAuditImages(command.getAuditImages());
|
model.setAuditImages(command.getAuditImages());
|
||||||
|
|
|
@ -13,5 +13,4 @@ public class UpdateReturnApprovalCommand extends AddReturnApprovalCommand {
|
||||||
@PositiveOrZero
|
@PositiveOrZero
|
||||||
private Long approvalId;
|
private Long approvalId;
|
||||||
|
|
||||||
private String userid;
|
|
||||||
}
|
}
|
|
@ -72,10 +72,6 @@ public class ReturnApprovalEntity extends BaseEntity<ReturnApprovalEntity> {
|
||||||
@TableField("audit_remark")
|
@TableField("audit_remark")
|
||||||
private String auditRemark;
|
private String auditRemark;
|
||||||
|
|
||||||
@ApiModelProperty("审批人")
|
|
||||||
@TableField("audit_name")
|
|
||||||
private String auditName;
|
|
||||||
|
|
||||||
@ApiModelProperty("审批状态(1待审核 2已通过 3已驳回)")
|
@ApiModelProperty("审批状态(1待审核 2已通过 3已驳回)")
|
||||||
@TableField("`status`")
|
@TableField("`status`")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
|
@ -65,9 +65,6 @@ public class ReturnApprovalDTO {
|
||||||
@ExcelColumn(name = "审核说明")
|
@ExcelColumn(name = "审核说明")
|
||||||
private String auditRemark;
|
private String auditRemark;
|
||||||
|
|
||||||
@ExcelColumn(name = "审批人")
|
|
||||||
private String auditName;
|
|
||||||
|
|
||||||
@ExcelColumn(name = "审批状态(1待审核 2已通过 3已驳回)")
|
@ExcelColumn(name = "审批状态(1待审核 2已通过 3已驳回)")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
|
|
@ -31,8 +31,7 @@ public class SearchReturnApprovalQuery<T> extends AbstractPageQuery<T> {
|
||||||
.eq(status != null, "status", status)
|
.eq(status != null, "status", status)
|
||||||
.like(StrUtil.isNotEmpty(returnRemark), "return_remark", returnRemark)
|
.like(StrUtil.isNotEmpty(returnRemark), "return_remark", returnRemark)
|
||||||
.like(StrUtil.isNotEmpty(auditRemark), "audit_remark", auditRemark)
|
.like(StrUtil.isNotEmpty(auditRemark), "audit_remark", auditRemark)
|
||||||
.between(startTime != null && endTime != null, "create_time", startTime, endTime)
|
.between(startTime != null && endTime != null, "create_time", startTime, endTime);
|
||||||
.orderByDesc("create_time");
|
|
||||||
|
|
||||||
this.timeRangeColumn = "create_time";
|
this.timeRangeColumn = "create_time";
|
||||||
|
|
||||||
|
|
|
@ -18,8 +18,6 @@ public class SearchGoodsDO extends ShopGoodsEntity {
|
||||||
private String cabinetName;
|
private String cabinetName;
|
||||||
@TableField("cell_no")
|
@TableField("cell_no")
|
||||||
private Integer cellNo;
|
private Integer cellNo;
|
||||||
@TableField("cell_no_str")
|
|
||||||
private String cellNoStr;
|
|
||||||
@TableField("total_stock")
|
@TableField("total_stock")
|
||||||
private Integer totalStock;
|
private Integer totalStock;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,10 +52,6 @@ public class ShopGoodsEntity extends BaseEntity<ShopGoodsEntity> {
|
||||||
@TableField("`status`")
|
@TableField("`status`")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
@ApiModelProperty("免审批(0否 1是)")
|
|
||||||
@TableField("`auto_approval`")
|
|
||||||
private Integer autoApproval;
|
|
||||||
|
|
||||||
@ApiModelProperty("封面图URL")
|
@ApiModelProperty("封面图URL")
|
||||||
@TableField("cover_img")
|
@TableField("cover_img")
|
||||||
private String coverImg;
|
private String coverImg;
|
||||||
|
|
|
@ -36,13 +36,14 @@ public interface ShopGoodsMapper extends BaseMapper<ShopGoodsEntity> {
|
||||||
@Param(Constants.WRAPPER) Wrapper<SearchGoodsDO> queryWrapper
|
@Param(Constants.WRAPPER) Wrapper<SearchGoodsDO> queryWrapper
|
||||||
); */
|
); */
|
||||||
@Select("SELECT g.goods_id, g.goods_name, g.category_id, g.price, " +
|
@Select("SELECT g.goods_id, g.goods_name, g.category_id, g.price, " +
|
||||||
"g.stock, g.status, g.auto_approval, g.cover_img, SUM(cc.stock) AS total_stock, " +
|
"g.stock, g.status, g.cover_img, SUM(cc.stock) AS total_stock, " +
|
||||||
"GROUP_CONCAT(DISTINCT cc.cell_no) AS cell_no_str, " +
|
"GROUP_CONCAT(DISTINCT cc.cell_no) AS cell_no, " +
|
||||||
"GROUP_CONCAT(DISTINCT sc.cabinet_name) AS cabinet_name " +
|
"GROUP_CONCAT(DISTINCT sc.cabinet_name) AS cabinet_name " +
|
||||||
"FROM shop_goods g " +
|
"FROM shop_goods g " +
|
||||||
"LEFT JOIN cabinet_cell cc ON g.goods_id = cc.goods_id AND cc.deleted = 0 " +
|
"LEFT JOIN cabinet_cell cc ON g.goods_id = cc.goods_id AND cc.deleted = 0 " +
|
||||||
"LEFT JOIN smart_cabinet sc ON cc.cabinet_id = sc.cabinet_id AND sc.deleted = 0 " +
|
"LEFT JOIN smart_cabinet sc ON cc.cabinet_id = sc.cabinet_id AND sc.deleted = 0 " +
|
||||||
"${ew.customSqlSegment} ")
|
"${ew.customSqlSegment} " +
|
||||||
|
"GROUP BY g.goods_id")
|
||||||
Page<SearchGoodsDO> getGoodsList(
|
Page<SearchGoodsDO> getGoodsList(
|
||||||
Page<SearchGoodsDO> page,
|
Page<SearchGoodsDO> page,
|
||||||
@Param(Constants.WRAPPER) Wrapper<SearchGoodsDO> queryWrapper
|
@Param(Constants.WRAPPER) Wrapper<SearchGoodsDO> queryWrapper
|
||||||
|
@ -62,10 +63,7 @@ public interface ShopGoodsMapper extends BaseMapper<ShopGoodsEntity> {
|
||||||
* 查询商品及其关联的柜机格口信息
|
* 查询商品及其关联的柜机格口信息
|
||||||
* @return 商品列表
|
* @return 商品列表
|
||||||
*/
|
*/
|
||||||
@Select("SELECT g.goods_id, g.goods_name, g.category_id, g.price, " +
|
@Select("SELECT g.*, sc.cabinet_id, sc.cabinet_name, cc.cell_id " +
|
||||||
"g.status, g.cover_img, g.goods_detail, " +
|
|
||||||
"g.creator_id, g.create_time, g.updater_id, g.update_time, g.remark, g.deleted, " +
|
|
||||||
"sc.cabinet_id, sc.cabinet_name, cc.stock, cc.cell_id " +
|
|
||||||
"FROM shop_goods g " +
|
"FROM shop_goods g " +
|
||||||
"LEFT JOIN cabinet_cell cc ON g.goods_id = cc.goods_id " +
|
"LEFT JOIN cabinet_cell cc ON g.goods_id = cc.goods_id " +
|
||||||
"LEFT JOIN smart_cabinet sc ON cc.cabinet_id = sc.cabinet_id " +
|
"LEFT JOIN smart_cabinet sc ON cc.cabinet_id = sc.cabinet_id " +
|
||||||
|
|
|
@ -20,7 +20,7 @@ public class ShopGoodsServiceImpl extends ServiceImpl<ShopGoodsMapper, ShopGoods
|
||||||
@Override
|
@Override
|
||||||
public Page<SearchGoodsDO> getGoodsList(AbstractPageQuery<SearchGoodsDO> query) {
|
public Page<SearchGoodsDO> getGoodsList(AbstractPageQuery<SearchGoodsDO> query) {
|
||||||
QueryWrapper<SearchGoodsDO> wrapper = query.toQueryWrapper();
|
QueryWrapper<SearchGoodsDO> wrapper = query.toQueryWrapper();
|
||||||
// wrapper.orderByAsc("sc.cabinet_id IS NULL", "sc.cabinet_id", "cc.cell_no");
|
wrapper.orderByAsc("sc.cabinet_id IS NULL", "sc.cabinet_id", "cc.cell_no");
|
||||||
|
|
||||||
return baseMapper.getGoodsList(query.toPage(), wrapper);
|
return baseMapper.getGoodsList(query.toPage(), wrapper);
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,9 +60,6 @@ public class ShopGoodsDTO {
|
||||||
@ExcelColumn(name = "商品状态")
|
@ExcelColumn(name = "商品状态")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
@ExcelColumn(name = "免审批")
|
|
||||||
private Integer autoApproval;
|
|
||||||
|
|
||||||
@ExcelColumn(name = "封面图")
|
@ExcelColumn(name = "封面图")
|
||||||
private String coverImg;
|
private String coverImg;
|
||||||
|
|
||||||
|
@ -82,8 +79,6 @@ public class ShopGoodsDTO {
|
||||||
private String cabinetName;
|
private String cabinetName;
|
||||||
@ExcelColumn(name = "格口号")
|
@ExcelColumn(name = "格口号")
|
||||||
private Integer cellNo;
|
private Integer cellNo;
|
||||||
@ExcelColumn(name = "格口号")
|
|
||||||
private String cellNoStr;
|
|
||||||
@ExcelColumn(name = "已分配库存")
|
@ExcelColumn(name = "已分配库存")
|
||||||
private Integer totalStock;
|
private Integer totalStock;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ public class SearchShopGoodsQuery<T> extends AbstractPageQuery<T> {
|
||||||
protected String goodsName;
|
protected String goodsName;
|
||||||
protected Long categoryId;
|
protected Long categoryId;
|
||||||
protected Integer status;
|
protected Integer status;
|
||||||
protected Integer autoApproval;
|
|
||||||
protected BigDecimal minPrice;
|
protected BigDecimal minPrice;
|
||||||
protected BigDecimal maxPrice;
|
protected BigDecimal maxPrice;
|
||||||
|
|
||||||
|
@ -26,11 +25,9 @@ public class SearchShopGoodsQuery<T> extends AbstractPageQuery<T> {
|
||||||
.like(StrUtil.isNotEmpty(goodsName), "g.goods_name", goodsName)
|
.like(StrUtil.isNotEmpty(goodsName), "g.goods_name", goodsName)
|
||||||
.eq(categoryId != null, "cc.cabinet_id", categoryId)
|
.eq(categoryId != null, "cc.cabinet_id", categoryId)
|
||||||
.eq(status != null, "g.status", status)
|
.eq(status != null, "g.status", status)
|
||||||
.eq(autoApproval != null, "g.auto_approval", autoApproval)
|
|
||||||
.ge(minPrice != null, "g.price", minPrice)
|
.ge(minPrice != null, "g.price", minPrice)
|
||||||
.le(maxPrice != null, "g.price", maxPrice)
|
.le(maxPrice != null, "g.price", maxPrice)
|
||||||
.eq("g.deleted", 0)
|
.eq("g.deleted", 0);
|
||||||
.groupBy("g.goods_id");
|
|
||||||
|
|
||||||
this.timeRangeColumn = "create_time";
|
this.timeRangeColumn = "create_time";
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@ package com.agileboot.domain.shop.order;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.agileboot.common.constant.PayApiConstants;
|
import com.agileboot.common.constant.PayApiConstants;
|
||||||
import com.agileboot.common.core.page.PageDTO;
|
|
||||||
import com.agileboot.common.exception.ApiException;
|
import com.agileboot.common.exception.ApiException;
|
||||||
import com.agileboot.common.exception.error.ErrorCode;
|
import com.agileboot.common.exception.error.ErrorCode;
|
||||||
import com.agileboot.domain.cabinet.cell.db.CabinetCellEntity;
|
import com.agileboot.domain.cabinet.cell.db.CabinetCellEntity;
|
||||||
|
@ -23,12 +22,10 @@ import com.agileboot.domain.shop.order.db.ShopOrderGoodsEntity;
|
||||||
import com.agileboot.domain.shop.order.db.ShopOrderGoodsService;
|
import com.agileboot.domain.shop.order.db.ShopOrderGoodsService;
|
||||||
import com.agileboot.domain.shop.order.dto.CreateOrderResult;
|
import com.agileboot.domain.shop.order.dto.CreateOrderResult;
|
||||||
import com.agileboot.domain.shop.order.dto.GetOrdersByOpenIdDTO;
|
import com.agileboot.domain.shop.order.dto.GetOrdersByOpenIdDTO;
|
||||||
import com.agileboot.domain.shop.order.dto.ShopOrderDTO;
|
|
||||||
import com.agileboot.domain.shop.order.model.OrderModel;
|
import com.agileboot.domain.shop.order.model.OrderModel;
|
||||||
import com.agileboot.domain.shop.order.model.OrderModelFactory;
|
import com.agileboot.domain.shop.order.model.OrderModelFactory;
|
||||||
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.query.SearchShopOrderQuery;
|
|
||||||
import com.agileboot.domain.shop.payment.PaymentApplicationService;
|
import com.agileboot.domain.shop.payment.PaymentApplicationService;
|
||||||
import com.agileboot.domain.shop.payment.dto.WxJsApiPreCreateRequest;
|
import com.agileboot.domain.shop.payment.dto.WxJsApiPreCreateRequest;
|
||||||
import com.agileboot.domain.shop.payment.dto.WxJsApiPreCreateResponse;
|
import com.agileboot.domain.shop.payment.dto.WxJsApiPreCreateResponse;
|
||||||
|
@ -39,8 +36,6 @@ import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@ -65,10 +60,11 @@ public class OrderApplicationService {
|
||||||
private final QyUserService userService;
|
private final QyUserService userService;
|
||||||
private final QyUserModelFactory qyUserModelFactory;
|
private final QyUserModelFactory qyUserModelFactory;
|
||||||
|
|
||||||
public PageDTO<ShopOrderEntity> getOrderList(SearchShopOrderQuery<ShopOrderEntity> query) {
|
/*public PageDTO<ShopOrderDTO> getOrderList(SearchShopOrderQuery<> query) {
|
||||||
Page<ShopOrderEntity> page = orderService.page(query.toPage(), query.toQueryWrapper());
|
Page<ShopOrderEntity> page = orderService.page(query.toPage(), query.toQueryWrapper());
|
||||||
return new PageDTO<>(page.getRecords(), page.getTotal());
|
List<ShopOrderDTO> dtoList = page.getRecords().stream().map(ShopOrderDTO::new).collect(Collectors.toList());
|
||||||
}
|
return new PageDTO<>(dtoList, page.getTotal());
|
||||||
|
}*/
|
||||||
|
|
||||||
public void openOrderGoodsCabinet(Long orderId, Long orderGoodsId) {
|
public void openOrderGoodsCabinet(Long orderId, Long orderGoodsId) {
|
||||||
OrderModel orderModel = orderModelFactory.loadById(orderId);
|
OrderModel orderModel = orderModelFactory.loadById(orderId);
|
||||||
|
@ -201,7 +197,7 @@ public class OrderApplicationService {
|
||||||
goodsModel.insert();
|
goodsModel.insert();
|
||||||
|
|
||||||
// 扣减库存
|
// 扣减库存
|
||||||
deductGoodsStock(goodsModel.getGoodsId(), goodsModel.getQuantity(), goodsModel.getCellId());
|
deductGoodsStock(goodsModel.getGoodsId(), goodsModel.getQuantity());
|
||||||
|
|
||||||
totalAmount = totalAmount.add(goodsModel.getTotalAmount());
|
totalAmount = totalAmount.add(goodsModel.getTotalAmount());
|
||||||
}
|
}
|
||||||
|
@ -212,20 +208,11 @@ public class OrderApplicationService {
|
||||||
orderModel.updateById();
|
orderModel.updateById();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deductGoodsStock(Long goodsId, Integer quantity, Long cellId) {
|
private void deductGoodsStock(Long goodsId, Integer quantity) {
|
||||||
CabinetCellEntity cabinetCellEntity = cabinetCellService.getById(cellId);
|
|
||||||
if (cabinetCellEntity == null || cabinetCellEntity.getStock() < quantity) {
|
|
||||||
throw new ApiException(ErrorCode.FAILED, "柜子库存不足");
|
|
||||||
}
|
|
||||||
|
|
||||||
ShopGoodsEntity goods = goodsService.getById(goodsId);
|
ShopGoodsEntity goods = goodsService.getById(goodsId);
|
||||||
if (goods == null || goods.getStock() < quantity) {
|
if (goods == null || goods.getStock() < quantity) {
|
||||||
throw new ApiException(ErrorCode.FAILED, "商品库存不足");
|
throw new ApiException(ErrorCode.FAILED, "商品库存不足");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 扣减库存
|
|
||||||
cabinetCellEntity.setStock(cabinetCellEntity.getStock() - quantity);
|
|
||||||
cabinetCellService.updateById(cabinetCellEntity);
|
|
||||||
goods.setStock(goods.getStock() - quantity);
|
goods.setStock(goods.getStock() - quantity);
|
||||||
goodsService.updateById(goods);
|
goodsService.updateById(goods);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,6 @@ CREATE TABLE `return_approval` (
|
||||||
`audit_images` VARCHAR(2048) NULL COMMENT '审核图片路径数组',
|
`audit_images` VARCHAR(2048) NULL COMMENT '审核图片路径数组',
|
||||||
`return_remark` VARCHAR(1024) NULL COMMENT '归还说明',
|
`return_remark` VARCHAR(1024) NULL COMMENT '归还说明',
|
||||||
`audit_remark` VARCHAR(1024) NULL COMMENT '审核说明',
|
`audit_remark` VARCHAR(1024) NULL COMMENT '审核说明',
|
||||||
`audit_name` varchar(30) DEFAULT NULL COMMENT '审批人',
|
|
||||||
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '审批状态(1待审核 2已通过 3已驳回)',
|
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '审批状态(1待审核 2已通过 3已驳回)',
|
||||||
`creator_id` BIGINT NOT NULL DEFAULT 0 COMMENT '创建者ID',
|
`creator_id` BIGINT NOT NULL DEFAULT 0 COMMENT '创建者ID',
|
||||||
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
DROP TABLE IF EXISTS `cabinet_cell_operation`;
|
|
||||||
|
|
||||||
CREATE TABLE `cabinet_cell_operation` (
|
|
||||||
`operation_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '操作流水号',
|
|
||||||
`cell_id` BIGINT NOT NULL COMMENT '关联格口ID',
|
|
||||||
`goods_id` BIGINT NOT NULL COMMENT '关联商品ID',
|
|
||||||
`goods_name` VARCHAR(255) NOT NULL COMMENT '商品名称',
|
|
||||||
`userid` varchar(100) NOT NULL COMMENT '企业微信用户ID',
|
|
||||||
`is_internal` TINYINT(1) DEFAULT 0 COMMENT '是否内部用户(0否 1是)',
|
|
||||||
`name` varchar(30) DEFAULT NULL COMMENT '成员名称',
|
|
||||||
`mobile` varchar(30) DEFAULT NULL COMMENT '手机号码',
|
|
||||||
`operation_type` TINYINT NOT NULL COMMENT '操作类型(1用户 2管理员)',
|
|
||||||
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '操作状态(1正常 2操作失败)',
|
|
||||||
`creator_id` BIGINT NOT NULL DEFAULT 0 COMMENT '创建者ID',
|
|
||||||
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
||||||
`updater_id` BIGINT NOT NULL DEFAULT 0 COMMENT '更新者ID',
|
|
||||||
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
||||||
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志(0存在 1删除)',
|
|
||||||
PRIMARY KEY (`operation_id`),
|
|
||||||
KEY `idx_cell` (`cell_id`),
|
|
||||||
KEY `idx_user` (`userid`),
|
|
||||||
KEY `idx_operation_time` (`create_time`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='柜机格口操作记录表';
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE `shop_goods`
|
|
||||||
ADD COLUMN `auto_approval` TINYINT NOT NULL DEFAULT 0 COMMENT '免审批(0否 1是)' AFTER `status`;
|
|
Loading…
Reference in New Issue