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