优惠券
This commit is contained in:
@@ -130,6 +130,12 @@ public class PlayOrderInfoEntity extends BaseEntity<PlayOrderInfoEntity> {
|
||||
*/
|
||||
private String useCoupon;
|
||||
|
||||
/**
|
||||
* 优惠券列表
|
||||
*/
|
||||
@TableField(typeHandler = StringTypeHandler.class)
|
||||
private List<String> couponIds;
|
||||
|
||||
/**
|
||||
* 是否是客服录入订单[0:不是,1:是]
|
||||
*/
|
||||
|
||||
@@ -62,11 +62,12 @@ public interface IPlayOrderInfoService extends IService<PlayOrderInfoEntity> {
|
||||
* @param purchaserBy 下单人
|
||||
* @param acceptBy 接单人
|
||||
* @param weiChatCode 订单微信号码
|
||||
* @param couponIds 优惠券ID列表
|
||||
* @param remark 订单备注
|
||||
* @author admin
|
||||
* @since 2024/6/3 10:53
|
||||
**/
|
||||
void createOrderInfo(String orderId, String orderNo, String orderState, String orderType, String placeType, String rewardType, String firstOrder, String commodityId, String commodityType, BigDecimal commodityPrice, String serviceDuration, String commodityName, String commodityNumber, BigDecimal orderMoney, BigDecimal finalAmount, BigDecimal discountAmount, String purchaserBy, String acceptBy, String weiChatCode, String remark);
|
||||
void createOrderInfo(String orderId, String orderNo, String orderState, String orderType, String placeType, String rewardType, String firstOrder, String commodityId, String commodityType, BigDecimal commodityPrice, String serviceDuration, String commodityName, String commodityNumber, BigDecimal orderMoney, BigDecimal finalAmount, BigDecimal discountAmount, String purchaserBy, String acceptBy, String weiChatCode, List<String> couponIds, String remark);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -74,7 +74,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createOrderInfo(String orderId, String orderNo, String orderState, String orderType, String placeType, String rewardType, String firstOrder, String commodityId, String commodityType, BigDecimal commodityPrice, String serviceDuration, String commodityName, String commodityNumber, BigDecimal orderMoney, BigDecimal finalAmount, BigDecimal discountAmount, String purchaserBy, String acceptBy, String weiChatCode, String remark) {
|
||||
public void createOrderInfo(String orderId, String orderNo, String orderState, String orderType, String placeType, String rewardType, String firstOrder, String commodityId, String commodityType, BigDecimal commodityPrice, String serviceDuration, String commodityName, String commodityNumber, BigDecimal orderMoney, BigDecimal finalAmount, BigDecimal discountAmount, String purchaserBy, String acceptBy, String weiChatCode, List<String> couponIds, String remark) {
|
||||
PlayOrderInfoEntity entity = new PlayOrderInfoEntity();
|
||||
entity.setId(orderId);
|
||||
entity.setOrderNo(orderNo);
|
||||
@@ -101,6 +101,8 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
entity.setOrdersExpiredState("0");
|
||||
entity.setPurchaserBy(purchaserBy);
|
||||
entity.setPurchaserTime(LocalDateTime.now());
|
||||
entity.setCouponIds(couponIds);
|
||||
entity.setUseCoupon(couponIds != null && !couponIds.isEmpty() ? "1" : "0");
|
||||
if (StrUtil.isNotBlank(acceptBy)) {
|
||||
entity.setAcceptBy(acceptBy);
|
||||
entity.setEstimatedRevenue(getEstimatedRevenue(acceptBy, placeType, firstOrder, finalAmount));
|
||||
@@ -396,7 +398,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
|
||||
Page<PlayOrderInfoReturnVo> page = this.baseMapper.selectJoinPage(new Page<>(vo.getPageNum(), vo.getPageSize()), PlayOrderInfoReturnVo.class, lambdaQueryWrapper);
|
||||
page.getRecords().forEach(ca -> {
|
||||
if (ca.getPlaceType().equals("1")) {
|
||||
if ("1".equals(ca.getPlaceType())) {
|
||||
PlayOrderRandomInfoEntity randomInfo = playOrderRandomInfoService.getById(ca.getId());
|
||||
if (Objects.nonNull(randomInfo)) {
|
||||
ca.setLabels(randomInfo.getLabels());
|
||||
|
||||
@@ -3,11 +3,13 @@ package com.starry.admin.modules.shop.controller;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.starry.admin.modules.shop.module.entity.PlayCouponDetailsEntity;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponDetailsQueryVo;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponDetailsReturnVo;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponDetailsUpdateUseStateVo;
|
||||
import com.starry.admin.modules.shop.service.IPlayCouponDetailsService;
|
||||
import com.starry.common.annotation.Log;
|
||||
import com.starry.common.enums.BusinessType;
|
||||
import com.starry.common.result.R;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -30,12 +32,11 @@ public class PlayCouponDetailsController {
|
||||
*/
|
||||
// @PreAuthorize("@customSs.hasPermission('shop:couponDetails:list')")
|
||||
@PostMapping("/listByPage")
|
||||
public R listByPage(PlayCouponDetailsQueryVo vo) {
|
||||
IPage<PlayCouponDetailsEntity> list = playCouponDetailsService.selectByPage(vo);
|
||||
public R listByPage(@Validated @RequestBody PlayCouponDetailsQueryVo vo) {
|
||||
IPage<PlayCouponDetailsReturnVo> list = playCouponDetailsService.selectByPage(vo);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取优惠券详情详细信息
|
||||
*/
|
||||
@@ -68,7 +69,9 @@ public class PlayCouponDetailsController {
|
||||
@PostMapping("/updateUseState")
|
||||
public R update(PlayCouponDetailsUpdateUseStateVo vo) {
|
||||
for (String couponId : vo.getCouponIds()) {
|
||||
PlayCouponDetailsEntity entity = playCouponDetailsService.selectPlayCouponDetailsById(couponId);
|
||||
playCouponDetailsService.selectPlayCouponDetailsById(couponId);
|
||||
PlayCouponDetailsEntity entity = new PlayCouponDetailsEntity();
|
||||
entity.setId(couponId);
|
||||
entity.setUseState(vo.getUseState());
|
||||
playCouponDetailsService.update(entity);
|
||||
}
|
||||
@@ -97,6 +100,12 @@ public class PlayCouponDetailsController {
|
||||
@Log(title = "优惠券详情", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R remove(@PathVariable String[] ids) {
|
||||
return R.ok(playCouponDetailsService.deletePlayCouponDetailsByIds(ids));
|
||||
for (String id : ids) {
|
||||
PlayCouponDetailsEntity entity = new PlayCouponDetailsEntity();
|
||||
entity.setId(id);
|
||||
entity.setUseState("3");
|
||||
playCouponDetailsService.update(entity);
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,19 +2,23 @@ package com.starry.admin.modules.shop.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.starry.admin.common.exception.CustomException;
|
||||
import com.starry.admin.modules.custom.module.entity.PlayCustomUserInfoEntity;
|
||||
import com.starry.admin.modules.custom.service.IPlayCustomUserInfoService;
|
||||
import com.starry.admin.modules.shop.module.entity.PlayCouponInfoEntity;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponInfoAddVo;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponInfoQueryVo;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponInfoReturnVo;
|
||||
import com.starry.admin.modules.shop.module.vo.*;
|
||||
import com.starry.admin.modules.shop.service.IPlayCouponDetailsService;
|
||||
import com.starry.admin.modules.shop.service.IPlayCouponInfoService;
|
||||
import com.starry.common.annotation.Log;
|
||||
import com.starry.common.enums.BusinessType;
|
||||
import com.starry.common.result.R;
|
||||
import com.starry.common.utils.ConvertUtil;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
/**
|
||||
* 优惠券信息Controller
|
||||
@@ -28,6 +32,12 @@ public class PlayCouponInfoController {
|
||||
@Resource
|
||||
private IPlayCouponInfoService playCouponInfoService;
|
||||
|
||||
@Resource
|
||||
private IPlayCouponDetailsService playCouponDetailsService;
|
||||
|
||||
@Resource
|
||||
private IPlayCustomUserInfoService playCustomUserInfoService;
|
||||
|
||||
/**
|
||||
* 查询优惠券信息列表
|
||||
*/
|
||||
@@ -38,6 +48,35 @@ public class PlayCouponInfoController {
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改优惠券上下架状态
|
||||
*
|
||||
* @param vo 优惠券上下架对象
|
||||
*/
|
||||
@PostMapping("/updateOnLineState")
|
||||
public R updateOnLineState(@Validated @RequestBody PlayCouponInfoOnLineStateUpdateVo vo) {
|
||||
playCouponInfoService.selectPlayCouponInfoById(vo.getId());
|
||||
PlayCouponInfoEntity entity = new PlayCouponInfoEntity();
|
||||
entity.setId(vo.getId());
|
||||
entity.setCouponOnLineState(vo.getCouponOnLineState());
|
||||
playCouponInfoService.update(entity);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 发放优惠券
|
||||
*
|
||||
* @param vo 优惠券发放对象
|
||||
*/
|
||||
@PostMapping("/sendCoupon")
|
||||
public R sendCoupon(@Validated @RequestBody PlayCouponInfoSendVo vo) {
|
||||
PlayCustomUserInfoEntity customUserInfo = playCustomUserInfoService.selectById(vo.getCustomId());
|
||||
playCouponDetailsService.create(customUserInfo.getId(), customUserInfo.getNickname(), customUserInfo.getLevelId(), vo.getId(), "2", "1");
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取优惠券信息详细信息
|
||||
*/
|
||||
@@ -53,14 +92,14 @@ public class PlayCouponInfoController {
|
||||
// @PreAuthorize("@customSs.hasPermission('shop:coupon:create')")
|
||||
@Log(title = "优惠券信息", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/create")
|
||||
public R create(@RequestBody PlayCouponInfoAddVo vo) {
|
||||
public R create(@Validated @RequestBody PlayCouponInfoAddVo vo) {
|
||||
PlayCouponInfoEntity entity = ConvertUtil.entityToVo(vo, PlayCouponInfoEntity.class);
|
||||
if ("1".equals(vo.getValidityPeriodType())) {
|
||||
if (vo.getProductiveTime() == null || vo.getProductiveTime().size() != 2) {
|
||||
throw new CustomException("用券时间输入错误");
|
||||
}
|
||||
LocalDateTime startTime = LocalDateTime.parse(vo.getProductiveTime().get(0));
|
||||
LocalDateTime endTime = LocalDateTime.parse(vo.getProductiveTime().get(1));
|
||||
LocalDateTime startTime = LocalDateTime.parse(vo.getProductiveTime().get(0), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
LocalDateTime endTime = LocalDateTime.parse(vo.getProductiveTime().get(1), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
if (endTime.isBefore(startTime)) {
|
||||
throw new CustomException("用券时间输入错误,结束时间大于开始时间");
|
||||
}
|
||||
@@ -70,8 +109,19 @@ public class PlayCouponInfoController {
|
||||
if ("2".equals(vo.getValidityPeriodType()) && vo.getEffectiveDay() <= 0) {
|
||||
throw new CustomException("用券时间输入错误,有效天数不能为0");
|
||||
}
|
||||
|
||||
|
||||
String discountContent = "";
|
||||
if (BigDecimal.ZERO.compareTo(vo.getUseMinAmount()) == 0) {
|
||||
discountContent = "无门槛";
|
||||
} else {
|
||||
discountContent = "满" + vo.getUseMinAmount() + "船票";
|
||||
}
|
||||
if ("0".equals(vo.getDiscountType())) {
|
||||
discountContent += ("减" + vo.getDiscountAmount() + "船票");
|
||||
} else {
|
||||
discountContent += ("打" + vo.getDiscountAmount() + "折");
|
||||
}
|
||||
entity.setDiscountContent(discountContent);
|
||||
entity.setCouponOnLineState("1");
|
||||
boolean success = playCouponInfoService.create(entity);
|
||||
if (success) {
|
||||
return R.ok();
|
||||
|
||||
@@ -7,7 +7,6 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
@@ -48,7 +47,7 @@ public class PlayCouponDetailsEntity extends BaseEntity<PlayCouponDetailsEntity>
|
||||
private String customLevelId;
|
||||
|
||||
/**
|
||||
* 优惠券名称
|
||||
* 优惠券ID
|
||||
*/
|
||||
private String couponId;
|
||||
|
||||
@@ -63,32 +62,6 @@ public class PlayCouponDetailsEntity extends BaseEntity<PlayCouponDetailsEntity>
|
||||
private String useState;
|
||||
|
||||
/**
|
||||
* 优惠类型(0:满减;1:折扣)
|
||||
*/
|
||||
private String discountType;
|
||||
|
||||
/**
|
||||
* 优惠内容,文字展示
|
||||
*/
|
||||
private String discountContent;
|
||||
|
||||
/**
|
||||
* 折扣值
|
||||
*/
|
||||
private BigDecimal discountAmount;
|
||||
|
||||
/**
|
||||
* 有效期类型(0:永久有效;1:临时有效)
|
||||
*/
|
||||
private String validityPeriodType;
|
||||
|
||||
|
||||
/**
|
||||
* 到期时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime expirationTime;
|
||||
|
||||
/**
|
||||
* 获得时间
|
||||
|
||||
@@ -24,7 +24,6 @@ import java.util.List;
|
||||
@TableName(value = "play_coupon_info", autoResultMap = true)
|
||||
public class PlayCouponInfoEntity extends BaseEntity<PlayCouponInfoEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* UUID
|
||||
*/
|
||||
@@ -33,7 +32,7 @@ public class PlayCouponInfoEntity extends BaseEntity<PlayCouponInfoEntity> {
|
||||
/**
|
||||
* 优惠券名称
|
||||
**/
|
||||
private String couponName;
|
||||
private String couponName ="测试券";
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
@@ -64,7 +63,7 @@ public class PlayCouponInfoEntity extends BaseEntity<PlayCouponInfoEntity> {
|
||||
private Integer effectiveDay;
|
||||
|
||||
/**
|
||||
* 使用优惠券最近消费金额
|
||||
* 使用优惠券最低消费金额
|
||||
**/
|
||||
private BigDecimal useMinAmount;
|
||||
|
||||
@@ -125,16 +124,30 @@ public class PlayCouponInfoEntity extends BaseEntity<PlayCouponInfoEntity> {
|
||||
private String claimConditionType;
|
||||
|
||||
/**
|
||||
* 顾客等级
|
||||
* 顾客等级选择状态(0:未选择,1:选择)
|
||||
*/
|
||||
private String customLevelCheckType;
|
||||
|
||||
/**
|
||||
* 店员等级
|
||||
*/
|
||||
@TableField(typeHandler = StringTypeHandler.class)
|
||||
private List<String> customLevel;
|
||||
|
||||
/**
|
||||
* 用户关注公众号选择状态(0:未选择,1:选择)
|
||||
*/
|
||||
private String customFollowStatusCheckType;
|
||||
|
||||
/**
|
||||
* 顾客关注公众号状态(0:未关注,1:已关注)
|
||||
*/
|
||||
private String customFollowStatus;
|
||||
|
||||
/**
|
||||
* 顾客性别选择状态(0:未选择,1:选择)
|
||||
*/
|
||||
private String customSexCheckType;
|
||||
/**
|
||||
* 顾客性别(0:未知;1:男,2:女)
|
||||
*/
|
||||
@@ -144,7 +157,12 @@ public class PlayCouponInfoEntity extends BaseEntity<PlayCouponInfoEntity> {
|
||||
/**
|
||||
* 仅限新用户领取(0:不是;1:是)(没有下过单的用户,下单后再退单也不算)
|
||||
*/
|
||||
private String isNewUser;
|
||||
private String newUser;
|
||||
|
||||
/**
|
||||
* 优惠券上架状态(0;下架;1:上架)
|
||||
*/
|
||||
private String couponOnLineState;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -49,6 +49,6 @@ public class PlayCouponDetailsQueryVo extends BasePageEntity {
|
||||
/**
|
||||
* 用户等级
|
||||
*/
|
||||
private List<String> customLevelId;
|
||||
private String customLevelId;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,205 @@
|
||||
package com.starry.admin.modules.shop.module.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.starry.admin.common.conf.StringTypeHandler;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 优惠券详细信息返回列表
|
||||
*
|
||||
* @author admin
|
||||
* @since 2024/7/8 下午11:29
|
||||
**/
|
||||
@Data
|
||||
public class PlayCouponDetailsReturnVo {
|
||||
|
||||
/**
|
||||
* UUID
|
||||
*/
|
||||
private String id;
|
||||
|
||||
|
||||
/**
|
||||
* 顾客ID
|
||||
*/
|
||||
private String customId;
|
||||
|
||||
/**
|
||||
* 顾客昵称
|
||||
*/
|
||||
private String customNickname;
|
||||
|
||||
/**
|
||||
* 顾客等级ID
|
||||
*/
|
||||
private String customLevelId;
|
||||
|
||||
/**
|
||||
* 优惠券ID
|
||||
*/
|
||||
private String couponId;
|
||||
|
||||
/**
|
||||
* 获得渠道(1:自主领取;2:后台发放;3:退款返还;4:分享领取;5:抽奖获得)
|
||||
*/
|
||||
private String obtainingChannels;
|
||||
|
||||
/**
|
||||
* 优惠券使用状态(1:未使用;2:已使用;3:已回收)
|
||||
*/
|
||||
private String useState;
|
||||
|
||||
/**
|
||||
* 生效时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime productiveTime;
|
||||
|
||||
/**
|
||||
* 到期时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime expirationTime;
|
||||
|
||||
/**
|
||||
* 获得时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime obtainingTime;
|
||||
|
||||
/**
|
||||
* 使用时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime useTime;
|
||||
|
||||
/**
|
||||
* 优惠券名称
|
||||
**/
|
||||
private String couponName;
|
||||
|
||||
/**
|
||||
* 有效期类型(0:永久有效;1:固定时间内有效;2:领取后几天内有效)
|
||||
*/
|
||||
private String validityPeriodType;
|
||||
|
||||
|
||||
/**
|
||||
* 生效时长,validityPeriodType=2时有效
|
||||
**/
|
||||
private Integer effectiveDay;
|
||||
|
||||
/**
|
||||
* 使用优惠券最低消费金额
|
||||
**/
|
||||
private BigDecimal useMinAmount;
|
||||
|
||||
/**
|
||||
* 优惠类型(0:满减;1:折扣)
|
||||
*/
|
||||
private String discountType;
|
||||
|
||||
/**
|
||||
* 优惠内容,文字展示
|
||||
*/
|
||||
private String discountContent;
|
||||
|
||||
/**
|
||||
* 折扣值
|
||||
*/
|
||||
private BigDecimal discountAmount;
|
||||
|
||||
/**
|
||||
* 优惠金额是否由店铺承担(0:不是;1:是)
|
||||
*/
|
||||
private String attributionDiscounts;
|
||||
|
||||
/**
|
||||
* 下单类型(0:指定单,1:随机单。2:打赏单)
|
||||
*/
|
||||
@TableField(typeHandler = StringTypeHandler.class)
|
||||
private List<String> placeType;
|
||||
|
||||
/**
|
||||
* 店员范围(0:所有店员)
|
||||
*/
|
||||
private String clerkType;
|
||||
|
||||
/**
|
||||
* 优惠券总数
|
||||
*/
|
||||
private Integer couponQuantity;
|
||||
|
||||
/**
|
||||
* 已发放数量
|
||||
*/
|
||||
private Integer issuedQuantity;
|
||||
|
||||
/**
|
||||
* 剩余数量
|
||||
*/
|
||||
private Integer remainingQuantity;
|
||||
|
||||
/**
|
||||
* 店员获得最大数量
|
||||
*/
|
||||
private Integer clerkObtainedMaxQuantity;
|
||||
|
||||
/**
|
||||
* 领取条件类型(0:所有人可领取,1:指定条件领取)
|
||||
*/
|
||||
private String claimConditionType;
|
||||
|
||||
/**
|
||||
* 顾客等级选择状态(0:未选择,1:选择)
|
||||
*/
|
||||
private String customLevelCheckType;
|
||||
|
||||
/**
|
||||
* 店员等级
|
||||
*/
|
||||
@TableField(typeHandler = StringTypeHandler.class)
|
||||
private List<String> customLevel;
|
||||
|
||||
/**
|
||||
* 用户关注公众号选择状态(0:未选择,1:选择)
|
||||
*/
|
||||
private String customFollowStatusCheckType;
|
||||
|
||||
/**
|
||||
* 顾客关注公众号状态(0:未关注,1:已关注)
|
||||
*/
|
||||
private String customFollowStatus;
|
||||
|
||||
/**
|
||||
* 顾客性别选择状态(0:未选择,1:选择)
|
||||
*/
|
||||
private String customSexCheckType;
|
||||
/**
|
||||
* 顾客性别(0:未知;1:男,2:女)
|
||||
*/
|
||||
@TableField(typeHandler = StringTypeHandler.class)
|
||||
private List<String> customSex;
|
||||
|
||||
/**
|
||||
* 仅限新用户领取(0:不是;1:是)(没有下过单的用户,下单后再退单也不算)
|
||||
*/
|
||||
private String newUser;
|
||||
|
||||
/**
|
||||
* 优惠券上架状态(0;下架;1:上架)
|
||||
*/
|
||||
private String couponOnLineState;
|
||||
|
||||
|
||||
}
|
||||
@@ -1,11 +1,10 @@
|
||||
package com.starry.admin.modules.shop.module.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.starry.admin.common.conf.StringTypeHandler;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Pattern;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@@ -62,7 +61,7 @@ public class PlayCouponInfoAddVo {
|
||||
/**
|
||||
* 折扣值
|
||||
*/
|
||||
@NotNull(message = "优惠类型不能为空")
|
||||
@NotNull(message = "优惠金额不能为空")
|
||||
private BigDecimal discountAmount;
|
||||
|
||||
/**
|
||||
@@ -76,8 +75,8 @@ public class PlayCouponInfoAddVo {
|
||||
* 下单类型(0:指定单,1:随机单。2:打赏单)
|
||||
*/
|
||||
@NotNull(message = "订单类型不能为空")
|
||||
@Pattern(regexp = "[01]", message = "订单类型只能为0或1")
|
||||
private String placeType;
|
||||
@Size(min = 1, message = "下单类型不能为空")
|
||||
private List<String> placeType;
|
||||
|
||||
/**
|
||||
* 店员范围(0:所有店员)
|
||||
@@ -86,6 +85,12 @@ public class PlayCouponInfoAddVo {
|
||||
@Pattern(regexp = "[0]", message = "店员范围只能为0")
|
||||
private String clerkType;
|
||||
|
||||
/**
|
||||
* 优惠券数量限制(0:不限制,1:限制)
|
||||
*/
|
||||
@NotNull(message = "优惠券总数不能为空")
|
||||
@Pattern(regexp = "[01]", message = "优惠券数量限制只能为0或1")
|
||||
private String couponQuantityType;
|
||||
/**
|
||||
* 优惠券总数(-1表示不限制数量)
|
||||
*/
|
||||
@@ -102,6 +107,13 @@ public class PlayCouponInfoAddVo {
|
||||
*/
|
||||
private Integer remainingQuantity;
|
||||
|
||||
/**
|
||||
* 店员获得最大数量是否限制
|
||||
*/
|
||||
@NotNull(message = "店员获得最大数量是否限制不能为空")
|
||||
@Pattern(regexp = "[01]", message = "店员获得最大数量是否限制只能为0或1")
|
||||
private String clerkObtainedMaxQuantityType;
|
||||
|
||||
/**
|
||||
* 店员获得最大数量
|
||||
*/
|
||||
@@ -115,24 +127,45 @@ public class PlayCouponInfoAddVo {
|
||||
@Pattern(regexp = "[0|1]", message = "店员范围只能为0或者1")
|
||||
private String claimConditionType;
|
||||
|
||||
|
||||
/**
|
||||
* 顾客等级
|
||||
* 顾客等级选择状态(0:未选择,1:选择)
|
||||
*/
|
||||
private String customLevelCheckType;
|
||||
|
||||
/**
|
||||
* 店员等级
|
||||
*/
|
||||
@TableField(typeHandler = StringTypeHandler.class)
|
||||
private List<String> customLevel;
|
||||
|
||||
|
||||
/**
|
||||
* 用户关注公众号选择状态(0:未选择,1:选择)
|
||||
*/
|
||||
private String customFollowStatusCheckType;
|
||||
|
||||
|
||||
/**
|
||||
* 顾客关注公众号状态(0:未关注,1:已关注)
|
||||
*/
|
||||
private String customFollowStatus;
|
||||
|
||||
/**
|
||||
* 顾客性别关注状态(0:未选择,1:选择)
|
||||
*/
|
||||
private String customSexCheckType;
|
||||
/**
|
||||
* 顾客性别(0:未知;1:男,2:女)
|
||||
*/
|
||||
private String customSex;
|
||||
private List<String> customSex;
|
||||
|
||||
/**
|
||||
* 仅限新用户领取选择状态(0:未选择,1:已选择)
|
||||
*/
|
||||
private String isNewUserCheckType;
|
||||
|
||||
/**
|
||||
* 仅限新用户领取(0:不是;1:是)(没有下过单的用户,下单后再退单也不算)
|
||||
*/
|
||||
private String isNewUser;
|
||||
private String newUser;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.starry.admin.modules.shop.module.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Pattern;
|
||||
|
||||
/**
|
||||
* 优惠券信息上架信息查询
|
||||
*
|
||||
* @author admin
|
||||
* @since 2024/7/4 15:26
|
||||
**/
|
||||
@Data
|
||||
public class PlayCouponInfoOnLineStateUpdateVo {
|
||||
|
||||
/**
|
||||
* 优惠券ID
|
||||
*/
|
||||
@NotNull(message = "优惠券ID不能为空")
|
||||
private String id;
|
||||
|
||||
|
||||
/**
|
||||
* 上下架状态不能为空
|
||||
*/
|
||||
@NotNull(message = "上下架状态不能为空不能为空")
|
||||
@Pattern(regexp = "[0|1]", message = "上下架状态不能必须为0或1")
|
||||
private String couponOnLineState;
|
||||
|
||||
|
||||
}
|
||||
@@ -116,16 +116,30 @@ public class PlayCouponInfoReturnVo {
|
||||
private String claimConditionType;
|
||||
|
||||
/**
|
||||
* 顾客等级
|
||||
* 顾客等级选择状态(0:未选择,1:选择)
|
||||
*/
|
||||
private String customLevelCheckType;
|
||||
|
||||
/**
|
||||
* 店员等级
|
||||
*/
|
||||
@TableField(typeHandler = StringTypeHandler.class)
|
||||
private List<String> customLevel;
|
||||
|
||||
/**
|
||||
* 用户关注公众号选择状态(0:未选择,1:选择)
|
||||
*/
|
||||
private String customFollowStatusCheckType;
|
||||
|
||||
/**
|
||||
* 顾客关注公众号状态(0:未关注,1:已关注)
|
||||
*/
|
||||
private String customFollowStatus;
|
||||
|
||||
/**
|
||||
* 顾客性别选择状态(0:未选择,1:选择)
|
||||
*/
|
||||
private String customSexCheckType;
|
||||
/**
|
||||
* 顾客性别(0:未知;1:男,2:女)
|
||||
*/
|
||||
@@ -135,6 +149,12 @@ public class PlayCouponInfoReturnVo {
|
||||
/**
|
||||
* 仅限新用户领取(0:不是;1:是)(没有下过单的用户,下单后再退单也不算)
|
||||
*/
|
||||
private String isNewUser;
|
||||
private String newUser;
|
||||
|
||||
/**
|
||||
* 优惠券上架状态(0;下架;1:上架)
|
||||
*/
|
||||
private String couponOnLineState;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.starry.admin.modules.shop.module.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 优惠券信息上架信息查询
|
||||
*
|
||||
* @author admin
|
||||
* @since 2024/7/4 15:26
|
||||
**/
|
||||
@Data
|
||||
public class PlayCouponInfoSendVo {
|
||||
|
||||
/**
|
||||
* 优惠券ID
|
||||
*/
|
||||
@NotNull(message = "优惠券ID不能为空")
|
||||
private String id;
|
||||
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@NotNull(message = "用户ID不能为空")
|
||||
private String customId;
|
||||
|
||||
/**
|
||||
* 优惠券数量不能为空
|
||||
*/
|
||||
@Max(value = 1,message = "优惠券数量必须小于1")
|
||||
@Min(value = 1,message = "优惠券数量必须大于1")
|
||||
private Integer sendNumber;
|
||||
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.starry.admin.modules.shop.module.entity.PlayCouponDetailsEntity;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponDetailsQueryVo;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponDetailsReturnVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -20,7 +21,7 @@ public interface IPlayCouponDetailsService extends IService<PlayCouponDetailsEnt
|
||||
* @param id 优惠券详情主键
|
||||
* @return 优惠券详情
|
||||
*/
|
||||
PlayCouponDetailsEntity selectPlayCouponDetailsById(String id);
|
||||
PlayCouponDetailsReturnVo selectPlayCouponDetailsById(String id);
|
||||
|
||||
/**
|
||||
* 查询优惠券详情列表
|
||||
@@ -28,7 +29,7 @@ public interface IPlayCouponDetailsService extends IService<PlayCouponDetailsEnt
|
||||
* @param vo 优惠券详情
|
||||
* @return 优惠券详情集合
|
||||
*/
|
||||
IPage<PlayCouponDetailsEntity> selectByPage(PlayCouponDetailsQueryVo vo);
|
||||
IPage<PlayCouponDetailsReturnVo> selectByPage(PlayCouponDetailsQueryVo vo);
|
||||
|
||||
/**
|
||||
* 查询优惠券详情列表
|
||||
@@ -43,12 +44,26 @@ public interface IPlayCouponDetailsService extends IService<PlayCouponDetailsEnt
|
||||
* 根据顾客ID,查询当前顾客优惠券列表
|
||||
*
|
||||
* @param customId 顾客ID
|
||||
* @param canBeUsed 是否可以被使用
|
||||
* @return List<com.starry.admin.modules.shop.module.entity.PlayCouponDetailsEntity>
|
||||
* @author 杭州世平信息科技有限公司-xuhq
|
||||
* @author admin
|
||||
* @since 2024/7/5 11:37
|
||||
**/
|
||||
List<PlayCouponDetailsEntity> selectByCustomId(String customId, boolean canBeUsed);
|
||||
List<PlayCouponDetailsEntity> selectByCustomId(String customId);
|
||||
|
||||
|
||||
/**
|
||||
* 新建优惠券使用详情
|
||||
*
|
||||
* @param customId 用户ID
|
||||
* @param customNickName 用户昵称
|
||||
* @param customLevel 用户等级
|
||||
* @param couponId 优惠券ID
|
||||
* @param obtainingChannels 获得渠道(1:自主领取;2:后台发放;3:退款返还;4:分享领取;5:抽奖获得)
|
||||
* @param useState 优惠券使用状态(1:未使用;2:已使用;3:已回收)
|
||||
* @author admin
|
||||
* @since 2024/7/8 16:21
|
||||
**/
|
||||
void create(String customId, String customNickName, String customLevel, String couponId, String obtainingChannels, String useState);
|
||||
|
||||
/**
|
||||
* 新增优惠券详情
|
||||
|
||||
@@ -2,10 +2,14 @@ package com.starry.admin.modules.shop.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.starry.admin.modules.custom.module.entity.PlayCustomUserInfoEntity;
|
||||
import com.starry.admin.modules.shop.module.entity.PlayCouponInfoEntity;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponInfoQueryVo;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponInfoReturnVo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 优惠券信息Service接口
|
||||
*
|
||||
@@ -13,6 +17,31 @@ import com.starry.admin.modules.shop.module.vo.PlayCouponInfoReturnVo;
|
||||
* @since 2024-07-04
|
||||
*/
|
||||
public interface IPlayCouponInfoService extends IService<PlayCouponInfoEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* 获取优惠券不可用的原因
|
||||
*
|
||||
* @param couponInfo 优惠券信息
|
||||
* @param placeType 下单类型
|
||||
* @param commodityId 商品ID
|
||||
* @param commodityQuantity 商品数量
|
||||
* @param price 商品单价
|
||||
* @return 不可用原因
|
||||
*/
|
||||
String getCouponReasonForUnavailableUse(PlayCouponInfoEntity couponInfo, String placeType, String commodityId, Integer commodityQuantity, BigDecimal price);
|
||||
|
||||
/**
|
||||
* 获取优惠券不可领取的原因
|
||||
*
|
||||
* @param entity 优惠券实体
|
||||
* @param customUserInfo 顾客实体
|
||||
* @return String
|
||||
* @author admin
|
||||
* @since 2024/7/8 14:44
|
||||
**/
|
||||
String getReasonForNotObtainingCoupons(PlayCouponInfoEntity entity, PlayCustomUserInfoEntity customUserInfo);
|
||||
|
||||
/**
|
||||
* 查询优惠券信息
|
||||
*
|
||||
@@ -30,6 +59,14 @@ public interface IPlayCouponInfoService extends IService<PlayCouponInfoEntity> {
|
||||
*/
|
||||
IPage<PlayCouponInfoReturnVo> selectByPage(PlayCouponInfoQueryVo vo);
|
||||
|
||||
|
||||
/**
|
||||
* 查询优惠券信息列表
|
||||
*
|
||||
* @return 优惠券信息集合
|
||||
*/
|
||||
List<PlayCouponInfoEntity> queryAll();
|
||||
|
||||
/**
|
||||
* 查询优惠券信息列表
|
||||
*
|
||||
|
||||
@@ -8,12 +8,15 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.starry.admin.modules.shop.mapper.PlayCouponDetailsMapper;
|
||||
import com.starry.admin.modules.shop.module.entity.PlayCouponDetailsEntity;
|
||||
import com.starry.admin.modules.shop.module.entity.PlayCouponInfoEntity;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponDetailsQueryVo;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponDetailsReturnVo;
|
||||
import com.starry.admin.modules.shop.service.IPlayCouponDetailsService;
|
||||
import com.starry.common.utils.IdUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@@ -35,14 +38,21 @@ public class PlayCouponDetailsServiceImpl extends ServiceImpl<PlayCouponDetailsM
|
||||
* @return 优惠券详情
|
||||
*/
|
||||
@Override
|
||||
public PlayCouponDetailsEntity selectPlayCouponDetailsById(String id) {
|
||||
return this.baseMapper.selectById(id);
|
||||
public PlayCouponDetailsReturnVo selectPlayCouponDetailsById(String id) {
|
||||
MPJLambdaWrapper<PlayCouponDetailsEntity> lambdaWrapper = new MPJLambdaWrapper<>();
|
||||
lambdaWrapper.selectAll(PlayCouponDetailsEntity.class);
|
||||
lambdaWrapper.leftJoin(PlayCouponInfoEntity.class, PlayCouponInfoEntity::getId, PlayCouponDetailsEntity::getCouponId);
|
||||
lambdaWrapper.eq(PlayCouponDetailsEntity::getId, id);
|
||||
return this.baseMapper.selectJoinOne(PlayCouponDetailsReturnVo.class, lambdaWrapper);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public IPage<PlayCouponDetailsEntity> selectByPage(PlayCouponDetailsQueryVo vo) {
|
||||
public IPage<PlayCouponDetailsReturnVo> selectByPage(PlayCouponDetailsQueryVo vo) {
|
||||
MPJLambdaWrapper<PlayCouponDetailsEntity> lambdaWrapper = new MPJLambdaWrapper<>();
|
||||
lambdaWrapper.selectAll(PlayCouponDetailsEntity.class);
|
||||
lambdaWrapper.selectAll(PlayCouponInfoEntity.class);
|
||||
lambdaWrapper.leftJoin(PlayCouponInfoEntity.class, PlayCouponInfoEntity::getId, PlayCouponDetailsEntity::getCouponId);
|
||||
if (StrUtil.isNotBlank(vo.getCouponId())) {
|
||||
lambdaWrapper.eq(PlayCouponDetailsEntity::getCouponId, vo.getCouponId());
|
||||
}
|
||||
@@ -61,11 +71,9 @@ public class PlayCouponDetailsServiceImpl extends ServiceImpl<PlayCouponDetailsM
|
||||
if (vo.getUseTime() != null && vo.getUseTime().size() == 2) {
|
||||
lambdaWrapper.between(PlayCouponDetailsEntity::getUseTime, vo.getUseTime().get(0), vo.getUseTime().get(1));
|
||||
}
|
||||
if (!vo.getCustomLevelId().isEmpty()) {
|
||||
lambdaWrapper.in(PlayCouponDetailsEntity::getCustomLevelId, vo.getCustomLevelId());
|
||||
}
|
||||
|
||||
return this.baseMapper.selectJoinPage(new Page<>(vo.getPageNum(), vo.getPageSize()), PlayCouponDetailsEntity.class, lambdaWrapper);
|
||||
|
||||
return this.baseMapper.selectJoinPage(new Page<>(vo.getPageNum(), vo.getPageSize()), PlayCouponDetailsReturnVo.class, lambdaWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -80,6 +88,21 @@ public class PlayCouponDetailsServiceImpl extends ServiceImpl<PlayCouponDetailsM
|
||||
return this.baseMapper.selectPage(page, new LambdaQueryWrapper<PlayCouponDetailsEntity>());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void create(String customId, String customNickName, String customLevel, String couponId, String obtainingChannels, String useState) {
|
||||
PlayCouponDetailsEntity couponDetails = new PlayCouponDetailsEntity();
|
||||
couponDetails.setId(IdUtils.getUuid());
|
||||
couponDetails.setCustomId(customId);
|
||||
couponDetails.setCustomNickname(customNickName);
|
||||
couponDetails.setCustomLevelId(customLevel);
|
||||
couponDetails.setCouponId(couponId);
|
||||
couponDetails.setObtainingChannels(obtainingChannels);
|
||||
couponDetails.setObtainingTime(LocalDateTime.now());
|
||||
couponDetails.setUseState(useState);
|
||||
this.create(couponDetails);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增优惠券详情
|
||||
*
|
||||
@@ -95,9 +118,10 @@ public class PlayCouponDetailsServiceImpl extends ServiceImpl<PlayCouponDetailsM
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PlayCouponDetailsEntity> selectByCustomId(String customId, boolean canBeUsed) {
|
||||
public List<PlayCouponDetailsEntity> selectByCustomId(String customId) {
|
||||
MPJLambdaWrapper<PlayCouponDetailsEntity> lambdaWrapper = new MPJLambdaWrapper<>();
|
||||
lambdaWrapper.eq(PlayCouponDetailsEntity::getCustomId, customId);
|
||||
return this.baseMapper.selectList(lambdaWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.starry.admin.common.exception.CustomException;
|
||||
import com.starry.admin.modules.custom.module.entity.PlayCustomUserInfoEntity;
|
||||
import com.starry.admin.modules.shop.mapper.PlayCouponInfoMapper;
|
||||
import com.starry.admin.modules.shop.module.entity.PlayCouponInfoEntity;
|
||||
import com.starry.admin.modules.shop.module.vo.PlayCouponInfoQueryVo;
|
||||
@@ -15,7 +17,9 @@ import com.starry.common.utils.IdUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 优惠券信息Service业务层处理
|
||||
@@ -28,6 +32,101 @@ public class PlayCouponInfoServiceImpl extends ServiceImpl<PlayCouponInfoMapper,
|
||||
@Resource
|
||||
private PlayCouponInfoMapper playCouponInfoMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 获取优惠券不可用的原因
|
||||
*
|
||||
* @param couponInfo 优惠券信息
|
||||
* @param placeType 下单类型
|
||||
* @param commodityId 商品ID
|
||||
* @param commodityQuantity 商品数量
|
||||
* @return 不可用原因
|
||||
*/
|
||||
@Override
|
||||
public String getCouponReasonForUnavailableUse(PlayCouponInfoEntity couponInfo, String placeType, String commodityId, Integer commodityQuantity, BigDecimal price) {
|
||||
if (StrUtil.isEmpty(commodityId) || commodityQuantity <= 0) {
|
||||
return "订单满1船票余额时可用";
|
||||
}
|
||||
boolean placeTypeSuccess = false;
|
||||
for (String string : couponInfo.getPlaceType()) {
|
||||
if (string.equals(placeType)) {
|
||||
placeTypeSuccess = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!placeTypeSuccess) {
|
||||
return "订单类型不符合";
|
||||
}
|
||||
//订单门槛不等0,并且订单金额小于订单门槛
|
||||
if (BigDecimal.ZERO.compareTo(couponInfo.getUseMinAmount()) != 0 && price.multiply(new BigDecimal(commodityQuantity)).compareTo(couponInfo.getUseMinAmount()) <= -1) {
|
||||
return "订单门槛不符合";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取优惠券不可领取的原因
|
||||
*
|
||||
* @param entity 优惠券实体
|
||||
* @param customUserInfo 顾客实体
|
||||
* @return String
|
||||
* @author admin
|
||||
* @since 2024/7/8 14:44
|
||||
**/
|
||||
@Override
|
||||
public String getReasonForNotObtainingCoupons(PlayCouponInfoEntity entity, PlayCustomUserInfoEntity customUserInfo) {
|
||||
// 优惠券是否设置指定条件领取
|
||||
if ("0".equals(entity.getClaimConditionType())) {
|
||||
return "";
|
||||
}
|
||||
// 顾客等级判断
|
||||
String msg = reasonForNotObtainingCoupons(entity.getCustomLevelCheckType(), entity.getCustomLevel(), customUserInfo.getLevelId(), "0");
|
||||
if (StrUtil.isNotEmpty(msg)) {
|
||||
return msg;
|
||||
}
|
||||
// 顾客性别判断
|
||||
msg = reasonForNotObtainingCoupons(entity.getCustomSexCheckType(), entity.getCustomSex(), customUserInfo.getSex().toString(), "`1");
|
||||
if (StrUtil.isNotEmpty(msg)) {
|
||||
return msg;
|
||||
}
|
||||
// 顾客关注公众号状态判断
|
||||
|
||||
|
||||
// 顾客是否是新用户判断
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取优惠券不可领取的原因
|
||||
*
|
||||
* @param checkStatus 是否配置了该项指标(0:未配置,1:已配置)
|
||||
* @param attributes 配置的属性列表
|
||||
* @param attribute 用户属性值
|
||||
* @param type 条件类型(0:用户等级,1:用户性别)
|
||||
* @return String
|
||||
* @author admin
|
||||
* @since 2024/7/8 15:22
|
||||
**/
|
||||
public String reasonForNotObtainingCoupons(String checkStatus, List<String> attributes, String attribute, String type) {
|
||||
if ("0".equals(checkStatus)) {
|
||||
return "";
|
||||
}
|
||||
for (String s : attributes) {
|
||||
if (s.equals(attribute)) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
if ("0".equals(type)) {
|
||||
return "用户等级不匹配";
|
||||
}
|
||||
if ("1".equals(type)) {
|
||||
return "用户性别不匹配";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询优惠券信息
|
||||
*
|
||||
@@ -36,7 +135,11 @@ public class PlayCouponInfoServiceImpl extends ServiceImpl<PlayCouponInfoMapper,
|
||||
*/
|
||||
@Override
|
||||
public PlayCouponInfoEntity selectPlayCouponInfoById(String id) {
|
||||
return this.baseMapper.selectById(id);
|
||||
PlayCouponInfoEntity entity = this.baseMapper.selectById(id);
|
||||
if (entity == null) {
|
||||
throw new CustomException("优惠券不存在");
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,9 +147,18 @@ public class PlayCouponInfoServiceImpl extends ServiceImpl<PlayCouponInfoMapper,
|
||||
public IPage<PlayCouponInfoReturnVo> selectByPage(PlayCouponInfoQueryVo vo) {
|
||||
MPJLambdaWrapper<PlayCouponInfoEntity> lambdaQueryWrapper = new MPJLambdaWrapper<>();
|
||||
lambdaQueryWrapper.selectAll(PlayCouponInfoEntity.class);
|
||||
lambdaQueryWrapper.orderByDesc(PlayCouponInfoEntity::getCreatedTime);
|
||||
return this.baseMapper.selectJoinPage(new Page<>(vo.getPageNum(), vo.getPageSize()), PlayCouponInfoReturnVo.class, lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PlayCouponInfoEntity> queryAll() {
|
||||
MPJLambdaWrapper<PlayCouponInfoEntity> lambdaQueryWrapper = new MPJLambdaWrapper<>();
|
||||
lambdaQueryWrapper.selectAll(PlayCouponInfoEntity.class);
|
||||
lambdaQueryWrapper.orderByDesc(PlayCouponInfoEntity::getCreatedTime);
|
||||
return this.baseMapper.selectJoinList(PlayCouponInfoEntity.class, lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询优惠券信息列表
|
||||
*
|
||||
|
||||
@@ -1,14 +1,30 @@
|
||||
package com.starry.admin.modules.weichat.controller;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.starry.admin.common.aspect.CustomUserLogin;
|
||||
import com.starry.admin.common.conf.ThreadLocalRequestDetail;
|
||||
import com.starry.admin.common.exception.CustomException;
|
||||
import com.starry.admin.modules.custom.module.entity.PlayCustomUserInfoEntity;
|
||||
import com.starry.admin.modules.play.module.vo.PlayCommodityInfoVo;
|
||||
import com.starry.admin.modules.play.service.IPlayCommodityInfoService;
|
||||
import com.starry.admin.modules.shop.module.entity.PlayCouponDetailsEntity;
|
||||
import com.starry.admin.modules.shop.module.entity.PlayCouponInfoEntity;
|
||||
import com.starry.admin.modules.shop.service.IPlayCouponDetailsService;
|
||||
import com.starry.admin.modules.shop.service.IPlayCouponInfoService;
|
||||
import com.starry.admin.modules.weichat.entity.WxCouponOrderQueryVo;
|
||||
import com.starry.admin.modules.weichat.entity.WxCouponOrderReturnVo;
|
||||
import com.starry.admin.modules.weichat.entity.WxCouponReceiveReturnVo;
|
||||
import com.starry.common.result.R;
|
||||
import com.starry.common.utils.ConvertUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author admin
|
||||
@@ -23,21 +39,88 @@ public class WxCouponController {
|
||||
@Resource
|
||||
IPlayCouponDetailsService couponDetailsService;
|
||||
|
||||
@Resource
|
||||
IPlayCouponInfoService couponInfoService;
|
||||
|
||||
@Resource
|
||||
private IPlayCommodityInfoService playCommodityInfoService;
|
||||
|
||||
|
||||
@CustomUserLogin
|
||||
@GetMapping("/custom/obtainCoupon")
|
||||
public R queryAll(@RequestParam("id") String id) {
|
||||
PlayCustomUserInfoEntity customUserInfo = ThreadLocalRequestDetail.getCustomUserInfo();
|
||||
if (StrUtil.isEmpty(id)) {
|
||||
throw new CustomException("请求参数异常,优惠券ID不能为");
|
||||
}
|
||||
PlayCouponInfoEntity entity = couponInfoService.selectPlayCouponInfoById(id);
|
||||
String msg = couponInfoService.getReasonForNotObtainingCoupons(entity, customUserInfo);
|
||||
boolean success = StrUtil.isBlank(msg);
|
||||
// 优惠券领取验证通过,发放优惠券
|
||||
if (success) {
|
||||
couponDetailsService.create(customUserInfo.getId(), customUserInfo.getNickname(), customUserInfo.getLevelId(), entity.getId(), "1", "1");
|
||||
}
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
result.put("success", success);
|
||||
result.put("msg", msg);
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询所有优惠券,以及本人是否可领取
|
||||
*
|
||||
* @return com.starry.common.result.R
|
||||
* @author admin
|
||||
* @since 2024/7/8 13:53
|
||||
**/
|
||||
@CustomUserLogin
|
||||
@PostMapping("/custom/queryAll")
|
||||
public R queryAll() {
|
||||
List<PlayCouponDetailsEntity> obtainedCoupons = couponDetailsService.selectByCustomId(ThreadLocalRequestDetail.getCustomUserInfo().getId());
|
||||
List<PlayCouponInfoEntity> couponInfoEntities = couponInfoService.queryAll();
|
||||
List<WxCouponReceiveReturnVo> returnVos = new ArrayList<>(couponInfoEntities.size());
|
||||
for (PlayCouponInfoEntity couponInfoEntity : couponInfoEntities) {
|
||||
if ("0".equals(couponInfoEntity.getCouponOnLineState())) {
|
||||
continue;
|
||||
}
|
||||
WxCouponReceiveReturnVo vo = ConvertUtil.entityToVo(couponInfoEntity, WxCouponReceiveReturnVo.class);
|
||||
for (PlayCouponDetailsEntity obtainedCoupon : obtainedCoupons) {
|
||||
if (obtainedCoupon.getCouponId().equals(couponInfoEntity.getId())) {
|
||||
vo.setObtained("1");
|
||||
}
|
||||
}
|
||||
returnVos.add(vo);
|
||||
}
|
||||
return R.ok(returnVos);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 顾客查询本人优惠券列表
|
||||
*/
|
||||
@CustomUserLogin
|
||||
@GetMapping("/custom/queryAll")
|
||||
public R queryAll() {
|
||||
// couponDetailsService.selectByPage()
|
||||
// List<PlayCustomLevelInfoEntity> list = levelInfoService.selectAll();
|
||||
// List<PlayCustomLevelInfoReturnVo> result = new ArrayList<>();
|
||||
// for (PlayCustomLevelInfoEntity entity : list) {
|
||||
// PlayCustomLevelInfoReturnVo vo = new PlayCustomLevelInfoReturnVo();
|
||||
// BeanUtils.copyProperties(entity, vo);
|
||||
// result.add(vo);
|
||||
// }
|
||||
return R.ok("");
|
||||
@PostMapping("/custom/queryByOrder")
|
||||
public R queryByOrder(@Validated @RequestBody WxCouponOrderQueryVo vo) {
|
||||
List<PlayCouponDetailsEntity> list = couponDetailsService.selectByCustomId(ThreadLocalRequestDetail.getCustomUserInfo().getId());
|
||||
PlayCommodityInfoVo commodityInfo = playCommodityInfoService.queryCommodityInfo(vo.getCommodityId());
|
||||
// 优惠券列表
|
||||
List<WxCouponOrderReturnVo> couponReturnVos = new ArrayList<>();
|
||||
for (PlayCouponDetailsEntity couponDetails : list) {
|
||||
PlayCouponInfoEntity couponInfo = couponInfoService.selectPlayCouponInfoById(couponDetails.getCouponId());
|
||||
WxCouponOrderReturnVo wxCouponReturnVo = ConvertUtil.entityToVo(couponDetails, WxCouponOrderReturnVo.class);
|
||||
String couponReasonForUnavailableUse = couponInfoService.getCouponReasonForUnavailableUse(couponInfo, vo.getPlaceType(), vo.getCommodityId(), vo.getCommodityQuantity(), commodityInfo.getCommodityPrice());
|
||||
if (StrUtil.isEmpty(couponReasonForUnavailableUse)) {
|
||||
wxCouponReturnVo.setAvailable("1");
|
||||
} else {
|
||||
wxCouponReturnVo.setAvailable("0");
|
||||
wxCouponReturnVo.setReasonForUnavailableUse(couponReasonForUnavailableUse);
|
||||
}
|
||||
couponReturnVos.add(wxCouponReturnVo);
|
||||
}
|
||||
return R.ok(couponReturnVos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.starry.admin.modules.weichat.controller;
|
||||
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.starry.admin.common.aspect.CustomUserLogin;
|
||||
@@ -30,6 +31,8 @@ import com.starry.admin.modules.order.service.IPlayOrderInfoService;
|
||||
import com.starry.admin.modules.order.service.IPlayOrderRandomInfoService;
|
||||
import com.starry.admin.modules.play.module.vo.PlayCommodityInfoVo;
|
||||
import com.starry.admin.modules.play.service.IPlayCommodityInfoService;
|
||||
import com.starry.admin.modules.shop.module.entity.PlayCouponInfoEntity;
|
||||
import com.starry.admin.modules.shop.service.IPlayCouponInfoService;
|
||||
import com.starry.admin.modules.weichat.entity.*;
|
||||
import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoResultVo;
|
||||
import com.starry.admin.modules.weichat.entity.costom.PlayCustomHideLevelStateEditVo;
|
||||
@@ -53,6 +56,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
@@ -105,6 +109,9 @@ public class WxCustomController {
|
||||
@Resource
|
||||
private IPlayClerkGiftInfoService playClerkGiftInfoService;
|
||||
|
||||
@Resource
|
||||
private IPlayCouponInfoService playCouponInfoService;
|
||||
|
||||
|
||||
/**
|
||||
* 根据店员ID查询店员详细信息
|
||||
@@ -194,7 +201,7 @@ public class WxCustomController {
|
||||
}
|
||||
String orderId = IdUtils.getUuid();
|
||||
// 记录订单信息
|
||||
playOrderInfoService.createOrderInfo(orderId, playOrderInfoService.getOrderNo(), "3", "2", "2", "0", "1", "", "0", BigDecimal.ZERO, "", "", "0", new BigDecimal(vo.getMoney()), new BigDecimal(vo.getMoney()), BigDecimal.ZERO, userId, vo.getClerkId(), vo.getWeiChatCode(), vo.getRemark());
|
||||
playOrderInfoService.createOrderInfo(orderId, playOrderInfoService.getOrderNo(), "3", "2", "2", "0", "1", "", "0", BigDecimal.ZERO, "", "", "0", new BigDecimal(vo.getMoney()), new BigDecimal(vo.getMoney()), BigDecimal.ZERO, userId, vo.getClerkId(), vo.getWeiChatCode(), new ArrayList<>(),vo.getRemark());
|
||||
//
|
||||
// playOrderInfoService.createRewardOrder(orderId, new BigDecimal(vo.getMoney()), new BigDecimal(vo.getMoney()), userId, clerkUserInfo.getId(), vo.getRemark(), vo.getWeiChatCode());
|
||||
// 顾客减少余额
|
||||
@@ -221,7 +228,7 @@ public class WxCustomController {
|
||||
}
|
||||
String orderId = IdUtils.getUuid();
|
||||
// 记录订单信息
|
||||
playOrderInfoService.createOrderInfo(orderId, playOrderInfoService.getOrderNo(), "3", "2", "2", "1", "1", giftInfo.getId(), "0", giftInfo.getPrice(), "", giftInfo.getName(), String.valueOf(vo.getGiftQuantity()), money, money, BigDecimal.ZERO, userId, vo.getClerkId(), vo.getWeiChatCode(), vo.getRemark());
|
||||
playOrderInfoService.createOrderInfo(orderId, playOrderInfoService.getOrderNo(), "3", "2", "2", "1", "1", giftInfo.getId(), "0", giftInfo.getPrice(), "", giftInfo.getName(), String.valueOf(vo.getGiftQuantity()), money, money, BigDecimal.ZERO, userId, vo.getClerkId(), vo.getWeiChatCode(), new ArrayList<>(), vo.getRemark());
|
||||
|
||||
// playOrderInfoService.createGiftOrder(orderId, vo.getGiftId(), giftInfo.getPrice(), String.valueOf(vo.getGiftQuantity()), money, money, userId, clerkUserInfo.getId(), vo.getRemark(), vo.getWeiChatCode());
|
||||
// 顾客减少余额
|
||||
@@ -271,6 +278,16 @@ public class WxCustomController {
|
||||
public R commodityToOrdder(@Validated @RequestBody PlayOrderInfoCommodityAdd vo) {
|
||||
String customId = ThreadLocalRequestDetail.getCustomUserInfo().getId();
|
||||
PlayCommodityInfoVo commodityInfo = playCommodityInfoService.queryCommodityInfo(vo.getCommodityId());
|
||||
|
||||
for (String couponId : vo.getCouponIds()) {
|
||||
PlayCouponInfoEntity couponInfo = playCouponInfoService.selectPlayCouponInfoById(couponId);
|
||||
String couponReasonForUnavailableUse = playCouponInfoService.getCouponReasonForUnavailableUse(couponInfo, "0", vo.getCommodityId(), vo.getCommodityQuantity(), commodityInfo.getCommodityPrice());
|
||||
if (StrUtil.isNotBlank(couponReasonForUnavailableUse)) {
|
||||
throw new CustomException("优惠券不可用");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(customId);
|
||||
PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(vo.getClerkId());
|
||||
BigDecimal money = commodityInfo.getCommodityPrice().multiply(new BigDecimal(vo.getCommodityQuantity()));
|
||||
@@ -281,12 +298,9 @@ public class WxCustomController {
|
||||
String orderId = IdUtils.getUuid();
|
||||
|
||||
// 记录订单信息
|
||||
playOrderInfoService.createOrderInfo(orderId, playOrderInfoService.getOrderNo(), "0", "2", "0", "", "1", commodityInfo.getCommodityId(), "1", commodityInfo.getCommodityPrice(), commodityInfo.getServiceDuration(), commodityInfo.getCommodityName(), String.valueOf(vo.getCommodityQuantity()), money, money, BigDecimal.ZERO, customId, clerkUserInfo.getId(), vo.getWeiChatCode(), vo.getRemark());
|
||||
// playOrderInfoService.createOrdinaryOrder(orderId, commodityInfo.getCommodityId(), commodityInfo.getCommodityPrice(), String.valueOf(vo.getCommodityQuantity()), commodityInfo.getCommodityName(), commodityInfo.getServiceDuration(), money, money, customId, clerkUserInfo.getId(), vo.getRemark(), vo.getWeiChatCode());
|
||||
playOrderInfoService.createOrderInfo(orderId, playOrderInfoService.getOrderNo(), "0", "2", "0", "", "1", commodityInfo.getCommodityId(), "1", commodityInfo.getCommodityPrice(), commodityInfo.getServiceDuration(), commodityInfo.getCommodityName(), String.valueOf(vo.getCommodityQuantity()), money, money, BigDecimal.ZERO, customId, clerkUserInfo.getId(), vo.getWeiChatCode(), vo.getCouponIds(), vo.getRemark());
|
||||
// 顾客减少余额
|
||||
customUserInfoService.updateAccountBalanceById(customUserInfo.getId(), customUserInfo.getAccountBalance(), customUserInfo.getAccountBalance().subtract(money), "1", "下单-指定单", money, BigDecimal.ZERO, orderId);
|
||||
// 陪聊增加余额
|
||||
// clerkUserInfoService.updateAccountBalanceById(clerkUserInfo.getId(), clerkUserInfo.getAccountBalance(), clerkUserInfo.getAccountBalance().add(money), "2", "下单-指定单", money, orderId);
|
||||
return R.ok("成功");
|
||||
}
|
||||
|
||||
@@ -311,7 +325,6 @@ public class WxCustomController {
|
||||
String orderId = IdUtils.getUuid();
|
||||
|
||||
PlayOrderRandomInfoEntity orderRandomInfo = ConvertUtil.entityToVo(vo, PlayOrderRandomInfoEntity.class);
|
||||
;
|
||||
orderRandomInfo.setCommodityId(commodityInfo.getCommodityId());
|
||||
orderRandomInfo.setCommodityName(commodityInfo.getCommodityName());
|
||||
orderRandomInfo.setCommodityPrice(commodityInfo.getCommodityPrice());
|
||||
@@ -320,7 +333,7 @@ public class WxCustomController {
|
||||
orderRandomInfo.setId(orderId);
|
||||
playOrderRandomInfoService.create(orderRandomInfo);
|
||||
// 记录订单信息
|
||||
playOrderInfoService.createOrderInfo(orderId, playOrderInfoService.getOrderNo(), "0", "2", "1", "", "1", commodityInfo.getCommodityId(), "1", commodityInfo.getCommodityPrice(), commodityInfo.getServiceDuration(), commodityInfo.getCommodityName(), String.valueOf(vo.getCommodityQuantity()), money, money, BigDecimal.ZERO, customId, "", vo.getWeiChatCode(), vo.getRemark());
|
||||
playOrderInfoService.createOrderInfo(orderId, playOrderInfoService.getOrderNo(), "0", "2", "1", "", "1", commodityInfo.getCommodityId(), "1", commodityInfo.getCommodityPrice(), commodityInfo.getServiceDuration(), commodityInfo.getCommodityName(), String.valueOf(vo.getCommodityQuantity()), money, money, BigDecimal.ZERO, customId, "", vo.getWeiChatCode(), vo.getCouponIds(), vo.getRemark());
|
||||
|
||||
// playOrderInfoService.createRandomOrder(orderId, customUserInfo.getId(), commodityInfo.getCommodityPrice(), String.valueOf(vo.getCommodityQuantity()), commodityInfo.getServiceDuration(), commodityInfo.getCommodityName(), money, money, customId, vo.getRemark(), vo.getWeiChatCode());
|
||||
// 顾客减少余额
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.starry.admin.modules.weichat.controller;
|
||||
|
||||
import com.starry.admin.common.aspect.ClerkUserLogin;
|
||||
import com.starry.admin.modules.personnel.module.entity.PlayPersonnelGroupInfoEntity;
|
||||
import com.starry.admin.modules.personnel.service.IPlayPersonnelGroupInfoService;
|
||||
import com.starry.admin.modules.weichat.entity.PlayGroupWagesQueryVo;
|
||||
import com.starry.admin.modules.weichat.entity.PlayGroupWagesReturnVo;
|
||||
import com.starry.common.result.R;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 微信查询组长工资
|
||||
*
|
||||
* @author admin
|
||||
* @since 2024/7/6 下午3:46
|
||||
**/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/wx/group")
|
||||
public class WxPersonnelGroupInfoController {
|
||||
|
||||
|
||||
@Resource
|
||||
private IPlayPersonnelGroupInfoService playClerkGroupInfoService;
|
||||
|
||||
|
||||
/**
|
||||
* 查询组长公工资
|
||||
*/
|
||||
@ClerkUserLogin
|
||||
@PostMapping("/wages/listAll")
|
||||
public R listGroupWagesAll(@Validated @RequestBody PlayGroupWagesQueryVo vo) {
|
||||
List<PlayPersonnelGroupInfoEntity> list = playClerkGroupInfoService.selectAll();
|
||||
List<PlayGroupWagesReturnVo> data = new ArrayList<>();
|
||||
for (PlayPersonnelGroupInfoEntity entity : list) {
|
||||
PlayGroupWagesReturnVo bean = new PlayGroupWagesReturnVo();
|
||||
bean.setGroupName(entity.getGroupName());
|
||||
data.add(bean);
|
||||
}
|
||||
return R.ok(data);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 组长工资查询对象
|
||||
*
|
||||
* @author admin
|
||||
* @since 2024/7/6 下午3:56
|
||||
**/
|
||||
@Data
|
||||
public class PlayGroupWagesQueryVo {
|
||||
|
||||
/**
|
||||
* 统计时间
|
||||
*/
|
||||
private List<String> statisticalTime;
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 组长工资查询对象
|
||||
*
|
||||
* @author admin
|
||||
* @since 2024/7/6 下午3:56
|
||||
**/
|
||||
@Data
|
||||
public class PlayGroupWagesReturnVo {
|
||||
|
||||
/**
|
||||
* 组名称
|
||||
*/
|
||||
private String groupName;
|
||||
|
||||
/**
|
||||
* 订单金额
|
||||
*/
|
||||
private BigDecimal orderMoney = BigDecimal.ZERO;
|
||||
|
||||
|
||||
/**
|
||||
* 订单最终金额(支付金额)
|
||||
*/
|
||||
private BigDecimal finalAmount = BigDecimal.ZERO;
|
||||
|
||||
/**
|
||||
* 续单比例
|
||||
*/
|
||||
private final double orderContinueProportion = 0.0;
|
||||
/**
|
||||
* 续单金额
|
||||
*/
|
||||
private final BigDecimal orderTotalAmount = BigDecimal.ZERO;
|
||||
|
||||
/**
|
||||
* 续费率
|
||||
*/
|
||||
private final BigDecimal orderContinueRechargeProportion = BigDecimal.ZERO;
|
||||
/**
|
||||
* 退单率
|
||||
*/
|
||||
private final BigDecimal orderChargebackProportion = BigDecimal.ZERO;
|
||||
/**
|
||||
* 续客率
|
||||
*/
|
||||
private final BigDecimal continuousCustomProportion = BigDecimal.ZERO;
|
||||
|
||||
/**
|
||||
* 订单平均价格
|
||||
*/
|
||||
private final BigDecimal averageUnitPrice = BigDecimal.ZERO;
|
||||
|
||||
|
||||
/**
|
||||
* 组长工资
|
||||
*/
|
||||
private final BigDecimal commission = BigDecimal.ZERO;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 顾客优惠券下单查询对象
|
||||
*
|
||||
* @author admin
|
||||
* @since 2024/7/6 下午4:16
|
||||
**/
|
||||
@Data
|
||||
public class WxCouponOrderQueryVo {
|
||||
|
||||
|
||||
private String commodityId;
|
||||
|
||||
/**
|
||||
* 下单类型(-1:其他类型;0:指定单;1:随机单;2:打赏单)
|
||||
*/
|
||||
private String placeType;
|
||||
|
||||
|
||||
private int commodityQuantity;
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 顾客优惠券下单查询返回对象
|
||||
*
|
||||
* @author admin
|
||||
* @since 2024/7/6 下午4:16
|
||||
**/
|
||||
@Data
|
||||
public class WxCouponOrderReturnVo {
|
||||
|
||||
/**
|
||||
* 优惠券ID
|
||||
*/
|
||||
private String id;
|
||||
|
||||
|
||||
/**
|
||||
* 优惠券名称
|
||||
**/
|
||||
private String couponName ="测试券";
|
||||
|
||||
|
||||
/**
|
||||
* 有效期类型(0:永久有效;1:固定时间内有效;2:领取后几天内有效)
|
||||
*/
|
||||
private String validityPeriodType;
|
||||
|
||||
/**
|
||||
* 生效时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime productiveTime;
|
||||
|
||||
/**
|
||||
* 到期时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime expirationTime;
|
||||
|
||||
/**
|
||||
* 生效时长,validityPeriodType=2时有效
|
||||
**/
|
||||
private Integer effectiveDay;
|
||||
|
||||
/**
|
||||
* 使用优惠券最低消费金额
|
||||
**/
|
||||
private BigDecimal useMinAmount;
|
||||
|
||||
/**
|
||||
* 优惠类型(0:满减;1:折扣)
|
||||
*/
|
||||
private String discountType;
|
||||
|
||||
/**
|
||||
* 折扣值
|
||||
*/
|
||||
private BigDecimal discountAmount;
|
||||
|
||||
private String discountContent;
|
||||
|
||||
/**
|
||||
* 优惠是否可使用(0:不可使用,1:可使用)
|
||||
*/
|
||||
private String available;
|
||||
|
||||
/**
|
||||
* 优惠券不可用的原因
|
||||
*/
|
||||
private String reasonForUnavailableUse;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 顾客优惠券领取查询返回对象
|
||||
*
|
||||
* @author admin
|
||||
* @since 2024/7/6 下午4:16
|
||||
**/
|
||||
@Data
|
||||
public class WxCouponReceiveReturnVo {
|
||||
|
||||
/**
|
||||
* 优惠券ID
|
||||
*/
|
||||
private String id;
|
||||
|
||||
|
||||
/**
|
||||
* 优惠券名称
|
||||
**/
|
||||
private String couponName;
|
||||
|
||||
|
||||
/**
|
||||
* 有效期类型(0:永久有效;1:固定时间内有效;2:领取后几天内有效)
|
||||
*/
|
||||
private String validityPeriodType;
|
||||
|
||||
/**
|
||||
* 生效时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime productiveTime;
|
||||
|
||||
/**
|
||||
* 到期时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime expirationTime;
|
||||
|
||||
/**
|
||||
* 生效时长,validityPeriodType=2时有效
|
||||
**/
|
||||
private Integer effectiveDay;
|
||||
|
||||
/**
|
||||
* 使用优惠券最低消费金额
|
||||
**/
|
||||
private BigDecimal useMinAmount;
|
||||
|
||||
/**
|
||||
* 优惠类型(0:满减;1:折扣)
|
||||
*/
|
||||
private String discountType;
|
||||
|
||||
/**
|
||||
* 折扣值
|
||||
*/
|
||||
private BigDecimal discountAmount;
|
||||
|
||||
/**
|
||||
* 优惠内容(文字展示)
|
||||
**/
|
||||
private String discountContent;
|
||||
|
||||
/**
|
||||
* 优惠是否已领取(0:未领取,1:已领取)
|
||||
*/
|
||||
private String obtained = "0";
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user