购物车
This commit is contained in:
@ -113,6 +113,8 @@ public interface ErrorCodeConstants {
|
||||
|
||||
ErrorCode STORE_ORDER_NOT_EXISTS = new ErrorCode(1_007_904_005, "商品订单不存在");
|
||||
|
||||
ErrorCode AMOUNT_NOT_ENOUGH = new ErrorCode(1_007_904_005, "金额不足");
|
||||
|
||||
ErrorCode STORE_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_007_904_006,"商品订单详情不存在");
|
||||
//========== 用户余额明细 1-004-014-000 =============
|
||||
ErrorCode SPACE_CAPSULE_NOT_EXISTS = new ErrorCode(1_004_014_001, "太空舱不存在");
|
||||
@ -123,5 +125,7 @@ public interface ErrorCodeConstants {
|
||||
ErrorCode ORDER_SPACE_CAPSULE_ERREO = new ErrorCode(1_004_016_002, "太空舱订单状态非法");
|
||||
|
||||
ErrorCode STORE_BUSINESS_NOT_EXISTS = new ErrorCode(1_004_017_001, "超市营业统计不存在");
|
||||
|
||||
ErrorCode STORE_SHOPPING_CART_NOT_EXISTS = new ErrorCode(1_004_018_001, "小程序商品购物车不存在");
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.excel.core.handler.SelectSheetWriteHandler;
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreOrderExcelVO;
|
||||
import cn.iocoder.yudao.module.member.service.customizeExcel.CustomizeExcelService;
|
||||
import cn.iocoder.yudao.module.member.util.CustomMergeStrategy;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
@ -54,7 +55,7 @@ public class CustomizeExcelController {
|
||||
|
||||
List<OrderExcelVO> orderExcelVOS = excelService.exportOrderExcel(startTime, endTime,carteenId);
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "订单详情统计.xls", "数据", OrderExcelVO.class,
|
||||
ExcelUtils.write(response, "订单详情统计.xlsx", "数据", OrderExcelVO.class,
|
||||
orderExcelVOS);
|
||||
}
|
||||
@GetMapping("/orderExcel1")
|
||||
@ -143,4 +144,18 @@ public class CustomizeExcelController {
|
||||
header.createCell(7).setCellValue("重量(g)");
|
||||
header.createCell(8).setCellValue("价格(元)");
|
||||
}
|
||||
|
||||
@GetMapping("/storeOrderExcel")
|
||||
@Operation(summary = "导出超市订单详情")
|
||||
@OperateLog(type = EXPORT)
|
||||
public void exportStoreOrderExcel(String startTime,String endTime,Long carteenId,
|
||||
HttpServletResponse response) throws IOException {
|
||||
|
||||
List<StoreOrderExcelVO> orderExcelVOS = excelService.exportStoreOrderExcel(startTime, endTime,carteenId);
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "订单详情统计.xlsx", "数据", StoreOrderExcelVO.class,
|
||||
orderExcelVOS);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.annotation.format.NumberFormat;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class StoreOrderExcelVO {
|
||||
|
||||
@ExcelProperty("用户名")
|
||||
private String nickname;
|
||||
|
||||
@ExcelProperty("手机")
|
||||
private String mobile;
|
||||
|
||||
@ExcelProperty("时间段")
|
||||
private String timeSlot;
|
||||
|
||||
@ExcelProperty("总价")
|
||||
@NumberFormat("#0.00")
|
||||
private Double totalPrice;
|
||||
|
||||
@ExcelProperty("商品")
|
||||
private String goodsName;
|
||||
|
||||
@ExcelProperty("单价(元)")
|
||||
@NumberFormat("#0.00")
|
||||
private Double customPrice;
|
||||
|
||||
@ExcelProperty("数量")
|
||||
private Integer number;
|
||||
|
||||
@ExcelProperty("重量(g)")
|
||||
private String weight;
|
||||
|
||||
@ExcelProperty("日期")
|
||||
private String dayTime;
|
||||
|
||||
}
|
@ -39,39 +39,39 @@ public class StoreBusinessRespVO {
|
||||
private BigDecimal reduce;
|
||||
|
||||
@Schema(description = "补贴钱包")
|
||||
@ExcelProperty("补贴钱包")
|
||||
@ExcelIgnore
|
||||
private BigDecimal subsidyPurse;
|
||||
|
||||
@Schema(description = "VIP免单")
|
||||
@ExcelProperty("VIP免单")
|
||||
@ExcelIgnore
|
||||
private Integer gratis;
|
||||
|
||||
@Schema(description = "早餐")
|
||||
@ExcelProperty("早餐")
|
||||
@ExcelProperty("早上")
|
||||
private BigDecimal breakfast;
|
||||
|
||||
@Schema(description = "早餐订单")
|
||||
@ExcelProperty("早餐订单")
|
||||
@ExcelProperty("早上订单")
|
||||
private Integer breakfastNum;
|
||||
|
||||
@Schema(description = "午餐")
|
||||
@ExcelProperty("午餐")
|
||||
@ExcelProperty("中午")
|
||||
private BigDecimal lunch;
|
||||
|
||||
@Schema(description = "午餐订单")
|
||||
@ExcelProperty("午餐订单")
|
||||
@ExcelProperty("中午订单")
|
||||
private Integer lunchNum;
|
||||
|
||||
@Schema(description = "晚餐")
|
||||
@ExcelProperty("晚餐")
|
||||
@ExcelProperty("晚上")
|
||||
private BigDecimal dinner;
|
||||
|
||||
@Schema(description = "晚餐订单")
|
||||
@ExcelProperty("晚餐订单")
|
||||
@ExcelProperty("晚上订单")
|
||||
private Integer dinnerNum;
|
||||
|
||||
@Schema(description = "智能称重")
|
||||
@ExcelProperty("智能称重")
|
||||
@ExcelIgnore
|
||||
private BigDecimal weigh;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
|
@ -106,13 +106,12 @@ public class StoreOrderController {
|
||||
@Operation(summary = "导出商品订单 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('member:store-order:export')")
|
||||
@OperateLog(type = EXPORT)
|
||||
public void exportStoreOrderExcel(@Valid StoreOrderPageReqVO pageReqVO,
|
||||
public void exportStoreOrderExcel(@Valid StoreOrderPageVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<StoreOrderDO> list = storeOrderService.getStoreOrderPage(pageReqVO).getList();
|
||||
List<StoreOrderPageVO> list = storeOrderService.getStoreOrderPageNewList(pageReqVO);
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "商品订单.xls", "数据", StoreOrderRespVO.class,
|
||||
BeanUtils.toBean(list, StoreOrderRespVO.class));
|
||||
ExcelUtils.write(response, "商品订单统计.xls", "数据", StoreOrderPageVO.class,
|
||||
list );
|
||||
}
|
||||
|
||||
@GetMapping("/reduction")
|
||||
|
@ -1,6 +1,8 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.storeorder.vo;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import com.alibaba.excel.annotation.ExcelIgnore;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@ -18,33 +20,52 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
|
||||
public class StoreOrderPageVO extends PageParam {
|
||||
|
||||
|
||||
@Schema(description = "总价钱", example = "1722")
|
||||
private Double totalPrice;
|
||||
@Schema(description = "订单ID", example = "1722")
|
||||
@ExcelProperty("订单号")
|
||||
private Integer orderId;
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime createTime;
|
||||
@Schema(description = "用户", example = "1722")
|
||||
private String nickName;
|
||||
@Schema(description = "手机", example = "1722")
|
||||
private String mobile;
|
||||
|
||||
@Schema(description = "门店", example = "1722")
|
||||
@ExcelProperty("门店")
|
||||
private String storesName;
|
||||
|
||||
@Schema(description = "用户", example = "1722")
|
||||
@ExcelProperty("用户")
|
||||
private String nickName;
|
||||
|
||||
@Schema(description = "手机", example = "1722")
|
||||
@ExcelProperty("手机")
|
||||
private String mobile;
|
||||
|
||||
@Schema(description = "总价钱", example = "1722")
|
||||
@ExcelProperty("价钱")
|
||||
private Double totalPrice;
|
||||
|
||||
@Schema(description = "减免金额")
|
||||
@ExcelProperty("减免金额")
|
||||
private Double reductionPrice;
|
||||
|
||||
@Schema(description = "时间段", example = "1722")
|
||||
private String timePeriod;
|
||||
|
||||
private String startDate;
|
||||
|
||||
private String endDate;
|
||||
|
||||
@Schema(description = "门店", example = "1722")
|
||||
@ExcelIgnore
|
||||
private Long carteenId;
|
||||
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@ExcelIgnore
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
|
||||
@Schema(description = "时间段", example = "1722")
|
||||
@ExcelIgnore
|
||||
private String timePeriod;
|
||||
|
||||
@ExcelIgnore
|
||||
private String startDate;
|
||||
|
||||
@ExcelIgnore
|
||||
private String endDate;
|
||||
|
||||
@Schema(description = "订单状态", example = "1722")
|
||||
@ExcelIgnore
|
||||
private Integer status;
|
||||
}
|
@ -0,0 +1,95 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
|
||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.*;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeshoppingcart.StoreShoppingCartDO;
|
||||
import cn.iocoder.yudao.module.member.service.storeshoppingcart.StoreShoppingCartService;
|
||||
|
||||
@Tag(name = "管理后台 - 小程序商品购物车")
|
||||
@RestController
|
||||
@RequestMapping("/member/store-shopping-cart")
|
||||
@Validated
|
||||
public class StoreShoppingCartController {
|
||||
|
||||
@Resource
|
||||
private StoreShoppingCartService storeShoppingCartService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建小程序商品购物车")
|
||||
@PreAuthorize("@ss.hasPermission('member:store-shopping-cart:create')")
|
||||
public CommonResult<Long> createStoreShoppingCart(@Valid @RequestBody StoreShoppingCartSaveReqVO createReqVO) {
|
||||
return success(storeShoppingCartService.createStoreShoppingCart(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新小程序商品购物车")
|
||||
@PreAuthorize("@ss.hasPermission('member:store-shopping-cart:update')")
|
||||
public CommonResult<Boolean> updateStoreShoppingCart(@Valid @RequestBody StoreShoppingCartSaveReqVO updateReqVO) {
|
||||
storeShoppingCartService.updateStoreShoppingCart(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除小程序商品购物车")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('member:store-shopping-cart:delete')")
|
||||
public CommonResult<Boolean> deleteStoreShoppingCart(@RequestParam("id") Long id) {
|
||||
storeShoppingCartService.deleteStoreShoppingCart(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得小程序商品购物车")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('member:store-shopping-cart:query')")
|
||||
public CommonResult<StoreShoppingCartRespVO> getStoreShoppingCart(@RequestParam("id") Long id) {
|
||||
StoreShoppingCartDO storeShoppingCart = storeShoppingCartService.getStoreShoppingCart(id);
|
||||
return success(BeanUtils.toBean(storeShoppingCart, StoreShoppingCartRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得小程序商品购物车分页")
|
||||
@PreAuthorize("@ss.hasPermission('member:store-shopping-cart:query')")
|
||||
public CommonResult<PageResult<StoreShoppingCartRespVO>> getStoreShoppingCartPage(@Valid StoreShoppingCartPageReqVO pageReqVO) {
|
||||
PageResult<StoreShoppingCartDO> pageResult = storeShoppingCartService.getStoreShoppingCartPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, StoreShoppingCartRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出小程序商品购物车 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('member:store-shopping-cart:export')")
|
||||
@OperateLog(type = EXPORT)
|
||||
public void exportStoreShoppingCartExcel(@Valid StoreShoppingCartPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<StoreShoppingCartDO> list = storeShoppingCartService.getStoreShoppingCartPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "小程序商品购物车.xls", "数据", StoreShoppingCartRespVO.class,
|
||||
BeanUtils.toBean(list, StoreShoppingCartRespVO.class));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Schema(description = "管理后台 - 小程序商品购物车分页 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class StoreShoppingCartPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "数量")
|
||||
private Integer number;
|
||||
|
||||
@Schema(description = "商品ID", example = "10013")
|
||||
private Integer goodsId;
|
||||
|
||||
@Schema(description = "用户ID", example = "19600")
|
||||
private Long userId;
|
||||
|
||||
@Schema(description = "门店ID", example = "13561")
|
||||
private Long carteenId;
|
||||
|
||||
@Schema(description = "是否选中")
|
||||
private Boolean selected;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo;
|
||||
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.util.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.excel.annotation.*;
|
||||
|
||||
@Schema(description = "管理后台 - 小程序商品购物车 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class StoreShoppingCartRespVO {
|
||||
|
||||
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4497")
|
||||
@ExcelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "数量")
|
||||
@ExcelProperty("数量")
|
||||
private Integer number;
|
||||
|
||||
@Schema(description = "商品ID", example = "10013")
|
||||
@ExcelProperty("商品ID")
|
||||
private Integer goodsId;
|
||||
|
||||
@Schema(description = "用户ID", example = "19600")
|
||||
@ExcelProperty("用户ID")
|
||||
private Long userId;
|
||||
|
||||
@Schema(description = "门店ID", example = "13561")
|
||||
@ExcelProperty("门店ID")
|
||||
private Long carteenId;
|
||||
|
||||
@Schema(description = "是否选中", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("是否选中")
|
||||
private Boolean selected;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "商品信息")
|
||||
@ExcelIgnore
|
||||
private StoreGoodsDO goodsInfo;
|
||||
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
@Schema(description = "管理后台 - 小程序商品购物车新增/修改 Request VO")
|
||||
@Data
|
||||
public class StoreShoppingCartSaveReqVO {
|
||||
|
||||
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4497")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "数量")
|
||||
private Integer number;
|
||||
|
||||
@Schema(description = "商品ID", example = "10013")
|
||||
private Integer goodsId;
|
||||
|
||||
@Schema(description = "用户ID", example = "19600")
|
||||
private Long userId;
|
||||
|
||||
@Schema(description = "门店ID", example = "13561")
|
||||
private Long carteenId;
|
||||
|
||||
@Schema(description = "是否选中", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "是否选中不能为空")
|
||||
private Boolean selected;
|
||||
|
||||
}
|
@ -10,7 +10,9 @@ import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderP
|
||||
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderSaveReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.storeorderdetail.vo.StoreOrderDetailRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderDto;
|
||||
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderDetailVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO;
|
||||
import cn.iocoder.yudao.module.member.service.storeorder.StoreOrderService;
|
||||
@ -60,6 +62,10 @@ public class AppStoreOrderController {
|
||||
return success(bean);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/appCreate")
|
||||
@Operation(summary = "购物车订单")
|
||||
public CommonResult<Boolean> appCreate(@RequestBody CardDto dto) {
|
||||
return success(storeOrderService.appCreate(dto));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package cn.iocoder.yudao.module.member.controller.app.storeorder.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AppStoreGoodsDetail {
|
||||
private Double customPrice;
|
||||
private Integer number;
|
||||
private Double weight;
|
||||
private String goodsName;
|
||||
private Integer goodsId;
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package cn.iocoder.yudao.module.member.controller.app.storeorder.vo;
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreGoodsDto;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class CardDto {
|
||||
|
||||
@Schema(description = "总价钱", example = "1722")
|
||||
private Double totalPrice;
|
||||
|
||||
@Schema(description = "用户ID")
|
||||
@ExcelProperty("用户")
|
||||
private Long userId;
|
||||
|
||||
@Schema(description = "商品详情")
|
||||
private List<AppStoreGoodsDetail> goodsList;
|
||||
|
||||
@Schema(description = "门店", example = "1722")
|
||||
private Long carteenId;
|
||||
|
||||
}
|
@ -0,0 +1,87 @@
|
||||
package cn.iocoder.yudao.module.member.controller.app.storeshoppingcart;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.StoreShoppingCartPageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.StoreShoppingCartRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.StoreShoppingCartSaveReqVO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeshoppingcart.StoreShoppingCartDO;
|
||||
import cn.iocoder.yudao.module.member.service.storegoods.StoreGoodsService;
|
||||
import cn.iocoder.yudao.module.member.service.storeshoppingcart.StoreShoppingCartService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
|
||||
@Tag(name = "管理后台 - 小程序商品购物车")
|
||||
@RestController
|
||||
@RequestMapping("/member/store-shopping-cart")
|
||||
@Validated
|
||||
public class AppStoreShoppingCartController {
|
||||
|
||||
@Resource
|
||||
private StoreShoppingCartService storeShoppingCartService;
|
||||
|
||||
@Resource
|
||||
private StoreGoodsService storeGoodsService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建小程序商品购物车")
|
||||
public CommonResult<Long> createStoreShoppingCart(@Valid @RequestBody StoreShoppingCartSaveReqVO createReqVO) {
|
||||
return success(storeShoppingCartService.createStoreShoppingCart(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新小程序商品购物车")
|
||||
public CommonResult<Boolean> updateStoreShoppingCart(@Valid @RequestBody StoreShoppingCartSaveReqVO updateReqVO) {
|
||||
storeShoppingCartService.updateStoreShoppingCart(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除小程序商品购物车")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
public CommonResult<Boolean> deleteStoreShoppingCart(@RequestParam("id") Long id) {
|
||||
storeShoppingCartService.deleteStoreShoppingCart(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得小程序商品购物车")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
public CommonResult<StoreShoppingCartRespVO> getStoreShoppingCart(@RequestParam("id") Long id) {
|
||||
StoreShoppingCartDO storeShoppingCart = storeShoppingCartService.getStoreShoppingCart(id);
|
||||
return success(BeanUtils.toBean(storeShoppingCart, StoreShoppingCartRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得小程序商品购物车分页")
|
||||
public CommonResult<PageResult<StoreShoppingCartRespVO>> getStoreShoppingCartPage(@Valid StoreShoppingCartPageReqVO pageReqVO) {
|
||||
PageResult<StoreShoppingCartDO> pageResult = storeShoppingCartService.getStoreShoppingCartPage(pageReqVO);
|
||||
PageResult<StoreShoppingCartRespVO> bean = BeanUtils.toBean(pageResult, StoreShoppingCartRespVO.class);
|
||||
List<StoreShoppingCartRespVO> list = bean.getList();
|
||||
List<Integer> goodsIds = list.stream().map(StoreShoppingCartRespVO::getGoodsId).collect(Collectors.toList());
|
||||
List<StoreGoodsDO> all = storeGoodsService.getAll(goodsIds);
|
||||
Map<Integer, StoreGoodsDO> map = all.stream().collect(Collectors.toMap(StoreGoodsDO::getGoodsId, a -> a));
|
||||
for (StoreShoppingCartRespVO vo : list) {
|
||||
vo.setGoodsInfo(map.get(vo.getGoodsId()));
|
||||
}
|
||||
return success(bean);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package cn.iocoder.yudao.module.member.dal.dataobject.storeshoppingcart;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
|
||||
/**
|
||||
* 小程序商品购物车 DO
|
||||
*
|
||||
* @author 管理员
|
||||
*/
|
||||
@TableName("member_store_shopping_cart")
|
||||
@KeySequence("member_store_shopping_cart_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class StoreShoppingCartDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private Integer number;
|
||||
/**
|
||||
* 商品ID
|
||||
*/
|
||||
private Integer goodsId;
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
/**
|
||||
* 门店ID
|
||||
*/
|
||||
private Long carteenId;
|
||||
/**
|
||||
* 是否选中
|
||||
*/
|
||||
private Boolean selected;
|
||||
|
||||
}
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.member.dal.mysql.customizeExcel;
|
||||
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreOrderExcelVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@ -12,4 +13,7 @@ public interface CustomizeExcelMapper {
|
||||
|
||||
|
||||
List<OrderExcelVO> selectOrder(@Param("startTime")String startTime, @Param("endTime")String endTime, @Param("carteenId")Long carteenId);
|
||||
|
||||
List<StoreOrderExcelVO> selectStoreOrder(@Param("startTime")String startTime, @Param("endTime")String endTime, @Param("carteenId")Long carteenId);
|
||||
|
||||
}
|
||||
|
@ -34,4 +34,5 @@ public interface StoreOrderMapper extends BaseMapperX<StoreOrderDO> {
|
||||
|
||||
IPage<StoreOrderPageVO> getStoreOrderPageNew(IPage<StoreOrderPageVO> page, @Param("vo") StoreOrderPageVO vo);
|
||||
|
||||
List<StoreOrderPageVO> getStoreOrderPageNewList(@Param("vo") StoreOrderPageVO vo);
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package cn.iocoder.yudao.module.member.dal.mysql.storeshoppingcart;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeshoppingcart.StoreShoppingCartDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.*;
|
||||
|
||||
/**
|
||||
* 小程序商品购物车 Mapper
|
||||
*
|
||||
* @author 管理员
|
||||
*/
|
||||
@Mapper
|
||||
public interface StoreShoppingCartMapper extends BaseMapperX<StoreShoppingCartDO> {
|
||||
|
||||
default PageResult<StoreShoppingCartDO> selectPage(StoreShoppingCartPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<StoreShoppingCartDO>()
|
||||
.eqIfPresent(StoreShoppingCartDO::getNumber, reqVO.getNumber())
|
||||
.eqIfPresent(StoreShoppingCartDO::getGoodsId, reqVO.getGoodsId())
|
||||
.eqIfPresent(StoreShoppingCartDO::getUserId, reqVO.getUserId())
|
||||
.eqIfPresent(StoreShoppingCartDO::getCarteenId, reqVO.getCarteenId())
|
||||
.eqIfPresent(StoreShoppingCartDO::getSelected, reqVO.getSelected())
|
||||
.betweenIfPresent(StoreShoppingCartDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(StoreShoppingCartDO::getId));
|
||||
}
|
||||
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package cn.iocoder.yudao.module.member.service.customizeExcel;
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreOrderExcelVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -11,4 +12,6 @@ public interface CustomizeExcelService {
|
||||
|
||||
|
||||
List<OrderExcelVO> exportOrderExcel(String startTime,String endTime,Long carteenId);
|
||||
|
||||
List<StoreOrderExcelVO> exportStoreOrderExcel(String startTime, String endTime, Long carteenId);
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package cn.iocoder.yudao.module.member.service.customizeExcel;
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreOrderExcelVO;
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.customizeExcel.CustomizeExcelMapper;
|
||||
import cn.iocoder.yudao.module.member.service.devicewarn.DeviceWarnService;
|
||||
import cn.iocoder.yudao.module.system.api.deviceInfo.DeviceInfoApi;
|
||||
@ -20,4 +21,9 @@ public class CustomizeExcelServiceImpl implements CustomizeExcelService {
|
||||
public List<OrderExcelVO> exportOrderExcel(String startTime, String endTime,Long carteenId) {
|
||||
return customizeExcelMapper.selectOrder(startTime,endTime,carteenId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StoreOrderExcelVO> exportStoreOrderExcel(String startTime, String endTime, Long carteenId) {
|
||||
return customizeExcelMapper.selectStoreOrder(startTime,endTime,carteenId);
|
||||
}
|
||||
}
|
||||
|
@ -8,10 +8,13 @@ import cn.iocoder.yudao.module.member.controller.app.store.dto.FacePayDto;
|
||||
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderDto;
|
||||
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderUploadDto;
|
||||
import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商品订单 Service 接口
|
||||
@ -70,5 +73,9 @@ public interface StoreOrderService {
|
||||
|
||||
PageResult<StoreOrderPageVO> getStoreOrderPageNew(StoreOrderPageVO pageReqVO);
|
||||
|
||||
List<StoreOrderPageVO> getStoreOrderPageNewList(StoreOrderPageVO pageReqVO);
|
||||
|
||||
void reduction(Long orderId, BigDecimal money);
|
||||
|
||||
Boolean appCreate(@RequestBody CardDto dto);
|
||||
}
|
@ -15,7 +15,10 @@ import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreLocalOrderDt
|
||||
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderDto;
|
||||
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderUploadDto;
|
||||
import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreGoodsDetail;
|
||||
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||
@ -23,6 +26,7 @@ import cn.iocoder.yudao.module.member.dal.mysql.storeorder.StoreOrderMapper;
|
||||
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
||||
import cn.iocoder.yudao.module.member.enums.StoreOrderStatusEnum;
|
||||
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
||||
import cn.iocoder.yudao.module.member.service.amount.AmountService;
|
||||
import cn.iocoder.yudao.module.member.service.amount.DeductionService;
|
||||
import cn.iocoder.yudao.module.member.service.card.CardService;
|
||||
import cn.iocoder.yudao.module.member.service.storebusiness.StoreBusinessService;
|
||||
@ -45,6 +49,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.AMOUNT_NOT_ENOUGH;
|
||||
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_ORDER_NOT_EXISTS;
|
||||
import static cn.iocoder.yudao.module.member.util.QRCodeWithJWTUtil.validateJWT;
|
||||
|
||||
@ -76,7 +81,8 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
||||
private CashregisterinfoApi cashregisterinfoApi;
|
||||
@Resource
|
||||
private StoreBusinessService storeBusinessService;
|
||||
|
||||
@Resource
|
||||
private AmountService amountService;
|
||||
|
||||
@Resource
|
||||
private StringRedisTemplate storeOrderRedisTemplate;
|
||||
@ -192,6 +198,16 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
||||
if (StrUtil.isBlank(s)) {
|
||||
return "二维码过期";
|
||||
}
|
||||
|
||||
List<StoreGoodsDto> equipmentGoodsCustoms = dto.getEquipmentGoodsCustoms();
|
||||
double sum = equipmentGoodsCustoms.stream()
|
||||
.mapToDouble(StoreGoodsDto::getTotalPrice)
|
||||
.sum();
|
||||
BigDecimal totalMoney = BigDecimal.valueOf(sum);
|
||||
BigDecimal amount = amountService.getAmount(dto.getUserId());
|
||||
if(amount.compareTo(totalMoney) < 0){
|
||||
return "金额不足";
|
||||
}
|
||||
MemberUserDO user = userService.getUser(Long.valueOf(s));
|
||||
dto.setUserId(user.getId());
|
||||
StoreOrderDO order = createOrder(dto,StoreOrderStatusEnum.COMPLETE.getCode());
|
||||
@ -200,6 +216,8 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
||||
|
||||
BigDecimal compute = compute(total, user.getId());
|
||||
if (compute.compareTo(BigDecimal.ZERO) < 0) {
|
||||
storeOrderMapper.deleteById(order.getOrderId());
|
||||
orderDetailService.deleteByOrderNo(order.getOrderId());
|
||||
return "金额不足";
|
||||
}
|
||||
//营业数据
|
||||
@ -252,6 +270,11 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
||||
return new PageResult<>(records, pageNew.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StoreOrderPageVO> getStoreOrderPageNewList(StoreOrderPageVO pageReqVO) {
|
||||
return storeOrderMapper.getStoreOrderPageNewList(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reduction(Long orderId, BigDecimal money) {
|
||||
StoreOrderDO storeOrderDO = storeOrderMapper.selectById(orderId);
|
||||
@ -273,6 +296,40 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
||||
storeBusinessService.updateStatistics(statisticsVo);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean appCreate(CardDto dto) {
|
||||
BigDecimal amount = amountService.getAmount(dto.getUserId());
|
||||
BigDecimal total = BigDecimal.valueOf(dto.getTotalPrice());
|
||||
if(amount.compareTo(total) < 0){
|
||||
throw exception(AMOUNT_NOT_ENOUGH);
|
||||
}
|
||||
|
||||
//创建订单
|
||||
StoreOrderDO storeOrderDO = new StoreOrderDO();
|
||||
BeanUtil.copyProperties(dto, storeOrderDO);
|
||||
storeOrderDO.setStatus(StoreOrderStatusEnum.PAY.getCode());
|
||||
storeOrderMapper.insert(storeOrderDO);
|
||||
List<AppStoreGoodsDetail> goodsList = dto.getGoodsList();
|
||||
ArrayList<StoreOrderDetailDO> addList = new ArrayList<>();
|
||||
for(AppStoreGoodsDetail goodsDetail : goodsList){
|
||||
StoreOrderDetailDO storeOrderDetailDO = new StoreOrderDetailDO();
|
||||
BeanUtil.copyProperties(goodsDetail, storeOrderDetailDO);
|
||||
storeOrderDetailDO.setOrderId(storeOrderDO.getOrderId());
|
||||
addList.add(storeOrderDetailDO);
|
||||
}
|
||||
orderDetailService.saveBatch(addList);
|
||||
|
||||
//扣款
|
||||
BigDecimal compute = compute(total, dto.getUserId());
|
||||
if (compute.compareTo(BigDecimal.ZERO) < 0) {
|
||||
storeOrderMapper.deleteById(storeOrderDO.getOrderId());
|
||||
orderDetailService.deleteByOrderNo(storeOrderDO.getOrderId());
|
||||
throw exception(AMOUNT_NOT_ENOUGH);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void test() {
|
||||
//计算金额
|
||||
//if (total.compareTo(wxAmount) <= 0) {
|
||||
|
@ -56,4 +56,6 @@ public interface StoreOrderDetailService {
|
||||
void saveBatch(List<StoreOrderDetailDO> list);
|
||||
|
||||
List<AppStoreOrderDetailVo> getListByOrderNo(Integer orderId);
|
||||
|
||||
void deleteByOrderNo(Integer orderId);
|
||||
}
|
@ -82,4 +82,9 @@ public class StoreOrderDetailServiceImpl implements StoreOrderDetailService {
|
||||
public List<AppStoreOrderDetailVo> getListByOrderNo(Integer orderId) {
|
||||
return storeOrderDetailMapper.selectByOrderId(orderId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByOrderNo(Integer orderId) {
|
||||
storeOrderDetailMapper.delete(Wrappers.<StoreOrderDetailDO>lambdaQuery().eq(StoreOrderDetailDO::getOrderId,orderId));
|
||||
}
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
package cn.iocoder.yudao.module.member.service.storeshoppingcart;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.*;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeshoppingcart.StoreShoppingCartDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
|
||||
/**
|
||||
* 小程序商品购物车 Service 接口
|
||||
*
|
||||
* @author 管理员
|
||||
*/
|
||||
public interface StoreShoppingCartService {
|
||||
|
||||
/**
|
||||
* 创建小程序商品购物车
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createStoreShoppingCart(@Valid StoreShoppingCartSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新小程序商品购物车
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateStoreShoppingCart(@Valid StoreShoppingCartSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除小程序商品购物车
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteStoreShoppingCart(Long id);
|
||||
|
||||
/**
|
||||
* 获得小程序商品购物车
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 小程序商品购物车
|
||||
*/
|
||||
StoreShoppingCartDO getStoreShoppingCart(Long id);
|
||||
|
||||
/**
|
||||
* 获得小程序商品购物车分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 小程序商品购物车分页
|
||||
*/
|
||||
PageResult<StoreShoppingCartDO> getStoreShoppingCartPage(StoreShoppingCartPageReqVO pageReqVO);
|
||||
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
package cn.iocoder.yudao.module.member.service.storeshoppingcart;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.*;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeshoppingcart.StoreShoppingCartDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.storeshoppingcart.StoreShoppingCartMapper;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
* 小程序商品购物车 Service 实现类
|
||||
*
|
||||
* @author 管理员
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class StoreShoppingCartServiceImpl implements StoreShoppingCartService {
|
||||
|
||||
@Resource
|
||||
private StoreShoppingCartMapper storeShoppingCartMapper;
|
||||
|
||||
@Override
|
||||
public Long createStoreShoppingCart(StoreShoppingCartSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
Long id ;
|
||||
List<StoreShoppingCartDO> storeShoppingCartDOS = storeShoppingCartMapper.selectList(Wrappers.<StoreShoppingCartDO>lambdaQuery()
|
||||
.eq(StoreShoppingCartDO::getUserId, createReqVO.getUserId())
|
||||
.eq(StoreShoppingCartDO::getCarteenId, createReqVO.getCarteenId()));
|
||||
if(CollectionUtil.isNotEmpty(storeShoppingCartDOS)){
|
||||
StoreShoppingCartDO storeShoppingCartDO = storeShoppingCartDOS.get(0);
|
||||
storeShoppingCartDO.setNumber(storeShoppingCartDO.getNumber()+createReqVO.getNumber());
|
||||
storeShoppingCartMapper.updateById(storeShoppingCartDO);
|
||||
id = storeShoppingCartDO.getId();
|
||||
}else {
|
||||
StoreShoppingCartDO storeShoppingCart = BeanUtils.toBean(createReqVO, StoreShoppingCartDO.class);
|
||||
storeShoppingCartMapper.insert(storeShoppingCart);
|
||||
id = storeShoppingCart.getId();
|
||||
}
|
||||
// 返回
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStoreShoppingCart(StoreShoppingCartSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateStoreShoppingCartExists(updateReqVO.getId());
|
||||
// 更新
|
||||
StoreShoppingCartDO updateObj = BeanUtils.toBean(updateReqVO, StoreShoppingCartDO.class);
|
||||
storeShoppingCartMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteStoreShoppingCart(Long id) {
|
||||
// 校验存在
|
||||
validateStoreShoppingCartExists(id);
|
||||
// 删除
|
||||
storeShoppingCartMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void validateStoreShoppingCartExists(Long id) {
|
||||
if (storeShoppingCartMapper.selectById(id) == null) {
|
||||
throw exception(STORE_SHOPPING_CART_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public StoreShoppingCartDO getStoreShoppingCart(Long id) {
|
||||
return storeShoppingCartMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<StoreShoppingCartDO> getStoreShoppingCartPage(StoreShoppingCartPageReqVO pageReqVO) {
|
||||
return storeShoppingCartMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
}
|
@ -31,4 +31,28 @@
|
||||
order by mo.user_id,order_id
|
||||
</select>
|
||||
|
||||
<select id="selectStoreOrder" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreOrderExcelVO">
|
||||
select
|
||||
mu.nickname ,
|
||||
mu.mobile ,
|
||||
CASE
|
||||
WHEN HOUR(mo.create_time) BETWEEN 0 AND 9 THEN '早'
|
||||
WHEN HOUR(mo.create_time) BETWEEN 10 AND 15 THEN '中'
|
||||
WHEN HOUR(mo.create_time) BETWEEN 16 AND 23 THEN '晚'
|
||||
ELSE '未知'
|
||||
END AS timeSlot,
|
||||
mo.total_price ,
|
||||
md.goods_name ,
|
||||
md.custom_price ,
|
||||
md.weight ,
|
||||
md.number,
|
||||
DATE_FORMAT(md.create_time, '%Y-%m-%d %H:%i:%s') as dayTime
|
||||
from member_store_order_detail md
|
||||
left join member_store_order mo on md.order_id = mo.order_id
|
||||
left join member_user mu on mu.id = mo.user_id
|
||||
where DATE_FORMAT(md.create_time, '%Y%m%d') between #{startTime} and #{endTime} and mo.carteen_id = #{carteenId}
|
||||
and md.deleted = false
|
||||
order by mo.user_id,mo.order_id
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -35,4 +35,30 @@
|
||||
order by so.order_id DESC
|
||||
</select>
|
||||
|
||||
<select id="getStoreOrderPageNewList"
|
||||
resultType="cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderPageVO">
|
||||
select so.order_id,so.total_price,so.create_time,mu.nickname,mu.mobile,so.reduction_price,so.carteen_id,so.status
|
||||
from member_store_order so
|
||||
left join member_user mu on so.user_id = mu.id
|
||||
<where>
|
||||
so.deleted = false
|
||||
<if test="vo.orderId != null">
|
||||
and so.order_id = #{vo.orderId}
|
||||
</if>
|
||||
<if test="vo.nickName != null and vo.nickName != ''">
|
||||
and mu.nickname like concat('%',#{vo.nickName},'%')
|
||||
</if>
|
||||
<if test="vo.mobile != null and vo.mobile != ''">
|
||||
and mu.mobile like concat('%',#{vo.mobile},'%')
|
||||
</if>
|
||||
<if test="vo.startDate != null and vo.startDate != '' and vo.endDate != null and vo.endDate != '' ">
|
||||
and date_format(so.create_time,'%Y-%m-%d') between #{vo.startDate} and #{vo.endDate}
|
||||
</if>
|
||||
<if test="vo.carteenId != null ">
|
||||
and so.carteen_id = #{vo.carteenId}
|
||||
</if>
|
||||
</where>
|
||||
order by so.order_id DESC
|
||||
</select>
|
||||
|
||||
</mapper>
|
Reference in New Issue
Block a user