Merge remote-tracking branch 'origin/test' into test
This commit is contained in:
commit
a962372583
|
|
@ -0,0 +1,40 @@
|
|||
package com.czg.controller.user;
|
||||
|
||||
import com.czg.account.dto.shopuser.ShopUserAddDTO;
|
||||
import com.czg.account.dto.shopuser.ShopUserDetailDTO;
|
||||
import com.czg.account.dto.shopuser.ShopUserVipCardDTO;
|
||||
import com.czg.account.entity.MemberPointsLog;
|
||||
import com.czg.account.entity.ShopUser;
|
||||
import com.czg.account.entity.ShopUserFlow;
|
||||
import com.czg.account.service.MemberPointsLogService;
|
||||
import com.czg.account.service.PointsExchangeRecordService;
|
||||
import com.czg.account.service.ShopUserFlowService;
|
||||
import com.czg.account.service.ShopUserService;
|
||||
import com.czg.annotation.Debounce;
|
||||
import com.czg.market.entity.MkShopConsumeDiscountRecord;
|
||||
import com.czg.market.service.MkShopConsumeDiscountRecordService;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.utils.PageUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 店铺会员相关
|
||||
*
|
||||
* @author Administrator
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/user/consumeDiscount")
|
||||
public class UShopConsumeDiscountController {
|
||||
@Resource
|
||||
private MkShopConsumeDiscountRecordService shopConsumeDiscountRecordService;
|
||||
@GetMapping
|
||||
public CzgResult<MkShopConsumeDiscountRecord> get(@RequestParam Long shopId) {
|
||||
return CzgResult.success(shopConsumeDiscountRecordService.get(shopId));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
|
||||
package com.czg.market.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import java.io.Serial;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 新客立减减免记录 实体类。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-09-17
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class MkShopConsumeDiscountRecordDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 消费立减id
|
||||
*/
|
||||
private Long consumeDiscountId;
|
||||
|
||||
/**
|
||||
* 减免金额
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 订单金额
|
||||
*/
|
||||
private BigDecimal orderAmount;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 门店id
|
||||
*/
|
||||
private Long shopId;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
package com.czg.market.entity;
|
||||
|
||||
import com.mybatisflex.annotation.Column;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 新客立减减免记录 实体类。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-09-17
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table("mk_shop_consume_discount_record")
|
||||
public class MkShopConsumeDiscountRecord implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id(keyType = KeyType.Auto)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 消费立减id
|
||||
*/
|
||||
private Long consumeDiscountId;
|
||||
|
||||
/**
|
||||
* 减免金额
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 订单金额
|
||||
*/
|
||||
private BigDecimal orderAmount;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Column(onInsertValue = "now()")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 门店id
|
||||
*/
|
||||
private Long shopId;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.czg.market.service;
|
||||
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.czg.market.entity.MkShopConsumeDiscountRecord;
|
||||
|
||||
/**
|
||||
* 新客立减减免记录 服务层。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-09-17
|
||||
*/
|
||||
public interface MkShopConsumeDiscountRecordService extends IService<MkShopConsumeDiscountRecord> {
|
||||
MkShopConsumeDiscountRecord get(Long shopId);
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.czg.service.market.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.market.entity.MkShopConsumeDiscountRecord;
|
||||
|
||||
/**
|
||||
* 新客立减减免记录 映射层。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-09-17
|
||||
*/
|
||||
public interface MkShopConsumeDiscountRecordMapper extends BaseMapper<MkShopConsumeDiscountRecord> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
package com.czg.service.market.service.impl;
|
||||
|
||||
import com.czg.constant.TableValueConstant;
|
||||
import com.czg.exception.ApiNotPrintException;
|
||||
import com.czg.market.entity.MkConsumeDiscountRandom;
|
||||
import com.czg.market.service.MkConsumeDiscountService;
|
||||
import com.czg.market.vo.MkConsumeDiscountVO;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.market.entity.MkShopConsumeDiscountRecord;
|
||||
import com.czg.market.service.MkShopConsumeDiscountRecordService;
|
||||
import com.czg.service.market.mapper.MkShopConsumeDiscountRecordMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* 新客立减减免记录 服务层实现。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-09-17
|
||||
*/
|
||||
@Service
|
||||
public class MkShopConsumeDiscountRecordServiceImpl extends ServiceImpl<MkShopConsumeDiscountRecordMapper, MkShopConsumeDiscountRecord> implements MkShopConsumeDiscountRecordService{
|
||||
@Resource
|
||||
private MkConsumeDiscountService consumeDiscountService;
|
||||
@Override
|
||||
public MkShopConsumeDiscountRecord get(Long shopId) {
|
||||
MkConsumeDiscountVO consumeDiscountVO = consumeDiscountService.detail(shopId);
|
||||
if (consumeDiscountVO.getIsEnable() != 1) {
|
||||
throw new ApiNotPrintException("新客立减未开启");
|
||||
}
|
||||
|
||||
MkShopConsumeDiscountRecord shopConsumeDiscountRecord = new MkShopConsumeDiscountRecord();
|
||||
shopConsumeDiscountRecord.setShopId(shopId);
|
||||
|
||||
// 固定金额
|
||||
if (TableValueConstant.ConsumeDiscount.DiscountType.FIXED.getCode().equals(consumeDiscountVO.getDiscountType())) {
|
||||
shopConsumeDiscountRecord.setAmount(consumeDiscountVO.getDiscountAmount());
|
||||
return shopConsumeDiscountRecord;
|
||||
}
|
||||
|
||||
// 随机金额(概率加起来是100)
|
||||
List<MkConsumeDiscountRandom> randomList = consumeDiscountVO.getRandomDiscountList();
|
||||
if (randomList == null || randomList.isEmpty()) {
|
||||
throw new ApiNotPrintException("随机立减配置错误");
|
||||
}
|
||||
|
||||
// 生成 1~100 的随机数
|
||||
int rand = new Random().nextInt(100) + 1;
|
||||
int current = 0;
|
||||
|
||||
for (MkConsumeDiscountRandom item : randomList) {
|
||||
int prob = item.getProbability().intValue();
|
||||
current += prob;
|
||||
if (rand <= current) {
|
||||
shopConsumeDiscountRecord.setAmount(item.getAmount());
|
||||
save(shopConsumeDiscountRecord);
|
||||
return shopConsumeDiscountRecord;
|
||||
}
|
||||
}
|
||||
|
||||
throw new ApiNotPrintException("随机立减计算失败");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.czg.service.market.mapper.MkShopConsumeDiscountRecordMapper">
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue