砍价字段修改

This commit is contained in:
Jack 2025-11-07 12:42:01 +08:00
parent db33dd255e
commit 2661277bd2
6 changed files with 235 additions and 137 deletions

View File

@ -129,10 +129,10 @@ public class ShopStoreActivityBase implements Serializable {
@TableField(updateStrategy = NOT_EMPTY)
private String flow_no;
@ApiModelProperty(value = "在活动时间范围内,用户砍价允许的天数")
private Integer cut_days;
@ApiModelProperty(value = "在活动时间范围内,用户砍价有效期(小时)")
private Integer cut_hour;
@ApiModelProperty(value = "参与活动商品的总数量")
@ApiModelProperty(value = "参与活动商品的总数量(个)")
private Integer product_count;
}

View File

@ -118,8 +118,8 @@ public class UserActivityController extends BaseControllerImpl {
return CommonResult.success(shopActivityCutpriceService.getCutPriceActivity());
}
@ApiOperation(value = "立即砍价", notes = "自己砍价、要求朋友过来也能砍价")
@RequestMapping(value = "/doCutPrice", method = RequestMethod.GET)
@ApiOperation(value = "立即砍价", notes = "自己砍价、邀请朋友过来也能砍价")
@RequestMapping(value = "/doCutPrice", method = {RequestMethod.GET, RequestMethod.POST})
public CommonResult doCutPrice(@RequestParam(name = "ac_id", defaultValue = "0") Integer ac_id) {
UserDto user = getCurrentUser();
if (user == null || CheckUtil.isEmpty(user.getId())) {

View File

@ -260,37 +260,58 @@ public class ShopActivityCutpriceServiceImpl extends BaseServiceImpl<ShopActivit
}
/**
* 砍价活动详情
* 砍价活动详情用户一进来就参与砍价创建了
*
* @return
* @return 砍价活动详情信息
*/
@Override
public Map getCutPriceActivity() {
// 获取请求参数
Integer activity_id = getParameter("activity_id", 0);
Integer participant_id = getParameter("participant_id", 0);
Integer user_id = getParameter("user_id", 0);
// 参数校验
if (activity_id == null || activity_id <= 0) {
throw new ApiException(I18nUtil._("活动ID无效"));
}
if (user_id == null || user_id <= 0) {
throw new ApiException(I18nUtil._("用户ID无效"));
}
// 获取活动基础信息
ShopStoreActivityBase activityBase = shopStoreActivityBaseService.get(activity_id);
if (activityBase == null) {
throw new ApiException(I18nUtil._("未找到活动信息!"));
}
Map activity_row = Convert.toMap(String.class, Object.class, activityBase);
// if (!shopStoreActivityBaseService.verifyActivity(activity_row)) {
// throw new ApiException(I18nUtil._("该活动不存在或已结束!"));
// }
// 获取当前用户信息
UserDto user = getCurrentUser();
if (CheckUtil.isEmpty(participant_id) && user != null) {
participant_id = user.getId();
}
// 查询用户是否已参与该砍价活动
QueryWrapper<ShopActivityCutprice> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("activity_id", activity_id).eq("user_id", user_id);
ShopActivityCutprice cutprice_row = findOne(queryWrapper);
// 如果用户未参与该砍价活动则创建新的砍价记录
if (cutprice_row == null) {
cutprice_row = new ShopActivityCutprice();
// 从活动规则中获取商品原价和砍价底价
JSONObject activity_rule = JSONUtil.parseObj(activityBase.getActivity_rule());
if (activity_rule == null) {
throw new ApiException(I18nUtil._("活动规则数据异常!"));
}
BigDecimal item_unit_price = Convert.toBigDecimal(activity_rule.get("item_unit_price"));
BigDecimal cut_down_min_limit_price = Convert.toBigDecimal(activity_rule.get("cut_down_min_limit_price"));
// 初始化砍价记录信息
cutprice_row.setActivity_id(activity_id);
cutprice_row.setUser_id(user_id);
cutprice_row.setAc_sale_price(item_unit_price);
@ -298,32 +319,29 @@ public class ShopActivityCutpriceServiceImpl extends BaseServiceImpl<ShopActivit
cutprice_row.setAc_datetime(new Date());
cutprice_row.setOrder_id("");
// 保存砍价记录
if (!saveOrUpdate(cutprice_row)) {
throw new ApiException(I18nUtil._("创建砍价失败!"));
}
}
// 将砍价记录信息合并到活动信息中
activity_row.putAll(Convert.toMap(String.class, Object.class, cutprice_row));
// 查询当前用户是否已参与砍价
Integer ac_id = cutprice_row.getAc_id();
QueryWrapper<ShopActivityCutpriceHistory> historyQueryWrapper = new QueryWrapper<>();
historyQueryWrapper.eq("ac_id", ac_id).eq("user_id", participant_id);
ShopActivityCutpriceHistory cutpriceHistory = cutpriceHistoryService.findOne(historyQueryWrapper);
// 设置用户砍价历史信息
activity_row.put("cut_row", cutpriceHistory);
activity_row.put("is_cut", cutpriceHistory != null);
// 设置活动规则信息
activity_row.put("activity_rule", JSONUtil.parseObj(activity_row.get("activity_rule")));
// // 砍价订单有效期时长
// if (cutprice_row != null && cutprice_row.getAc_datetime() != null) {
// Float order_cutprice_time = accountBaseConfigService.getConfig("order_cutprice_time", 3f);
// int second = NumberUtil.mul(order_cutprice_time, 24, 60, 60).intValue();
// long time = DateUtil.offsetSecond(cutprice_row.getAc_datetime(), +second).getTime();
// activity_row.put("activity_endtime", Convert.toDate(time));
// }
// 界面做一个简单的底价验证
// 判断是否可以立即购买
boolean canBuyNow = cutprice_row != null
&& CheckUtil.isNotEmpty(cutprice_row.getAc_sale_price())
&& CheckUtil.isNotEmpty(cutprice_row.getAc_mix_limit_price())
@ -331,7 +349,7 @@ public class ShopActivityCutpriceServiceImpl extends BaseServiceImpl<ShopActivit
BigDecimal subtractPrice = NumberUtil.sub(cutprice_row.getAc_sale_price(), cutprice_row.getAc_mix_limit_price());
// 能否立即出手 1-可以2-不可以
// 设置购买状态和提示信息
activity_row.put("can_buy_now", canBuyNow ? CommonConstant.Enable : CommonConstant.Disable2);
activity_row.put("cannot_buy_now_reason",
canBuyNow ? "恭喜您,商品可以立即出手了。" :
@ -340,6 +358,7 @@ public class ShopActivityCutpriceServiceImpl extends BaseServiceImpl<ShopActivit
return activity_row;
}
/**
* 砍价
*
@ -350,11 +369,26 @@ public class ShopActivityCutpriceServiceImpl extends BaseServiceImpl<ShopActivit
@Override
@Transactional
public CommonResult doCutPrice(Integer ac_id, Integer user_id) {
DateTime today = DateUtil.beginOfDay(new Date());
Integer num = accountBaseConfigService.getConfig("user_cutprice_num", 0);
Integer cut_num = Convert.toInt(redisService.hGet("cutprice-" + today, user_id.toString()), 0);
// 参数校验
if (ac_id == null || ac_id <= 0) {
throw new ApiException(I18nUtil._("活动ID无效"));
}
if (user_id == null || user_id <= 0) {
throw new ApiException(I18nUtil._("用户ID无效"));
}
// 获取砍价记录
ShopActivityCutprice cutprice_row = get(ac_id);
if (cutprice_row == null) {
throw new ApiException(I18nUtil._("未找到砍价记录!"));
}
// 检查是否是帮别人砍价且次数已用完
if (!cutprice_row.getUser_id().equals(user_id)) {
DateTime today = DateUtil.beginOfDay(new Date());
Integer num = accountBaseConfigService.getConfig("user_cutprice_num", 0);
Integer cut_num = Convert.toInt(redisService.hGet("cutprice-" + today, user_id.toString()), 0);
if (num > 0 && cut_num >= num) {
throw new ApiException(I18nUtil._("今日帮砍次数已用完!"));
}
@ -362,34 +396,54 @@ public class ShopActivityCutpriceServiceImpl extends BaseServiceImpl<ShopActivit
BigDecimal ac_sale_price = cutprice_row.getAc_sale_price();
BigDecimal ac_mix_limit_price = cutprice_row.getAc_mix_limit_price();
// 检查是否已达到最低价
if (ac_sale_price == null || ac_mix_limit_price == null) {
throw new ApiException(I18nUtil._("价格数据异常!"));
}
if (ObjectUtil.compare(ac_sale_price, ac_mix_limit_price) <= 0) {
throw new ApiException(I18nUtil._("已达到最低价!"));
}
Integer activity_id = cutprice_row.getActivity_id();
ShopStoreActivityBase storeActivityBase = shopStoreActivityBaseService.get(activity_id);
Map activity_row = Convert.toMap(String.class, Object.class, storeActivityBase);
if (!shopStoreActivityBaseService.isActivityTimeValid(activity_row)) {
throw new ApiException(I18nUtil._("该活动不存在!"));
if (storeActivityBase == null) {
throw new ApiException(I18nUtil._("未找到活动信息!"));
}
// 检查活动是否有效
if (!shopStoreActivityBaseService.isActivityTimeValid(Convert.toMap(String.class, Object.class, storeActivityBase))) {
throw new ApiException(I18nUtil._("该活动不存在或已过期!"));
}
// 检查是否已经帮过好友砍了价
QueryWrapper<ShopActivityCutpriceHistory> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", user_id).eq("ac_id", ac_id);
long ach_num = shopActivityCutpriceHistoryService.count(queryWrapper);
if (CheckUtil.isNotEmpty(ach_num)) {
throw new ApiException(I18nUtil._("已经帮助好友进行砍价!"));
if (ach_num > 0) {
throw new ApiException(I18nUtil._("已经帮过好友砍了价!"));
}
// 计算砍价金额
BigDecimal cut_price = shopStoreActivityBaseService.getCutDownPrice(storeActivityBase, cutprice_row);
if (CheckUtil.isEmpty(cut_price)) {
if (cut_price == null || cut_price.compareTo(BigDecimal.ZERO) <= 0) {
throw new ApiException(I18nUtil._("砍价失败!"));
}
// 获取商品ID
String str_activity_rule = storeActivityBase.getActivity_rule();
com.alibaba.fastjson.JSONObject activity_rule = com.alibaba.fastjson.JSONObject.parseObject(str_activity_rule);
Long item_id = activity_rule.getObject("item_id", Long.class);
if (StrUtil.isBlank(str_activity_rule)) {
throw new ApiException(I18nUtil._("活动规则数据异常!"));
}
JSONObject activity_rule = JSONUtil.parseObj(str_activity_rule);
Long item_id = activity_rule.get("item_id", Long.class);
if (item_id == null) {
throw new ApiException(I18nUtil._("未找到商品信息!"));
}
// 创建砍价历史记录
ShopActivityCutpriceHistory ach_data = new ShopActivityCutpriceHistory();
ach_data.setActivity_id(activity_id);
ach_data.setUser_id(user_id);
@ -398,17 +452,22 @@ public class ShopActivityCutpriceServiceImpl extends BaseServiceImpl<ShopActivit
ach_data.setAch_datetime(new Date());
ach_data.setAc_id(ac_id);
// 保存砍价历史记录
if (!shopActivityCutpriceHistoryService.saveOrUpdate(ach_data)) {
throw new ApiException(I18nUtil._("修改砍价历史失败!"));
throw new ApiException(I18nUtil._("保存砍价历史失败!"));
}
// 更新砍价信息
cutprice_row.setAc_sale_price(NumberUtil.sub(ac_sale_price, cut_price));
cutprice_row.setAc_num(cutprice_row.getAc_num() + 1);
if (!edit(cutprice_row)) {
throw new ApiException(I18nUtil._("修改金额失败!"));
throw new ApiException(I18nUtil._("更新砍价信息失败!"));
}
// 更新帮砍次数如果不是自己砍自己的话
if (!cutprice_row.getUser_id().equals(user_id)) {
DateTime today = DateUtil.beginOfDay(new Date());
Integer cut_num = Convert.toInt(redisService.hGet("cutprice-" + today, user_id.toString()), 0);
redisService.hSet("cutprice-" + today, user_id.toString(), cut_num + 1, 24 * 60 * 60 * 1000);
}

View File

@ -1049,13 +1049,20 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl<ShopOrderInfoMappe
// 今天是否可预约在营业时间之前或之中
boolean isTodayAvailable = true;
// 获取开业活动筹备中店铺最晚的日期, 如果存在说明几个店铺中有开业活动筹备中的店铺
// 获取开业活动筹备中店铺最晚的日期 yyyy-MM-dd, 如果存在说明几个店铺中有开业活动筹备中的店铺
Date latestBizOpeningDate = shopStoreBaseService.getLatestBizOpeningDate(storeIds);
if (latestBizOpeningDate != null) {
// 有开业筹备中的店铺预约以这个开业日期为起始日期
startDate = latestBizOpeningDate;
inRangeVal = 1;
isTodayAvailable = false;
if (latestBizOpeningDate.after(startDate)) {
// 如果开业筹备中的日期在今天之后预约以这个开业日期为起始日期
startDate = latestBizOpeningDate;
inRangeVal = 1; // 今天不在营业时间段内
isTodayAvailable = false; // 今天不能预约
} else {
// 如果开业日期已过期把这个日期设置为今天的日期
inRangeVal = 0;
isTodayAvailable = true;
}
} else {
// 判断今天还能不能立即下单和预约下单就有今天的时间槽不能就没有今天的时间槽
//-1-在时间段之前 0-时间段内1-在时间段之后
@ -1066,7 +1073,7 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl<ShopOrderInfoMappe
isTodayAvailable = inRangeVal <= 0; // 今天是否可预约在营业时间之前或之中
}
// 生成预约日期参数
for (int i = 0; i < daysCnt; i++) {
Date currentDate = DateUtil.offsetDay(startDate, i);
BookingArgDTO bookingArgDTO = new BookingArgDTO();
@ -1105,97 +1112,104 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl<ShopOrderInfoMappe
List<BookingArgDTO.BookingArgItem> items = new ArrayList<>();
// 参数校验
if (StrUtil.isNotBlank(dateStr) && StrUtil.isNotBlank(startTimeStr) && StrUtil.isNotBlank(endTimeStr)) {
try {
// 解析营业时间
Date openTime = DateUtil.parse(dateStr + " " + startTimeStr + ":00", "yyyy-MM-dd HH:mm:ss");
Date closeTime = DateUtil.parse(dateStr + " " + endTimeStr + ":00", "yyyy-MM-dd HH:mm:ss");
if (StrUtil.isBlank(dateStr) || StrUtil.isBlank(startTimeStr) || StrUtil.isBlank(endTimeStr)) {
bookingArgDTO.setItems(items);
bookingArgList.add(bookingArgDTO);
continue;
}
// 验证营业时间有效性
if (!openTime.after(closeTime)) {
// 在营业时间段内且是今天添加"立即送出"选项
if (i == 0 && isTodayAvailable && inRangeVal == 0) {
BookingArgDTO.BookingArgItem immediateItem = new BookingArgDTO.BookingArgItem();
immediateItem.setTime_title("立即送出");
immediateItem.setBooking_at(0L);
immediateItem.setBooking_state(1);
immediateItem.setBooking_begin_time("");
immediateItem.setBooking_end_time("");
items.add(immediateItem);
}
try {
// 解析营业时间
Date openTime = DateUtil.parse(dateStr + " " + startTimeStr + ":00", "yyyy-MM-dd HH:mm:ss");
Date closeTime = DateUtil.parse(dateStr + " " + endTimeStr + ":00", "yyyy-MM-dd HH:mm:ss");
// 确定时间槽开始时间
Date startTime = openTime;
if (i == 0 && isTodayAvailable && inRangeVal <= 0) {
// 当前时间+50分钟作为时间槽的开始时间
Date nowPlusFifty = DateUtil.offsetMinute(new Date(), CommonConstant.MIN_DELAY_MINUTES_FOR_BOOKING_ORDER);
// 确保开始时间在营业时间范围内
if (nowPlusFifty.after(openTime)) {
if (nowPlusFifty.before(closeTime)) {
// 如果当前时间+50分钟在营业时间范围内则从该时间开始
startTime = nowPlusFifty;
logger.debug("[生成时间槽] 当前时间+50分钟在营业时间范围内则从该时间开始");
} else {
// 如果当前时间+50分钟已经超过营业结束时间则不生成后续时间槽
logger.debug("[生成时间槽] 当前时间+50分钟已超过营业结束时间不生成后续时间槽");
startTime = null; // 标记为不生成时间槽
}
}
}
// 生成时间槽
if (startTime != null) {
Date currentTimeSlot = startTime;
int slotCount = 0;
final int MAX_SLOTS = 96; // 最多生成96个时间段防止异常循环
while (currentTimeSlot.before(closeTime) && slotCount < MAX_SLOTS) {
Date endTimeSlot = DateUtil.offsetMinute(currentTimeSlot, 15);
// 如果结束时间超过了营业结束时间则使用营业结束时间
if (endTimeSlot.after(closeTime)) {
endTimeSlot = closeTime;
}
// 创建时间段项
BookingArgDTO.BookingArgItem timeItem = new BookingArgDTO.BookingArgItem();
String beginTimeStr = DateUtil.format(currentTimeSlot, "HH:mm");
String endTimeStrItem = DateUtil.format(endTimeSlot, "HH:mm");
timeItem.setTime_title(beginTimeStr + "-" + endTimeStrItem);
// 时间戳计算
long bookingAt = currentTimeSlot.getTime() / 1000;
timeItem.setBooking_at(bookingAt);
timeItem.setBooking_state(2);
timeItem.setBooking_begin_time(DateUtil.format(currentTimeSlot, "yyyy-MM-dd HH:mm:ss"));
timeItem.setBooking_end_time(DateUtil.format(endTimeSlot, "yyyy-MM-dd HH:mm:ss"));
items.add(timeItem);
// 移动到下一个时间段
currentTimeSlot = endTimeSlot;
slotCount++;
// 防止时间相同导致的死循环
if (currentTimeSlot.equals(startTime)) {
logger.warn("[生成时间槽] 检测到时间循环,跳出循环");
break;
}
}
if (slotCount >= MAX_SLOTS) {
logger.warn("[生成时间槽] 时间段数量超过最大限制date: {}", dateStr);
}
}
} else {
logger.warn("[生成时间槽] 营业时间无效openTime: {}, closeTime: {}", openTime, closeTime);
}
} catch (Exception e) {
logger.error("[生成时间槽] 生成时间槽异常date: {}, openingHours: {}, closeHours: {}", dateStr, startTimeStr, endTimeStr, e);
// 验证营业时间有效性
if (openTime.after(closeTime)) {
logger.warn("[生成时间槽] 营业时间无效openTime: {}, closeTime: {}", openTime, closeTime);
bookingArgDTO.setItems(items);
bookingArgList.add(bookingArgDTO);
continue;
}
// 在营业时间段内且是今天添加"立即送出"选项
if (i == 0 && isTodayAvailable && inRangeVal == 0) {
BookingArgDTO.BookingArgItem immediateItem = new BookingArgDTO.BookingArgItem();
immediateItem.setTime_title("立即送出");
immediateItem.setBooking_at(0L);
immediateItem.setBooking_state(1);
immediateItem.setBooking_begin_time("");
immediateItem.setBooking_end_time("");
items.add(immediateItem);
}
// 确定时间槽开始时间
Date startTime = openTime;
if (i == 0 && isTodayAvailable && inRangeVal <= 0) {
// 当前时间+50分钟作为时间槽的开始时间
Date nowPlusFifty = DateUtil.offsetMinute(new Date(), CommonConstant.MIN_DELAY_MINUTES_FOR_BOOKING_ORDER);
// 确保开始时间在营业时间范围内
if (nowPlusFifty.after(openTime)) {
if (nowPlusFifty.before(closeTime)) {
// 如果当前时间+50分钟在营业时间范围内则从该时间开始
startTime = nowPlusFifty;
logger.debug("[生成时间槽] 当前时间+50分钟在营业时间范围内则从该时间开始");
} else {
// 如果当前时间+50分钟已经超过营业结束时间则不生成后续时间槽
logger.debug("[生成时间槽] 当前时间+50分钟已超过营业结束时间不生成后续时间槽");
startTime = null; // 标记为不生成时间槽
}
}
}
// 生成时间槽
if (startTime != null) {
Date currentTimeSlot = startTime;
int slotCount = 0;
final int MAX_SLOTS = 96; // 最多生成96个时间段防止异常循环
while (currentTimeSlot.before(closeTime) && slotCount < MAX_SLOTS) {
Date endTimeSlot = DateUtil.offsetMinute(currentTimeSlot, 15);
// 如果结束时间超过了营业结束时间则使用营业结束时间
if (endTimeSlot.after(closeTime)) {
endTimeSlot = closeTime;
}
// 创建时间段项
BookingArgDTO.BookingArgItem timeItem = new BookingArgDTO.BookingArgItem();
String beginTimeStr = DateUtil.format(currentTimeSlot, "HH:mm");
String endTimeStrItem = DateUtil.format(endTimeSlot, "HH:mm");
timeItem.setTime_title(beginTimeStr + "-" + endTimeStrItem);
// 时间戳计算
long bookingAt = currentTimeSlot.getTime() / 1000;
timeItem.setBooking_at(bookingAt);
timeItem.setBooking_state(CommonConstant.Order_Booking_State_YY);
timeItem.setBooking_begin_time(DateUtil.format(currentTimeSlot, "yyyy-MM-dd HH:mm:ss"));
timeItem.setBooking_end_time(DateUtil.format(endTimeSlot, "yyyy-MM-dd HH:mm:ss"));
items.add(timeItem);
// 移动到下一个时间段
currentTimeSlot = endTimeSlot;
slotCount++;
// 防止时间相同导致的死循环
if (currentTimeSlot.equals(startTime)) {
logger.warn("[生成时间槽] 检测到时间循环,跳出循环");
break;
}
}
if (slotCount >= MAX_SLOTS) {
logger.warn("[生成时间槽] 时间段数量超过最大限制date: {}", dateStr);
}
}
} catch (Exception e) {
logger.error("[生成时间槽] 生成时间槽异常date: {}, openingHours: {}, closeHours: {}", dateStr, startTimeStr, endTimeStr, e);
}
bookingArgDTO.setItems(items);

View File

@ -65,7 +65,7 @@ public class ShopStoreActivityBaseController {
return CommonResult.success(shopStoreActivityBaseService.listBarginItem());
}
@ApiOperation(value = "活动表-编辑", notes = "活动表-编辑")
@ApiOperation(value = "活动表-新增", notes = "活动表-新增")
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public CommonResult edit() {
return shopStoreActivityBaseService.saveActivityBase();

View File

@ -3653,7 +3653,7 @@ public class ShopStoreActivityBaseServiceImpl extends BaseServiceImpl<ShopStoreA
shopStoreActivityBase.setActivity_rule(Convert.toStr(activity_rule));
} else if (base.getActivity_type_id().equals(StateCode.ACTIVITY_TYPE_CUTPRICE)) {
// 砍价活动
activity_rule.put("cut_down_fixed_price", Convert.toBigDecimal(getParameter("cut_down_fixed_price")));// 固定砍价价格
activity_rule.put("cut_down_max_price", Convert.toBigDecimal(getParameter("cut_down_max_price")));// 砍价最高范围
activity_rule.put("cut_down_min_price", Convert.toBigDecimal(getParameter("cut_down_min_price"))); // 砍价最低范围
@ -3663,10 +3663,23 @@ public class ShopStoreActivityBaseServiceImpl extends BaseServiceImpl<ShopStoreA
activity_rule.put("product_item_name", getParameter("product_item_name"));// 产品名称
activity_rule.put("item_id", getParameter("item_id"));// 产品ID
activity_rule.put("activity_intro", getParameter("activity_intro"));
ShopProductItem item_row = shopProductItemService.get(Convert.toInt(activity_rule.get("item_id")));
ShopProductBase product_row = shopProductBaseService.get(item_row.getProduct_id());
activity_rule.put("product_image", product_row.getProduct_image());
activity_rule.put("item_unit_price", item_row.getItem_unit_price());
// cut_hour - 砍价有效期小时
Integer cut_hour = getParameter("cut_hour", 0);
if (cut_hour > 0) {
activity_rule.put("cut_hour", cut_hour);
}
// product_count - 参与活动商品总数
Integer product_count = getParameter("product_count", 0);
if (product_count > 0) {
activity_rule.put("product_count", product_count);
}
shopStoreActivityBase.setActivity_rule(Convert.toStr(activity_rule));
} else if (base.getActivity_type_id().equals(StateCode.ACTIVITY_TYPE_GIFTBAG)) {
//a+b组合套餐
@ -5315,6 +5328,7 @@ public class ShopStoreActivityBaseServiceImpl extends BaseServiceImpl<ShopStoreA
data.put("activity_rule", activity_rule);
if (ObjectUtil.equal(activity_type_id, StateCode.ACTIVITY_TYPE_VOUCHER)) {
//店铺优惠券
String voucher_image = getParameter("voucher_image", "");
BigDecimal needed = getParameter("voucher_points_needed", BigDecimal.ZERO);
BigDecimal subtotal = getParameter("subtotal", BigDecimal.ZERO);
@ -5326,25 +5340,26 @@ public class ShopStoreActivityBaseServiceImpl extends BaseServiceImpl<ShopStoreA
String voucher_startdate = getParameter("voucher_startdate");
if (!CheckUtil.isDate(voucher_startdate)) {
throw new ApiException(I18nUtil._("请输入有效的生效日期"));
throw new ApiException(I18nUtil._("请输入有效的开始日期"));
}
String voucher_enddate = getParameter("voucher_enddate");
if (!CheckUtil.isDate(voucher_enddate)) {
throw new ApiException(I18nUtil._("请输入有效的失效日期"));
throw new ApiException(I18nUtil._("请输入有效的截止日期"));
}
Map requirement = new HashMap();
Map points = new HashMap();
Map buy = new HashMap();
points.put("needed", needed);
buy.put("subtotal", subtotal);
requirement.put("points", points);
requirement.put("buy", buy);
activity_rule.put("requirement", requirement);
points.put("needed", needed);
buy.put("subtotal", subtotal);
activity_rule.put("requirement", requirement);
activity_rule.put("voucher_image", voucher_image);
activity_rule.put("voucher_price", voucher_price);
activity_rule.put("voucher_start_date", voucher_startdate);
@ -5363,6 +5378,7 @@ public class ShopStoreActivityBaseServiceImpl extends BaseServiceImpl<ShopStoreA
buy.put("buy", buy);
data.put("requirement", requirement);
} else if (ObjectUtil.equal(activity_type_id, StateCode.ACTIVITY_TYPE_MARKETING)) {
//市场活动
String start_join_time = getParameter("start_join_time");
String end_join_time = getParameter("end_join_time");
String activity_address = getParameter("activity_address");
@ -5389,6 +5405,7 @@ public class ShopStoreActivityBaseServiceImpl extends BaseServiceImpl<ShopStoreA
activity_rule.put("activity_detail_intro", activity_detail_intro); // 活动详细规则
activity_rule.put("activity_intro", activity_intro); // 活动介绍
} else if (ObjectUtil.equal(activity_type_id, StateCode.ACTIVITY_TYPE_LOTTERY)) {
//幸运大抽奖
String lottery_subtitle = getParameter("lottery_subtitle");
Integer lottery_type = getParameter("lottery_type", Integer.class);
String lottery_image = getParameter("lottery_image");
@ -5512,6 +5529,14 @@ public class ShopStoreActivityBaseServiceImpl extends BaseServiceImpl<ShopStoreA
activity_rule.put("product_image", product_row.getProduct_image());
activity_rule.put("item_unit_price", item_row.getItem_unit_price());
// cut_hour - 砍价有效期小时
Integer cut_hour = getParameter("cut_hour", 72);
// product_count - 参与活动商品总数
Integer product_count = getParameter("product_count", 3);
activity_rule.put("product_count", product_count); // 参与活动的商品总数
activity_rule.put("cut_hour", cut_hour); // 砍价的有效期小时
} else if (ObjectUtil.equal(activity_type_id, StateCode.ACTIVITY_TYPE_GIFTBAG)) {
//a+b组合套餐
String activity_bag_category = getParameter("activity_bag_category");//礼包分类