This commit is contained in:
zt
2025-05-20 10:52:52 +08:00
parent acba88ade0
commit 0cc91a0894
18 changed files with 620 additions and 46 deletions

View File

@ -186,5 +186,7 @@ public interface ErrorCodeConstants {
ErrorCode STORE_DINING_PLATES_NOT_EXISTS = new ErrorCode(1_004_033_02, "设置不存在");
ErrorCode DINING_PLATES_BIND_MAX = new ErrorCode(1_004_033_02, "可绑定的餐盘已达到上限");
ErrorCode STORE_DISCOUNT_NOT_EXISTS = new ErrorCode(1_004_033_03, "门店超市折扣不存在");
}

View File

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.member.controller.admin.storediscount;
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.storediscount.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.storediscount.StoreDiscountDO;
import cn.iocoder.yudao.module.member.service.storediscount.StoreDiscountService;
@Tag(name = "管理后台 - 门店超市折扣")
@RestController
@RequestMapping("/member/store-discount")
@Validated
public class StoreDiscountController {
@Resource
private StoreDiscountService storeDiscountService;
@PostMapping("/create")
@Operation(summary = "创建门店超市折扣")
@PreAuthorize("@ss.hasPermission('member:store-discount:create')")
public CommonResult<Long> createStoreDiscount(@Valid @RequestBody StoreDiscountSaveReqVO createReqVO) {
return success(storeDiscountService.createStoreDiscount(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新门店超市折扣")
@PreAuthorize("@ss.hasPermission('member:store-discount:update')")
public CommonResult<Boolean> updateStoreDiscount(@Valid @RequestBody StoreDiscountSaveReqVO updateReqVO) {
storeDiscountService.updateStoreDiscount(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除门店超市折扣")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:store-discount:delete')")
public CommonResult<Boolean> deleteStoreDiscount(@RequestParam("id") Long id) {
storeDiscountService.deleteStoreDiscount(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得门店超市折扣")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:store-discount:query')")
public CommonResult<StoreDiscountRespVO> getStoreDiscount(@RequestParam("id") Long id) {
StoreDiscountDO storeDiscount = storeDiscountService.getStoreDiscount(id);
return success(BeanUtils.toBean(storeDiscount, StoreDiscountRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得门店超市折扣分页")
@PreAuthorize("@ss.hasPermission('member:store-discount:query')")
public CommonResult<PageResult<StoreDiscountRespVO>> getStoreDiscountPage(@Valid StoreDiscountPageReqVO pageReqVO) {
PageResult<StoreDiscountDO> pageResult = storeDiscountService.getStoreDiscountPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, StoreDiscountRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出门店超市折扣 Excel")
@PreAuthorize("@ss.hasPermission('member:store-discount:export')")
@OperateLog(type = EXPORT)
public void exportStoreDiscountExcel(@Valid StoreDiscountPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<StoreDiscountDO> list = storeDiscountService.getStoreDiscountPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "门店超市折扣.xls", "数据", StoreDiscountRespVO.class,
BeanUtils.toBean(list, StoreDiscountRespVO.class));
}
}

View File

@ -0,0 +1,43 @@
package cn.iocoder.yudao.module.member.controller.admin.storediscount.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.math.BigDecimal;
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 StoreDiscountPageReqVO extends PageParam {
@Schema(description = "门店ID", example = "24360")
private Long storeId;
@Schema(description = "折扣名字", example = "赵六")
private String discountName;
@Schema(description = "折扣")
private BigDecimal discountNum;
@Schema(description = "开始时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] startTime;
@Schema(description = "结束时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] endTime;
@Schema(description = "0-禁用1-启用", example = "2")
private String status;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,49 @@
package cn.iocoder.yudao.module.member.controller.admin.storediscount.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 门店超市折扣 Response VO")
@Data
@ExcelIgnoreUnannotated
public class StoreDiscountRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5567")
@ExcelProperty("编号")
private Long id;
@Schema(description = "门店ID", example = "24360")
@ExcelProperty("门店ID")
private Long storeId;
@Schema(description = "折扣名字", example = "赵六")
@ExcelProperty("折扣名字")
private String discountName;
@Schema(description = "折扣")
@ExcelProperty("折扣")
private BigDecimal discountNum;
@Schema(description = "开始时间")
@ExcelProperty("开始时间")
private LocalDateTime startTime;
@Schema(description = "结束时间")
@ExcelProperty("结束时间")
private LocalDateTime endTime;
@Schema(description = "0-禁用1-启用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("0-禁用1-启用")
private String status;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.member.controller.admin.storediscount.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 门店超市折扣新增/修改 Request VO")
@Data
public class StoreDiscountSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5567")
private Long id;
@Schema(description = "门店ID", example = "24360")
private Long storeId;
@Schema(description = "折扣名字", example = "赵六")
private String discountName;
@Schema(description = "折扣")
private BigDecimal discountNum;
@Schema(description = "开始时间")
private LocalDateTime startTime;
@Schema(description = "结束时间")
private LocalDateTime endTime;
@Schema(description = "0-禁用1-启用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "0-禁用1-启用不能为空")
private String status;
}

View File

@ -6,6 +6,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@ -68,4 +69,14 @@ public class StoreOrderRespVO {
*/
private Double reductionPrice;
/**
* 原价
*/
private Double originalPrice;
/**
* 折扣
*/
private BigDecimal discountNum;
}

View File

@ -5,16 +5,8 @@ import cn.iocoder.yudao.framework.common.pojo.StoreResult;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO;
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.dto.StoreSaleGoodsDto;
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreUserDto;
import cn.iocoder.yudao.module.member.controller.app.store.vo.GoodsResult;
import cn.iocoder.yudao.module.member.controller.app.store.vo.StoreGoodsListVo;
import cn.iocoder.yudao.module.member.controller.app.store.vo.StoreGoodsTypeListVo;
import cn.iocoder.yudao.module.member.controller.app.store.vo.StoreUserVo;
import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo;
import cn.iocoder.yudao.module.member.controller.app.store.dto.*;
import cn.iocoder.yudao.module.member.controller.app.store.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO;
import cn.iocoder.yudao.module.member.dal.dataobject.storegoodstype.StoreGoodsTypeDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
@ -32,11 +24,7 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.annotation.security.PermitAll;
@ -209,6 +197,13 @@ public class AppStoreController {
}
@GetMapping("/mgcr/discount")
@Operation(summary = "获取门店折扣")
public String getDiscount(String equipmentCode) {
return JsonUtils.toJsonString(StoreResult.success(orderService.getDiscount(equipmentCode)));
}
public String reverseHexAndConvert(String hexStr) {
// 将十六进制字符串反转,每两位一组
StringBuilder reversedHex = new StringBuilder();

View File

@ -12,10 +12,12 @@ import cn.iocoder.yudao.module.member.controller.app.storeorder.dto.completeList
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderDetailVo;
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderVO;
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto;
import cn.iocoder.yudao.module.member.dal.dataobject.storediscount.StoreDiscountDO;
import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO;
import cn.iocoder.yudao.module.member.enums.StoreOrderStatusEnum;
import cn.iocoder.yudao.module.member.service.async.MemberAsyncService;
import cn.iocoder.yudao.module.member.service.configdata.ConfigDataService;
import cn.iocoder.yudao.module.member.service.storediscount.StoreDiscountService;
import cn.iocoder.yudao.module.member.service.storeorder.StoreOrderService;
import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService;
import cn.iocoder.yudao.module.member.util.ConfigConstants;
@ -28,6 +30,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.Duration;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
@ -52,7 +55,8 @@ public class AppStoreOrderController {
private MemberAsyncService memberAsyncService;
@Resource
private ConfigDataService configDataService;
@Resource
private StoreDiscountService storeDiscountService;
@GetMapping("/page")
@Operation(summary = "获得商品订单分页")
@ -62,6 +66,7 @@ public class AppStoreOrderController {
}
PageResult<StoreOrderDO> pageResult = storeOrderService.getStoreOrderPage(pageReqVO);
PageResult<StoreOrderRespVO> bean = BeanUtils.toBean(pageResult, StoreOrderRespVO.class);
//处理订单详情
if(CollectionUtil.isNotEmpty(bean.getList())){
for (StoreOrderRespVO vo : bean.getList()) {
@ -135,6 +140,15 @@ public class AppStoreOrderController {
return success(true);
}
@GetMapping("/discount")
@Operation(summary = "获取折扣")
public CommonResult<BigDecimal> discount(Long storeId) {
StoreDiscountDO storeDiscount = storeDiscountService.getStoreDiscountByStoreId(storeId);
if(storeDiscount == null){
return success(null);
}
return success(storeDiscount.getDiscountNum().divide(BigDecimal.valueOf(10), 2, RoundingMode.HALF_UP));
}
public void checkTime(){
String start = configDataService.getConfigData(ConfigConstants.START_TIME, ConfigConstants.BUY_PROHIBIT).getValue();

View File

@ -0,0 +1,58 @@
package cn.iocoder.yudao.module.member.dal.dataobject.storediscount;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
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_discount")
@KeySequence("member_store_discount_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StoreDiscountDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 门店ID
*/
private Long storeId;
/**
* 折扣名字
*/
private String discountName;
/**
* 折扣
*/
private BigDecimal discountNum;
/**
* 开始时间
*/
private LocalDateTime startTime;
/**
* 结束时间
*/
private LocalDateTime endTime;
/**
* 0-禁用1-启用
*/
private String status;
}

View File

@ -11,6 +11,8 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.math.BigDecimal;
/**
* 商品订单 DO
*
@ -56,6 +58,16 @@ public class StoreOrderDO extends BaseDO {
*/
private Double totalPrice;
/**
* 原价
*/
private Double originalPrice;
/**
* 折扣
*/
private BigDecimal discountNum;
private Long userId;
/**
@ -76,4 +88,6 @@ public class StoreOrderDO extends BaseDO {
private Boolean billingExist;
private String billingNum;
}

View File

@ -0,0 +1,32 @@
package cn.iocoder.yudao.module.member.dal.mysql.storediscount;
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.storediscount.StoreDiscountDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.member.controller.admin.storediscount.vo.*;
/**
* 门店超市折扣 Mapper
*
* @author 我是秦俊旗
*/
@Mapper
public interface StoreDiscountMapper extends BaseMapperX<StoreDiscountDO> {
default PageResult<StoreDiscountDO> selectPage(StoreDiscountPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<StoreDiscountDO>()
.eqIfPresent(StoreDiscountDO::getStoreId, reqVO.getStoreId())
.likeIfPresent(StoreDiscountDO::getDiscountName, reqVO.getDiscountName())
.eqIfPresent(StoreDiscountDO::getDiscountNum, reqVO.getDiscountNum())
.betweenIfPresent(StoreDiscountDO::getStartTime, reqVO.getStartTime())
.betweenIfPresent(StoreDiscountDO::getEndTime, reqVO.getEndTime())
.eqIfPresent(StoreDiscountDO::getStatus, reqVO.getStatus())
.betweenIfPresent(StoreDiscountDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(StoreDiscountDO::getId));
}
}

View File

@ -0,0 +1,62 @@
package cn.iocoder.yudao.module.member.service.storediscount;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.storediscount.vo.StoreDiscountPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.storediscount.vo.StoreDiscountSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.storediscount.StoreDiscountDO;
import javax.validation.Valid;
/**
* 门店超市折扣 Service 接口
*
* @author 我是秦俊旗
*/
public interface StoreDiscountService {
/**
* 创建门店超市折扣
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createStoreDiscount(@Valid StoreDiscountSaveReqVO createReqVO);
/**
* 更新门店超市折扣
*
* @param updateReqVO 更新信息
*/
void updateStoreDiscount(@Valid StoreDiscountSaveReqVO updateReqVO);
/**
* 删除门店超市折扣
*
* @param id 编号
*/
void deleteStoreDiscount(Long id);
/**
* 获得门店超市折扣
*
* @param id 编号
* @return 门店超市折扣
*/
StoreDiscountDO getStoreDiscount(Long id);
/**
* 获得门店超市折扣分页
*
* @param pageReqVO 分页查询
* @return 门店超市折扣分页
*/
PageResult<StoreDiscountDO> getStoreDiscountPage(StoreDiscountPageReqVO pageReqVO);
/**
* 获得门店超市折扣
*
* @param storeId 门店编号
* @return 门店超市折扣
*/
StoreDiscountDO getStoreDiscountByStoreId(Long storeId);
}

View File

@ -0,0 +1,86 @@
package cn.iocoder.yudao.module.member.service.storediscount;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.storediscount.vo.StoreDiscountPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.storediscount.vo.StoreDiscountSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.storediscount.StoreDiscountDO;
import cn.iocoder.yudao.module.member.dal.mysql.storediscount.StoreDiscountMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_DISCOUNT_NOT_EXISTS;
/**
* 门店超市折扣 Service 实现类
*
* @author 我是秦俊旗
*/
@Service
@Validated
public class StoreDiscountServiceImpl implements StoreDiscountService {
@Resource
private StoreDiscountMapper storeDiscountMapper;
@Override
public Long createStoreDiscount(StoreDiscountSaveReqVO createReqVO) {
// 插入
StoreDiscountDO storeDiscount = BeanUtils.toBean(createReqVO, StoreDiscountDO.class);
storeDiscountMapper.insert(storeDiscount);
// 返回
return storeDiscount.getId();
}
@Override
public void updateStoreDiscount(StoreDiscountSaveReqVO updateReqVO) {
// 校验存在
validateStoreDiscountExists(updateReqVO.getId());
// 更新
StoreDiscountDO updateObj = BeanUtils.toBean(updateReqVO, StoreDiscountDO.class);
storeDiscountMapper.updateById(updateObj);
}
@Override
public void deleteStoreDiscount(Long id) {
// 校验存在
validateStoreDiscountExists(id);
// 删除
storeDiscountMapper.deleteById(id);
}
private void validateStoreDiscountExists(Long id) {
if (storeDiscountMapper.selectById(id) == null) {
throw exception(STORE_DISCOUNT_NOT_EXISTS);
}
}
@Override
public StoreDiscountDO getStoreDiscount(Long id) {
return storeDiscountMapper.selectById(id);
}
@Override
public PageResult<StoreDiscountDO> getStoreDiscountPage(StoreDiscountPageReqVO pageReqVO) {
return storeDiscountMapper.selectPage(pageReqVO);
}
@Override
public StoreDiscountDO getStoreDiscountByStoreId(Long storeId) {
LocalDateTime now = LocalDateTime.now();
LambdaQueryWrapper<StoreDiscountDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StoreDiscountDO::getStoreId, storeId);
wrapper.eq(StoreDiscountDO::getStatus, "1");
wrapper.ge(StoreDiscountDO::getEndTime, now);
wrapper.le(StoreDiscountDO::getStartTime, now);
wrapper.orderByDesc(StoreDiscountDO::getCreateTime);
wrapper.last("limit 1");
return storeDiscountMapper.selectOne(wrapper);
}
}

View File

@ -97,4 +97,6 @@ public interface StoreOrderService {
void completeList(List<Integer> orderIds);
List<StoreOrderCountVO> countOrder(String startTime,String endTime);
BigDecimal getDiscount(String equipmentCode);
}

View File

@ -16,6 +16,7 @@ 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.AppStoreOrderVO;
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto;
import cn.iocoder.yudao.module.member.dal.dataobject.storediscount.StoreDiscountDO;
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;
@ -27,6 +28,7 @@ import cn.iocoder.yudao.module.member.service.amount.LockManager;
import cn.iocoder.yudao.module.member.service.group.MemberGroupService;
import cn.iocoder.yudao.module.member.service.money.MoneyService;
import cn.iocoder.yudao.module.member.service.storebusiness.StoreBusinessService;
import cn.iocoder.yudao.module.member.service.storediscount.StoreDiscountService;
import cn.iocoder.yudao.module.member.service.storegoodsinventory.StoreGoodsInventoryService;
import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService;
import cn.iocoder.yudao.module.member.service.storerefund.StoreRefundService;
@ -49,7 +51,6 @@ import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@ -75,6 +76,9 @@ public class StoreOrderServiceImpl implements StoreOrderService {
@Resource
private MoneyService moneyService;
@Resource
private StoreDiscountService storeDiscountService;
@Resource
private MemberUserService userService;
@ -162,8 +166,19 @@ public class StoreOrderServiceImpl implements StoreOrderService {
double sum = equipmentGoodsCustoms.stream()
.mapToDouble(StoreGoodsDto::getTotalPrice)
.sum();
storeOrderDO.setStatus(status);
storeOrderDO.setOriginalPrice(sum);
storeOrderDO.setTotalPrice(sum);
//计算折扣
StoreDiscountDO storeDiscount = storeDiscountService.getStoreDiscountByStoreId(storeId);
if(storeDiscount != null){
BigDecimal discountNum = storeDiscount.getDiscountNum();
BigDecimal totalMoney = new BigDecimal(sum).multiply(discountNum).divide(new BigDecimal(10), 2, RoundingMode.HALF_UP);
storeOrderDO.setTotalPrice(totalMoney.doubleValue());
storeOrderDO.setDiscountNum(discountNum);
}
storeOrderDO.setStatus(status);
storeOrderDO.setCarteenId(storeId);
storeOrderMapper.insert(storeOrderDO);
ArrayList<StoreOrderDetailDO> detailDOS = new ArrayList<>();
@ -228,8 +243,15 @@ public class StoreOrderServiceImpl implements StoreOrderService {
double sum = equipmentGoodsCustoms.stream()
.mapToDouble(StoreGoodsDto::getTotalPrice)
.sum();
BigDecimal totalMoney = BigDecimal.valueOf(sum);
//计算折扣
StoreDiscountDO storeDiscount = storeDiscountService.getStoreDiscountByStoreId(storeId);
if(storeDiscount != null){
BigDecimal discountNum = storeDiscount.getDiscountNum();
totalMoney = new BigDecimal(sum).multiply(discountNum).divide(new BigDecimal(10), 2, RoundingMode.HALF_UP);
}
MemberUserDO user = userService.getUser(Long.valueOf(s));
dto.setUserId(user.getId());
@ -347,6 +369,16 @@ public class StoreOrderServiceImpl implements StoreOrderService {
public AddReqVO appCreate(CardDto dto) {
MemberUserDO user = userService.getUser(dto.getUserId());
BigDecimal total = BigDecimal.valueOf(dto.getTotalPrice());
//计算折扣
BigDecimal discountNum = null;
StoreDiscountDO storeDiscount = storeDiscountService.getStoreDiscountByStoreId(dto.getCarteenId());
if(storeDiscount != null){
discountNum = storeDiscount.getDiscountNum();
total = BigDecimal.valueOf(dto.getTotalPrice()).multiply(discountNum).divide(new BigDecimal(10), 2, RoundingMode.HALF_UP);
}
checkMoney(user,total);
//扣除库存
AddReqVO addReqVO = new AddReqVO();
@ -365,6 +397,12 @@ public class StoreOrderServiceImpl implements StoreOrderService {
//创建订单
StoreOrderDO storeOrderDO = new StoreOrderDO();
BeanUtil.copyProperties(dto, storeOrderDO);
storeOrderDO.setOriginalPrice(dto.getTotalPrice());
storeOrderDO.setTotalPrice(total.doubleValue());
if(storeDiscount != null){
storeOrderDO.setDiscountNum(storeDiscount.getDiscountNum());
}
storeOrderDO.setStatus(StoreOrderStatusEnum.PAY.getCode());
storeOrderMapper.insert(storeOrderDO);
List<AppStoreGoodsDetail> goodsList = dto.getGoodsList();
@ -669,6 +707,17 @@ public class StoreOrderServiceImpl implements StoreOrderService {
return storeOrderMapper.countOrder(startTime,endTime);
}
@Override
public BigDecimal getDiscount(String equipmentCode) {
Long storeId = cashregisterinfoApi.getStoreId(equipmentCode);
//计算折扣
StoreDiscountDO storeDiscount = storeDiscountService.getStoreDiscountByStoreId(storeId);
if(storeDiscount == null){
return null;
}
return storeDiscount.getDiscountNum().divide(BigDecimal.valueOf(10), 2, RoundingMode.HALF_UP);
}
public void checkMoney(MemberUserDO user, BigDecimal totalMoney) {
//获取用户所在组分类
BigDecimal computeMoney = user.getMoney();