This commit is contained in:
zt
2025-06-10 21:17:29 +08:00
parent 0cc91a0894
commit 6b92d0f800
123 changed files with 6837 additions and 19 deletions

View File

@ -0,0 +1,15 @@
package cn.iocoder.yudao.module.member.api.activitypay;
import cn.iocoder.yudao.module.member.api.activitypay.dto.ActivityPayDTO;
/**
* 用户收件地址 API 接口
*
* @author 芋道源码
*/
public interface ActivityApi {
void createActivityPay(ActivityPayDTO createReqVO);
}

View File

@ -0,0 +1,45 @@
package cn.iocoder.yudao.module.member.api.activitypay.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* 活动付款 DO
*
* @author 我是秦俊旗
*/
// 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ActivityPayDTO {
/**
* 活动id
*/
private Long activityId;
/**
* 桌号
*/
private String serialNumbers;
/**
* 价格
*/
private BigDecimal price;
/**
* 用户id
*/
private Long userId;
private String status;
private String reserveTime;
private String dish;
private String diningPeriod;
}

View File

@ -188,5 +188,28 @@ public interface ErrorCodeConstants {
ErrorCode DINING_PLATES_BIND_MAX = new ErrorCode(1_004_033_02, "可绑定的餐盘已达到上限");
ErrorCode STORE_DISCOUNT_NOT_EXISTS = new ErrorCode(1_004_033_03, "门店超市折扣不存在");
ErrorCode ACTIVITY_USER_NOT_EXISTS = new ErrorCode(1_005_000_01, "活动参加人员不存在");
ErrorCode ACTIVITY_TABLE_NOT_EXISTS = new ErrorCode(1_005_000_02, "活动用餐桌子不存在");
ErrorCode ACTIVITY_RESTAURANT_NOT_EXISTS = new ErrorCode(1_005_000_03, "活动用餐不存在");
ErrorCode ACTIVITY_AWARDS_USER_NOT_EXISTS = new ErrorCode(1_005_000_04, "活动中奖人员不存在");
ErrorCode ACTIVITY_AWARDS_NOT_EXISTS = new ErrorCode(1_005_000_05, "活动奖项不存在");
ErrorCode ACTIVITY_NOT_EXISTS = new ErrorCode(1_005_000_06, "活动不存在");
ErrorCode ACTIVITY_START = new ErrorCode(1_005_000_07, "活动已开始或结束");
ErrorCode ACTIVITY_TABLE_ZERO = new ErrorCode(1_005_000_08, "总桌数至少为1");
ErrorCode ACTIVITY_AWARDS_EXCEED = new ErrorCode(1_005_000_09, "中奖人数超出");
ErrorCode ACTIVITY_ERROR = new ErrorCode(1_005_000_10, "活动已结束");
ErrorCode ACTIVITY_USER_JOIN = new ErrorCode(1_005_000_11, "该活动已报名");
ErrorCode ACTIVITY_TABLE_RESERVED = new ErrorCode(1_005_000_12, "桌子已预订");
ErrorCode ACTIVITY_PAY_NOT_EXISTS = new ErrorCode(1_005_000_13, "活动付款不存在");
ErrorCode ACTIVITY_AWARDS_USER_NOT_EFFECTIVE = new ErrorCode(1_005_000_14, "该奖项已兑换或已过期");
ErrorCode ACTIVITY_NO_USER = new ErrorCode(1_005_000_15, "活动无参与人员");
ErrorCode ACTIVITY_PAY_TABLE_NOT_EXISTS = new ErrorCode(1_005_000_16, "活动付款不存在");
ErrorCode ACTIVITY_PAY_USE = new ErrorCode(1_005_000_17, "该订单已使用");
ErrorCode ACTIVITY_PAY_EXPIRE = new ErrorCode(1_005_000_18, "该订单不在有效期内");
ErrorCode ACTIVITY_ADD_DISH_NOT_EXISTS = new ErrorCode(1_005_000_19, "活动用餐桌子加菜不存在");
ErrorCode ACTIVITY_TABLE_DISH_NOT_EXISTS = new ErrorCode(1_005_000_20, "活动用餐桌子配置不存在");
ErrorCode ACTIVITY_ADD_DISH_NOT_CHANGE = new ErrorCode(1_005_000_19, "请先选择桌子");
}

View File

@ -110,6 +110,10 @@
<artifactId>javase</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-protection</artifactId>
</dependency>
</dependencies>

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.member.api.activitypay;
import cn.hutool.core.bean.BeanUtil;
import cn.iocoder.yudao.module.member.api.activitypay.dto.ActivityPayDTO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPaySaveReqVO;
import cn.iocoder.yudao.module.member.service.activitypay.ActivityPayService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 用户收件地址 API 接口
*
* @author 芋道源码
*/
@Service
public class ActivityApiImpl implements ActivityApi {
@Resource
private ActivityPayService activityPayService;
@Override
public void createActivityPay(ActivityPayDTO createReqVO) {
ActivityPaySaveReqVO bean = BeanUtil.toBean(createReqVO, ActivityPaySaveReqVO.class);
activityPayService.addActivityPay(bean);
}
}

View File

@ -0,0 +1,100 @@
package cn.iocoder.yudao.module.member.controller.admin.activity;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivitySaveReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantRespVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant.ActivityRestaurantDO;
import cn.iocoder.yudao.module.member.service.activity.ActivityService;
import cn.iocoder.yudao.module.member.service.activityrestaurant.ActivityRestaurantService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 活动")
@RestController
@RequestMapping("/member/activity")
@Validated
public class ActivityController {
@Resource
private ActivityService activityService;
@Resource
private ActivityRestaurantService activityRestaurantService;
@PostMapping("/create")
@Operation(summary = "创建活动")
public CommonResult<Long> createActivity(@Valid @RequestBody ActivitySaveReqVO createReqVO) {
return success(activityService.createActivity(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新活动")
@PreAuthorize("@ss.hasPermission('member:activity:update')")
public CommonResult<Boolean> updateActivity(@Valid @RequestBody ActivitySaveReqVO updateReqVO) {
activityService.updateActivity(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除活动")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:activity:delete')")
public CommonResult<Boolean> deleteActivity(@RequestParam("id") Long id) {
activityService.deleteActivity(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得活动")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:activity:query')")
public CommonResult<ActivityRespVO> getActivity(@RequestParam("id") Long id) {
ActivityDO activity = activityService.getActivity(id);
ActivityRespVO bean = BeanUtils.toBean(activity, ActivityRespVO.class);
ActivityRestaurantDO activityRestaurantDO = activityRestaurantService.getByActivityId(id);
bean.setActivityRestaurantSaveDto(BeanUtils.toBean(activityRestaurantDO, ActivityRestaurantRespVO.class));
return success(bean);
}
@GetMapping("/page")
@Operation(summary = "获得活动分页")
@PreAuthorize("@ss.hasPermission('member:activity:query')")
public CommonResult<PageResult<ActivityRespVO>> getActivityPage(@Valid ActivityPageReqVO pageReqVO) {
PageResult<ActivityRespVO> pageResult = activityService.getActivityPage(pageReqVO);
return success(pageResult);
}
@GetMapping("/export-excel")
@Operation(summary = "导出活动 Excel")
@PreAuthorize("@ss.hasPermission('member:activity:export')")
@OperateLog(type = EXPORT)
public void exportActivityExcel(@Valid ActivityPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityRespVO> list = activityService.getActivityPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "活动.xls", "数据", ActivityRespVO.class,
list);
}
}

View File

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.member.controller.admin.activity.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 活动分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ActivityPageReqVO extends PageParam {
@Schema(description = "活动名称", example = "李四")
private String activityName;
@Schema(description = "活动开始时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] startTime;
@Schema(description = "活动结束时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] endTime;
@Schema(description = "描述", example = "你猜")
private String description;
@Schema(description = "封面图")
private String img;
@Schema(description = "地点")
private String location;
@Schema(description = "主办方")
private String sponsor;
@Schema(description = "可抽奖次数")
private Integer lotteryNum;
@Schema(description = "用餐状态0-禁用1-启用 ", example = "1")
private String reservationStatus;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "用户ID")
private Long userId;
}

View File

@ -0,0 +1,77 @@
package cn.iocoder.yudao.module.member.controller.admin.activity.vo;
import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantRespVO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 活动 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29158")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@ExcelProperty("活动名称")
private String activityName;
@Schema(description = "活动开始时间")
@ExcelProperty("活动开始时间")
private LocalDateTime startTime;
@Schema(description = "活动结束时间")
@ExcelProperty("活动结束时间")
private LocalDateTime endTime;
@Schema(description = "描述", example = "你猜")
@ExcelProperty("描述")
private String description;
@Schema(description = "封面图")
@ExcelProperty("封面图")
private String img;
@Schema(description = "地点")
@ExcelProperty("地点")
private String location;
@Schema(description = "主办方")
@ExcelProperty("主办方")
private String sponsor;
@Schema(description = "可抽奖次数")
@ExcelProperty("可抽奖次数")
private Integer lotteryNum;
@Schema(description = "用餐状态0-禁用1-启用 ", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("用餐状态0-禁用1-启用 ")
private String reservationStatus;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "报名人数")
private Integer applyNum;
@Schema(description = "中奖人数")
private Integer awardsNum;
@Schema(description = "预定人数")
private Integer reserveNum;
@Schema(description = "收入")
private BigDecimal income;
@Schema(description = "是否报名")
private Boolean isApply;
private ActivityRestaurantRespVO activityRestaurantSaveDto;
}

View File

@ -0,0 +1,53 @@
package cn.iocoder.yudao.module.member.controller.admin.activity.vo;
import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsListDTO;
import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantSaveDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 活动新增/修改 Request VO")
@Data
public class ActivitySaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29158")
private Long id;
@Schema(description = "活动名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@NotEmpty(message = "活动名称不能为空")
private String activityName;
@Schema(description = "活动开始时间")
private LocalDateTime startTime;
@Schema(description = "活动结束时间")
private LocalDateTime endTime;
@Schema(description = "描述", example = "你猜")
private String description;
@Schema(description = "封面图")
private String img;
@Schema(description = "地点")
private String location;
@Schema(description = "主办方")
private String sponsor;
@Schema(description = "可抽奖次数")
private Integer lotteryNum;
@Schema(description = "用餐状态0-禁用1-启用 ", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotEmpty(message = "用餐状态0-禁用1-启用 不能为空")
private String reservationStatus;
@Schema(description = "奖项列表")
private List<ActivityAwardsListDTO> activityAwardsList;
@Schema(description = "用餐设置")
private ActivityRestaurantSaveDto activityRestaurantSaveDto;
}

View File

@ -0,0 +1,102 @@
package cn.iocoder.yudao.module.member.controller.admin.activityadddish;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishSaveBatchVO;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityadddish.ActivityAddDishDO;
import cn.iocoder.yudao.module.member.service.activityadddish.ActivityAddDishService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 活动用餐桌子加菜")
@RestController
@RequestMapping("/member/activity-add-dish")
@Validated
public class ActivityAddDishController {
@Resource
private ActivityAddDishService activityAddDishService;
@PostMapping("/create")
@Operation(summary = "创建活动用餐桌子加菜")
@PreAuthorize("@ss.hasPermission('member:activity-add-dish:create')")
public CommonResult<Long> createActivityAddDish(@Valid @RequestBody ActivityAddDishSaveReqVO createReqVO) {
return success(activityAddDishService.createActivityAddDish(createReqVO));
}
@PostMapping("/createBatch")
@Operation(summary = "创建活动用餐桌子加菜批量")
@PreAuthorize("@ss.hasPermission('member:activity-add-dish:create')")
public CommonResult<Boolean> createActivityAddDish(@Valid @RequestBody ActivityAddDishSaveBatchVO createReqVO) {
activityAddDishService.createActivityAddDishBatch(createReqVO);
return success(true);
}
@PutMapping("/update")
@Operation(summary = "更新活动用餐桌子加菜")
@PreAuthorize("@ss.hasPermission('member:activity-add-dish:update')")
public CommonResult<Boolean> updateActivityAddDish(@Valid @RequestBody ActivityAddDishSaveReqVO updateReqVO) {
activityAddDishService.updateActivityAddDish(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除活动用餐桌子加菜")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:activity-add-dish:delete')")
public CommonResult<Boolean> deleteActivityAddDish(@RequestParam("id") Long id) {
activityAddDishService.deleteActivityAddDish(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得活动用餐桌子加菜")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:activity-add-dish:query')")
public CommonResult<ActivityAddDishRespVO> getActivityAddDish(@RequestParam("id") Long id) {
ActivityAddDishDO activityAddDish = activityAddDishService.getActivityAddDish(id);
return success(BeanUtils.toBean(activityAddDish, ActivityAddDishRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得活动用餐桌子加菜分页")
@PreAuthorize("@ss.hasPermission('member:activity-add-dish:query')")
public CommonResult<PageResult<ActivityAddDishRespVO>> getActivityAddDishPage(@Valid ActivityAddDishPageReqVO pageReqVO) {
PageResult<ActivityAddDishDO> pageResult = activityAddDishService.getActivityAddDishPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ActivityAddDishRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出活动用餐桌子加菜 Excel")
@PreAuthorize("@ss.hasPermission('member:activity-add-dish:export')")
@OperateLog(type = EXPORT)
public void exportActivityAddDishExcel(@Valid ActivityAddDishPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityAddDishDO> list = activityAddDishService.getActivityAddDishPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "活动用餐桌子加菜.xls", "数据", ActivityAddDishRespVO.class,
BeanUtils.toBean(list, ActivityAddDishRespVO.class));
}
}

View File

@ -0,0 +1,44 @@
package cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 活动用餐桌子加菜分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ActivityAddDishPageReqVO extends PageParam {
@Schema(description = "桌子", example = "18726")
private Long tableDishId;
@Schema(description = "序号")
private Integer serialNumber;
@Schema(description = "菜名", example = "赵六")
private String dishName;
@Schema(description = "菜品价格", example = "12669")
private BigDecimal dishPrice;
@Schema(description = "菜品图片")
private String dishImg;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "桌子", example = "18726")
private List<Long> tableDishIds;
}

View File

@ -0,0 +1,45 @@
package cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 活动用餐桌子加菜 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityAddDishRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15656")
@ExcelProperty("编号")
private Long id;
@Schema(description = "桌子", requiredMode = Schema.RequiredMode.REQUIRED, example = "18726")
@ExcelProperty("桌子")
private Long tableDishId;
@Schema(description = "序号")
@ExcelProperty("序号")
private Integer serialNumber;
@Schema(description = "菜名", example = "赵六")
@ExcelProperty("菜名")
private String dishName;
@Schema(description = "菜品价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "12669")
@ExcelProperty("菜品价格")
private BigDecimal dishPrice;
@Schema(description = "菜品图片")
@ExcelProperty("菜品图片")
private String dishImg;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,28 @@
package cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@Schema(description = "管理后台 - 活动用餐桌子加菜新增/修改 Request VO")
@Data
public class ActivityAddDishSaveBatchVO {
@Schema(description = "桌子", requiredMode = Schema.RequiredMode.REQUIRED, example = "18726")
@NotNull(message = "桌子不能为空")
private List<Long> tableDishIds;
@Schema(description = "菜名", example = "赵六")
private String dishName;
@Schema(description = "菜品价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "12669")
@NotNull(message = "菜品价格不能为空")
private BigDecimal dishPrice;
@Schema(description = "菜品图片")
private String dishImg;
}

View File

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 活动用餐桌子加菜新增/修改 Request VO")
@Data
public class ActivityAddDishSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15656")
private Long id;
@Schema(description = "桌子", requiredMode = Schema.RequiredMode.REQUIRED, example = "18726")
@NotNull(message = "桌子不能为空")
private Long tableDishId;
@Schema(description = "序号")
private Integer serialNumber;
@Schema(description = "菜名", example = "赵六")
private String dishName;
@Schema(description = "菜品价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "12669")
@NotNull(message = "菜品价格不能为空")
private BigDecimal dishPrice;
@Schema(description = "菜品图片")
private String dishImg;
}

View File

@ -0,0 +1,101 @@
package cn.iocoder.yudao.module.member.controller.admin.activityawards;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO;
import cn.iocoder.yudao.module.member.service.activityawards.ActivityAwardsService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 活动奖项")
@RestController
@RequestMapping("/member/activity-awards")
@Validated
public class ActivityAwardsController {
@Resource
private ActivityAwardsService activityAwardsService;
@PostMapping("/create")
@Operation(summary = "创建活动奖项")
@PreAuthorize("@ss.hasPermission('member:activity-awards:create')")
public CommonResult<Long> createActivityAwards(@Valid @RequestBody ActivityAwardsSaveReqVO createReqVO) {
return success(activityAwardsService.createActivityAwards(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新活动奖项")
@PreAuthorize("@ss.hasPermission('member:activity-awards:update')")
public CommonResult<Boolean> updateActivityAwards(@Valid @RequestBody ActivityAwardsSaveReqVO updateReqVO) {
activityAwardsService.updateActivityAwards(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除活动奖项")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:activity-awards:delete')")
public CommonResult<Boolean> deleteActivityAwards(@RequestParam("id") Long id) {
activityAwardsService.deleteActivityAwards(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得活动奖项")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:activity-awards:query')")
public CommonResult<ActivityAwardsRespVO> getActivityAwards(@RequestParam("id") Long id) {
ActivityAwardsDO activityAwards = activityAwardsService.getActivityAwards(id);
return success(BeanUtils.toBean(activityAwards, ActivityAwardsRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得活动奖项分页")
@PreAuthorize("@ss.hasPermission('member:activity-awards:query')")
public CommonResult<PageResult<ActivityAwardsRespVO>> getActivityAwardsPage(@Valid ActivityAwardsPageReqVO pageReqVO) {
PageResult<ActivityAwardsDO> pageResult = activityAwardsService.getActivityAwardsPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ActivityAwardsRespVO.class));
}
@GetMapping("/list")
@Operation(summary = "获得活动奖项列表")
public CommonResult<List<ActivityAwardsRespVO>> getActivityAwardsList(@Valid ActivityAwardsPageReqVO pageReqVO) {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityAwardsDO> list = activityAwardsService.getActivityAwardsPage(pageReqVO).getList();
return success(BeanUtils.toBean(list, ActivityAwardsRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出活动奖项 Excel")
@PreAuthorize("@ss.hasPermission('member:activity-awards:export')")
@OperateLog(type = EXPORT)
public void exportActivityAwardsExcel(@Valid ActivityAwardsPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityAwardsDO> list = activityAwardsService.getActivityAwardsPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "活动奖项.xls", "数据", ActivityAwardsRespVO.class,
BeanUtils.toBean(list, ActivityAwardsRespVO.class));
}
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.member.controller.admin.activityawards.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 活动奖项新增/修改 Request VO")
@Data
public class ActivityAwardsListDTO {
@Schema(description = "奖项名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "奖项名称不能为空")
private String awardsName;
private String limitType;
@Schema(description = "奖项人数")
private Integer awardsNum;
@Schema(description = "奖品")
private String prize;
@Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "排序不能为空")
private Integer sortNum;
}

View File

@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.member.controller.admin.activityawards.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 活动奖项分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ActivityAwardsPageReqVO extends PageParam {
@Schema(description = "活动id", example = "3061")
private Long activityId;
@Schema(description = "奖项名称", example = "芋艿")
private String awardsName;
private String limitType;
@Schema(description = "奖项人数")
private Integer awardsNum;
@Schema(description = "奖品")
private String prize;
@Schema(description = "排序")
private Integer sortNum;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,46 @@
package cn.iocoder.yudao.module.member.controller.admin.activityawards.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 活动奖项 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityAwardsRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13226")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3061")
@ExcelProperty("活动id")
private Long activityId;
@Schema(description = "奖项名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("奖项名称")
private String awardsName;
private String limitType;
@Schema(description = "奖项人数")
@ExcelProperty("奖项人数")
private Integer awardsNum;
@Schema(description = "奖品")
@ExcelProperty("奖品")
private String prize;
@Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("排序")
private Integer sortNum;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.member.controller.admin.activityawards.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 活动奖项新增/修改 Request VO")
@Data
public class ActivityAwardsSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13226")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3061")
@NotNull(message = "活动id不能为空")
private Long activityId;
private String limitType;
@Schema(description = "奖项名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "奖项名称不能为空")
private String awardsName;
@Schema(description = "奖项人数")
private Integer awardsNum;
@Schema(description = "奖品")
private String prize;
@Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "排序不能为空")
private Integer sortNum;
}

View File

@ -0,0 +1,101 @@
package cn.iocoder.yudao.module.member.controller.admin.activityawardsuser;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO;
import cn.iocoder.yudao.module.member.service.activityawardsuser.ActivityAwardsUserService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 活动中奖人员")
@RestController
@RequestMapping("/member/activity-awards-user")
@Validated
public class ActivityAwardsUserController {
@Resource
private ActivityAwardsUserService activityAwardsUserService;
@PostMapping("/create")
@Operation(summary = "创建活动中奖人员")
@PreAuthorize("@ss.hasPermission('member:activity-awards-user:create')")
public CommonResult<Long> createActivityAwardsUser(@Valid @RequestBody ActivityAwardsUserSaveReqVO createReqVO) {
return success(activityAwardsUserService.createActivityAwardsUser(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新活动中奖人员")
@PreAuthorize("@ss.hasPermission('member:activity-awards-user:update')")
public CommonResult<Boolean> updateActivityAwardsUser(@Valid @RequestBody ActivityAwardsUserSaveReqVO updateReqVO) {
activityAwardsUserService.updateActivityAwardsUser(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除活动中奖人员")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:activity-awards-user:delete')")
public CommonResult<Boolean> deleteActivityAwardsUser(@RequestParam("id") Long id) {
activityAwardsUserService.deleteActivityAwardsUser(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得活动中奖人员")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:activity-awards-user:query')")
public CommonResult<ActivityAwardsUserRespVO> getActivityAwardsUser(@RequestParam("id") Long id) {
ActivityAwardsUserDO activityAwardsUser = activityAwardsUserService.getActivityAwardsUser(id);
return success(BeanUtils.toBean(activityAwardsUser, ActivityAwardsUserRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得活动中奖人员分页")
@PreAuthorize("@ss.hasPermission('member:activity-awards-user:query')")
public CommonResult<PageResult<ActivityAwardsUserRespVO>> getActivityAwardsUserPage(@Valid ActivityAwardsUserPageReqVO pageReqVO) {
PageResult<ActivityAwardsUserDO> pageResult = activityAwardsUserService.getActivityAwardsUserPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ActivityAwardsUserRespVO.class));
}
@GetMapping("/JoinPage")
@Operation(summary = "获得活动中奖人员分页")
public CommonResult<PageResult<ActivityAwardsUserRespVO>> getActivityAwardsUserJoinPage(@Valid ActivityAwardsUserPageReqVO pageReqVO) {
return success(activityAwardsUserService.getActivityAwardsUserJoinPage(pageReqVO));
}
@GetMapping("/export-excel")
@Operation(summary = "导出活动中奖人员 Excel")
@PreAuthorize("@ss.hasPermission('member:activity-awards-user:export')")
@OperateLog(type = EXPORT)
public void exportActivityAwardsUserExcel(@Valid ActivityAwardsUserPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityAwardsUserDO> list = activityAwardsUserService.getActivityAwardsUserPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "活动中奖人员.xls", "数据", ActivityAwardsUserRespVO.class,
BeanUtils.toBean(list, ActivityAwardsUserRespVO.class));
}
}

View File

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 活动参加人员 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityAwardsUserCountVO {
@Schema(description = "活动id")
private Long activityId;
@Schema(description = "中奖人数")
private Integer awardsNum= 0;
}

View File

@ -0,0 +1,38 @@
package cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 活动中奖人员分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ActivityAwardsUserPageReqVO extends PageParam {
@Schema(description = "活动id", example = "8386")
private Long activityId;
@Schema(description = "用户id", example = "19931")
private Long userId;
@Schema(description = "电话")
private String mobile;
@Schema(description = "奖品id", example = "3358")
private Long awardsId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
private String awardsStatus;
}

View File

@ -0,0 +1,58 @@
package cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 活动中奖人员 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityAwardsUserRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32607")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8386")
@ExcelProperty("活动id")
private Long activityId;
@Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19931")
@ExcelProperty("用户id")
private Long userId;
@Schema(description = "电话")
@ExcelProperty("电话")
private String mobile;
private String nickName;
private String avatar;
/**
* 领奖状态(0-未领奖1-已领奖2-已过期)
*/
private String awardsStatus;
@Schema(description = "奖品id", example = "3358")
@ExcelProperty("奖品id")
private Long awardsId;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
/**
* 奖项名称
*/
private String awardsName;
/**
* 奖品
*/
private String prize;
}

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 活动中奖人员新增/修改 Request VO")
@Data
public class ActivityAwardsUserSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32607")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8386")
@NotNull(message = "活动id不能为空")
private Long activityId;
@Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19931")
@NotNull(message = "用户id不能为空")
private Long userId;
@Schema(description = "电话")
private String mobile;
@Schema(description = "奖品id", example = "3358")
private Long awardsId;
}

View File

@ -0,0 +1,93 @@
package cn.iocoder.yudao.module.member.controller.admin.activitypay;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPaySaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO;
import cn.iocoder.yudao.module.member.service.activitypay.ActivityPayService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 活动付款")
@RestController
@RequestMapping("/member/activity-pay")
@Validated
public class ActivityPayController {
@Resource
private ActivityPayService activityPayService;
@PostMapping("/create")
@Operation(summary = "创建活动付款")
@PreAuthorize("@ss.hasPermission('member:activity-pay:create')")
public CommonResult<Long> createActivityPay(@Valid @RequestBody ActivityPaySaveReqVO createReqVO) {
return success(activityPayService.createActivityPay(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新活动付款")
@PreAuthorize("@ss.hasPermission('member:activity-pay:update')")
public CommonResult<Boolean> updateActivityPay(@Valid @RequestBody ActivityPaySaveReqVO updateReqVO) {
activityPayService.updateActivityPay(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除活动付款")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:activity-pay:delete')")
public CommonResult<Boolean> deleteActivityPay(@RequestParam("id") Long id) {
activityPayService.deleteActivityPay(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得活动付款")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:activity-pay:query')")
public CommonResult<ActivityPayRespVO> getActivityPay(@RequestParam("id") Long id) {
ActivityPayDO activityPay = activityPayService.getActivityPay(id);
return success(BeanUtils.toBean(activityPay, ActivityPayRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得活动付款分页")
@PreAuthorize("@ss.hasPermission('member:activity-pay:query')")
public CommonResult<PageResult<ActivityPayRespVO>> getActivityPayPage(@Valid ActivityPayPageReqVO pageReqVO) {
PageResult<ActivityPayDO> pageResult = activityPayService.getActivityPayPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ActivityPayRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出活动付款 Excel")
@PreAuthorize("@ss.hasPermission('member:activity-pay:export')")
@OperateLog(type = EXPORT)
public void exportActivityPayExcel(@Valid ActivityPayPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityPayDO> list = activityPayService.getActivityPayPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "活动付款.xls", "数据", ActivityPayRespVO.class,
BeanUtils.toBean(list, ActivityPayRespVO.class));
}
}

View File

@ -0,0 +1,21 @@
package cn.iocoder.yudao.module.member.controller.admin.activitypay.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 活动参加人员 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityPayCountVO {
@Schema(description = "活动id")
private Long activityId;
@Schema(description = "已收钱款")
private BigDecimal income= BigDecimal.ZERO;
}

View File

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.member.controller.admin.activitypay.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 活动付款分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ActivityPayPageReqVO extends PageParam {
@Schema(description = "活动id", example = "27391")
private Long activityId;
@Schema(description = "桌号")
private String serialNumbers;
@Schema(description = "价格", example = "7717")
private BigDecimal price;
@Schema(description = "用户id", example = "5313")
private Long userId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.member.controller.admin.activitypay.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 活动付款 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityPayRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24970")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27391")
@ExcelProperty("活动id")
private Long activityId;
@Schema(description = "桌号")
@ExcelProperty("桌号")
private String serialNumbers;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "7717")
@ExcelProperty("价格")
private BigDecimal price;
@Schema(description = "用户id", example = "5313")
@ExcelProperty("用户id")
private Long userId;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,38 @@
package cn.iocoder.yudao.module.member.controller.admin.activitypay.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 活动付款新增/修改 Request VO")
@Data
public class ActivityPaySaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24970")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27391")
@NotNull(message = "活动id不能为空")
private Long activityId;
@Schema(description = "桌号")
private String serialNumbers;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "7717")
@NotNull(message = "价格不能为空")
private BigDecimal price;
@Schema(description = "用户id", example = "5313")
private Long userId;
private String status;
private String reserveTime;
private String dish;
private String diningPeriod;
}

View File

@ -0,0 +1,100 @@
package cn.iocoder.yudao.module.member.controller.admin.activitypaytable;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo.ActivityPayTablePageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo.ActivityPayTableRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo.ActivityPayTableSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitypaytable.ActivityPayTableDO;
import cn.iocoder.yudao.module.member.service.activitypaytable.ActivityPayTableService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 活动付款")
@RestController
@RequestMapping("/member/activity-pay-table")
@Validated
public class ActivityPayTableController {
@Resource
private ActivityPayTableService activityPayTableService;
@PostMapping("/create")
@Operation(summary = "创建活动付款")
@PreAuthorize("@ss.hasPermission('member:activity-pay-table:create')")
public CommonResult<Long> createActivityPayTable(@Valid @RequestBody ActivityPayTableSaveReqVO createReqVO) {
return success(activityPayTableService.createActivityPayTable(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新活动付款")
@PreAuthorize("@ss.hasPermission('member:activity-pay-table:update')")
public CommonResult<Boolean> updateActivityPayTable(@Valid @RequestBody ActivityPayTableSaveReqVO updateReqVO) {
activityPayTableService.updateActivityPayTable(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除活动付款")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:activity-pay-table:delete')")
public CommonResult<Boolean> deleteActivityPayTable(@RequestParam("id") Long id) {
activityPayTableService.deleteActivityPayTable(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得活动付款")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:activity-pay-table:query')")
public CommonResult<ActivityPayTableRespVO> getActivityPayTable(@RequestParam("id") Long id) {
ActivityPayTableDO activityPayTable = activityPayTableService.getActivityPayTable(id);
return success(BeanUtils.toBean(activityPayTable, ActivityPayTableRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得活动付款分页")
@PreAuthorize("@ss.hasPermission('member:activity-pay-table:query')")
public CommonResult<PageResult<ActivityPayTableRespVO>> getActivityPayTablePage(@Valid ActivityPayTablePageReqVO pageReqVO) {
PageResult<ActivityPayTableDO> pageResult = activityPayTableService.getActivityPayTablePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ActivityPayTableRespVO.class));
}
@GetMapping("/groupPage")
@Operation(summary = "获得活动付款分页")
public CommonResult<PageResult<ActivityPayTableRespVO>> getActivityPayTableGroupPage(@Valid ActivityPayTablePageReqVO pageReqVO) {
PageResult<ActivityPayTableDO> pageResult = activityPayTableService. getActivityPayTableGroupPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ActivityPayTableRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出活动付款 Excel")
@PreAuthorize("@ss.hasPermission('member:activity-pay-table:export')")
@OperateLog(type = EXPORT)
public void exportActivityPayTableExcel(@Valid ActivityPayTablePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityPayTableDO> list = activityPayTableService.getActivityPayTablePage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "活动付款.xls", "数据", ActivityPayTableRespVO.class,
BeanUtils.toBean(list, ActivityPayTableRespVO.class));
}
}

View File

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 活动付款分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ActivityPayTablePageReqVO extends PageParam {
@Schema(description = "活动id", example = "11464")
private Long activityId;
@Schema(description = "桌号")
private String serialNumbers;
@Schema(description = "价格", example = "18695")
private BigDecimal price;
@Schema(description = "用户id", example = "19527")
private Long userId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 活动付款 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityPayTableRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2305")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11464")
@ExcelProperty("活动id")
private Long activityId;
@Schema(description = "桌号")
@ExcelProperty("桌号")
private String serialNumbers;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "18695")
@ExcelProperty("价格")
private BigDecimal price;
@Schema(description = "用户id", example = "19527")
@ExcelProperty("用户id")
private Long userId;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
private BigDecimal allPrice;
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 活动付款新增/修改 Request VO")
@Data
public class ActivityPayTableSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2305")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11464")
@NotNull(message = "活动id不能为空")
private Long activityId;
@Schema(description = "桌号")
private String serialNumbers;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "18695")
@NotNull(message = "价格不能为空")
private BigDecimal price;
@Schema(description = "用户id", example = "19527")
private Long userId;
}

View File

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.member.controller.admin.activityrestaurant;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant.ActivityRestaurantDO;
import cn.iocoder.yudao.module.member.service.activityrestaurant.ActivityRestaurantService;
@Tag(name = "管理后台 - 活动用餐")
@RestController
@RequestMapping("/member/activity-restaurant")
@Validated
public class ActivityRestaurantController {
@Resource
private ActivityRestaurantService activityRestaurantService;
@PostMapping("/create")
@Operation(summary = "创建活动用餐")
@PreAuthorize("@ss.hasPermission('member:activity-restaurant:create')")
public CommonResult<Long> createActivityRestaurant(@Valid @RequestBody ActivityRestaurantSaveReqVO createReqVO) {
return success(activityRestaurantService.createActivityRestaurant(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新活动用餐")
@PreAuthorize("@ss.hasPermission('member:activity-restaurant:update')")
public CommonResult<Boolean> updateActivityRestaurant(@Valid @RequestBody ActivityRestaurantSaveReqVO updateReqVO) {
activityRestaurantService.updateActivityRestaurant(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除活动用餐")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:activity-restaurant:delete')")
public CommonResult<Boolean> deleteActivityRestaurant(@RequestParam("id") Long id) {
activityRestaurantService.deleteActivityRestaurant(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得活动用餐")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:activity-restaurant:query')")
public CommonResult<ActivityRestaurantRespVO> getActivityRestaurant(@RequestParam("id") Long id) {
ActivityRestaurantDO activityRestaurant = activityRestaurantService.getActivityRestaurant(id);
return success(BeanUtils.toBean(activityRestaurant, ActivityRestaurantRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得活动用餐分页")
@PreAuthorize("@ss.hasPermission('member:activity-restaurant:query')")
public CommonResult<PageResult<ActivityRestaurantRespVO>> getActivityRestaurantPage(@Valid ActivityRestaurantPageReqVO pageReqVO) {
PageResult<ActivityRestaurantDO> pageResult = activityRestaurantService.getActivityRestaurantPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ActivityRestaurantRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出活动用餐 Excel")
@PreAuthorize("@ss.hasPermission('member:activity-restaurant:export')")
@OperateLog(type = EXPORT)
public void exportActivityRestaurantExcel(@Valid ActivityRestaurantPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityRestaurantDO> list = activityRestaurantService.getActivityRestaurantPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "活动用餐.xls", "数据", ActivityRestaurantRespVO.class,
BeanUtils.toBean(list, ActivityRestaurantRespVO.class));
}
}

View File

@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 活动用餐分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ActivityRestaurantPageReqVO extends PageParam {
@Schema(description = "活动id", example = "17921")
private Long activityId;
@Schema(description = "总桌数")
private Integer totalTable;
@Schema(description = "每桌人数")
private Integer tableNum;
@Schema(description = "价格", example = "11086")
private BigDecimal price;
@Schema(description = "菜谱图片", example = "https://www.iocoder.cn")
private String dishUrl;
@Schema(description = "描述", example = "随便")
private String description;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,49 @@
package cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 活动用餐 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityRestaurantRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32692")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17921")
@ExcelProperty("活动id")
private Long activityId;
@Schema(description = "总桌数")
@ExcelProperty("总桌数")
private Integer totalTable;
@Schema(description = "每桌人数")
@ExcelProperty("每桌人数")
private Integer tableNum;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "11086")
@ExcelProperty("价格")
private BigDecimal price;
@Schema(description = "菜谱图片", example = "https://www.iocoder.cn")
@ExcelProperty("菜谱图片")
private String dishUrl;
@Schema(description = "描述", example = "随便")
@ExcelProperty("描述")
private String description;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 活动用餐新增/修改 Request VO")
@Data
public class ActivityRestaurantSaveDto {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32692")
private Long id;
@Schema(description = "总桌数")
private Integer totalTable;
@Schema(description = "每桌人数")
private Integer tableNum;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "11086")
@NotNull(message = "价格不能为空")
private BigDecimal price;
@Schema(description = "菜谱图片", example = "https://www.iocoder.cn")
private String dishUrl;
@Schema(description = "描述", example = "随便")
private String description;
}

View File

@ -0,0 +1,36 @@
package cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 活动用餐新增/修改 Request VO")
@Data
public class ActivityRestaurantSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32692")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17921")
@NotNull(message = "活动id不能为空")
private Long activityId;
@Schema(description = "总桌数")
private Integer totalTable;
@Schema(description = "每桌人数")
private Integer tableNum;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "11086")
@NotNull(message = "价格不能为空")
private BigDecimal price;
@Schema(description = "菜谱图片", example = "https://www.iocoder.cn")
private String dishUrl;
@Schema(description = "描述", example = "随便")
private String description;
}

View File

@ -0,0 +1,103 @@
package cn.iocoder.yudao.module.member.controller.admin.activitytable;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTablePageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTableRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTableSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitytable.ActivityTableDO;
import cn.iocoder.yudao.module.member.service.activitytable.ActivityTableService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 活动用餐桌子")
@RestController
@RequestMapping("/member/activity-table")
@Validated
public class ActivityTableController {
@Resource
private ActivityTableService activityTableService;
@PostMapping("/create")
@Operation(summary = "创建活动用餐桌子")
@PreAuthorize("@ss.hasPermission('member:activity-table:create')")
public CommonResult<Long> createActivityTable(@Valid @RequestBody ActivityTableSaveReqVO createReqVO) {
return success(activityTableService.createActivityTable(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新活动用餐桌子")
@PreAuthorize("@ss.hasPermission('member:activity-table:update')")
public CommonResult<Boolean> updateActivityTable(@Valid @RequestBody ActivityTableSaveReqVO updateReqVO) {
activityTableService.updateActivityTable(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除活动用餐桌子")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:activity-table:delete')")
public CommonResult<Boolean> deleteActivityTable(@RequestParam("id") Long id) {
activityTableService.deleteActivityTable(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得活动用餐桌子")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:activity-table:query')")
public CommonResult<ActivityTableRespVO> getActivityTable(@RequestParam("id") Long id) {
ActivityTableDO activityTable = activityTableService.getActivityTable(id);
return success(BeanUtils.toBean(activityTable, ActivityTableRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得活动用餐桌子分页")
@PreAuthorize("@ss.hasPermission('member:activity-table:query')")
public CommonResult<PageResult<ActivityTableRespVO>> getActivityTablePage(@Valid ActivityTablePageReqVO pageReqVO) {
PageResult<ActivityTableDO> pageResult = activityTableService.getActivityTablePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ActivityTableRespVO.class));
}
@GetMapping("/list")
@Operation(summary = "获得所有活动用餐桌子")
@PreAuthorize("@ss.hasPermission('member:activity-table:query')")
public CommonResult<List<ActivityTableRespVO>> getActivityTableList(@Valid ActivityTablePageReqVO pageReqVO) {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityTableDO> list = activityTableService.getActivityTablePage(pageReqVO).getList();
return success(BeanUtils.toBean(list, ActivityTableRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出活动用餐桌子 Excel")
@PreAuthorize("@ss.hasPermission('member:activity-table:export')")
@OperateLog(type = EXPORT)
public void exportActivityTableExcel(@Valid ActivityTablePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityTableDO> list = activityTableService.getActivityTablePage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "活动用餐桌子.xls", "数据", ActivityTableRespVO.class,
BeanUtils.toBean(list, ActivityTableRespVO.class));
}
}

View File

@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.member.controller.admin.activitytable.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 活动用餐桌子 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityTableCountVO {
@Schema(description = "活动id")
private Long activityId;
@Schema(description = "预定人数")
private Integer reserveNum= 0;
}

View File

@ -0,0 +1,43 @@
package cn.iocoder.yudao.module.member.controller.admin.activitytable.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 活动用餐桌子分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ActivityTablePageReqVO extends PageParam {
@Schema(description = "活动id", example = "8513")
private Long activityId;
@Schema(description = "序号")
private Integer serialNumber;
@Schema(description = "价格", example = "515")
private BigDecimal price;
@Schema(description = "用户id", example = "13832")
private Long userId;
@Schema(description = "电话")
private String mobile;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "是否只查预定的")
private Boolean isReserve;
}

View File

@ -0,0 +1,49 @@
package cn.iocoder.yudao.module.member.controller.admin.activitytable.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 活动用餐桌子 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityTableRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5590")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8513")
@ExcelProperty("活动id")
private Long activityId;
@Schema(description = "序号")
@ExcelProperty("序号")
private Integer serialNumber;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "515")
@ExcelProperty("价格")
private BigDecimal price;
@Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13832")
@ExcelProperty("用户id")
private Long userId;
@Schema(description = "电话")
@ExcelProperty("电话")
private String mobile;
private String nickName;
private String avatar;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.member.controller.admin.activitytable.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 活动用餐桌子新增/修改 Request VO")
@Data
public class ActivityTableSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5590")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8513")
@NotNull(message = "活动id不能为空")
private Long activityId;
@Schema(description = "序号")
private Integer serialNumber;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "515")
@NotNull(message = "价格不能为空")
private BigDecimal price;
@Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13832")
private Long userId;
@Schema(description = "电话")
private String mobile;
}

View File

@ -0,0 +1,8 @@
package cn.iocoder.yudao.module.member.controller.admin.activitytable.vo;
import lombok.Data;
@Data
public class ActivityTableVO {
}

View File

@ -0,0 +1,108 @@
package cn.iocoder.yudao.module.member.controller.admin.activitytabledish;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishSaveReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityUpdateDishVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitytabledish.ActivityTableDishDO;
import cn.iocoder.yudao.module.member.service.activitytabledish.ActivityTableDishService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 活动用餐桌子配置")
@RestController
@RequestMapping("/member/activity-table-dish")
@Validated
public class ActivityTableDishController {
@Resource
private ActivityTableDishService activityTableDishService;
@PostMapping("/create")
@Operation(summary = "创建活动用餐桌子配置")
@PreAuthorize("@ss.hasPermission('member:activity-table-dish:create')")
public CommonResult<Long> createActivityTableDish(@Valid @RequestBody ActivityTableDishSaveReqVO createReqVO) {
return success(activityTableDishService.createActivityTableDish(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新活动用餐桌子配置")
@PreAuthorize("@ss.hasPermission('member:activity-table-dish:update')")
public CommonResult<Boolean> updateActivityTableDish(@Valid @RequestBody ActivityTableDishSaveReqVO updateReqVO) {
activityTableDishService.updateActivityTableDish(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除活动用餐桌子配置")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:activity-table-dish:delete')")
public CommonResult<Boolean> deleteActivityTableDish(@RequestParam("id") Long id) {
activityTableDishService.deleteActivityTableDish(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得活动用餐桌子配置")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:activity-table-dish:query')")
public CommonResult<ActivityTableDishRespVO> getActivityTableDish(@RequestParam("id") Long id) {
ActivityTableDishDO activityTableDish = activityTableDishService.getActivityTableDish(id);
return success(BeanUtils.toBean(activityTableDish, ActivityTableDishRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得活动用餐桌子配置分页")
@PreAuthorize("@ss.hasPermission('member:activity-table-dish:query')")
public CommonResult<PageResult<ActivityTableDishRespVO>> getActivityTableDishPage(@Valid ActivityTableDishPageReqVO pageReqVO) {
PageResult<ActivityTableDishDO> pageResult = activityTableDishService.getActivityTableDishPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ActivityTableDishRespVO.class));
}
@GetMapping("/list")
@Operation(summary = "获得所有活动用餐桌子")
@PreAuthorize("@ss.hasPermission('member:activity-table-dish:query')")
public CommonResult<List<ActivityTableDishRespVO>> getActivityTableDishList(@Valid ActivityTableDishPageReqVO pageReqVO) {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityTableDishDO> list = activityTableDishService.getActivityTableDishPage(pageReqVO).getList();
return success(BeanUtils.toBean(list, ActivityTableDishRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出活动用餐桌子配置 Excel")
@PreAuthorize("@ss.hasPermission('member:activity-table-dish:export')")
@OperateLog(type = EXPORT)
public void exportActivityTableDishExcel(@Valid ActivityTableDishPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityTableDishDO> list = activityTableDishService.getActivityTableDishPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "活动用餐桌子配置.xls", "数据", ActivityTableDishRespVO.class,
BeanUtils.toBean(list, ActivityTableDishRespVO.class));
}
@PutMapping("/updateDish")
@Operation(summary = "批量更新活动用餐桌子套餐菜品")
public CommonResult<Boolean> updateDish(@Valid @RequestBody ActivityUpdateDishVO updateReqVO) {
return success(activityTableDishService.updateDish(updateReqVO));
}
}

View File

@ -0,0 +1,40 @@
package cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 活动用餐桌子配置分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ActivityTableDishPageReqVO extends PageParam {
@Schema(description = "活动id", example = "16826")
private Long activityId;
@Schema(description = "序号")
private Integer serialNumber;
@Schema(description = "价格", example = "9524")
private BigDecimal price;
@Schema(description = "套餐菜品")
private String dish;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "ID", example = "1")
private List<Long> ids;
}

View File

@ -0,0 +1,40 @@
package cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 活动用餐桌子配置 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityTableDishRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21273")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16826")
@ExcelProperty("活动id")
private Long activityId;
@Schema(description = "序号")
@ExcelProperty("序号")
private Integer serialNumber;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "9524")
@ExcelProperty("价格")
private BigDecimal price;
@Schema(description = "套餐菜品")
@ExcelProperty("套餐菜品")
private String dish;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 活动用餐桌子配置新增/修改 Request VO")
@Data
public class ActivityTableDishSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21273")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16826")
@NotNull(message = "活动id不能为空")
private Long activityId;
@Schema(description = "序号")
private Integer serialNumber;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "9524")
@NotNull(message = "价格不能为空")
private BigDecimal price;
@Schema(description = "套餐菜品")
private String dish;
}

View File

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 活动用餐桌子配置新增/修改 Request VO")
@Data
public class ActivityUpdateDishVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21273")
private List<Long> ids;
@Schema(description = "套餐菜品")
private String dish;
}

View File

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.member.controller.admin.activityuser;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.activityuser.ActivityUserDO;
import cn.iocoder.yudao.module.member.service.activityuser.ActivityUserService;
@Tag(name = "管理后台 - 活动参加人员")
@RestController
@RequestMapping("/member/activity-user")
@Validated
public class ActivityUserController {
@Resource
private ActivityUserService activityUserService;
@PostMapping("/create")
@Operation(summary = "创建活动参加人员")
@PreAuthorize("@ss.hasPermission('member:activity-user:create')")
public CommonResult<Long> createActivityUser(@Valid @RequestBody ActivityUserSaveReqVO createReqVO) {
return success(activityUserService.createActivityUser(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新活动参加人员")
@PreAuthorize("@ss.hasPermission('member:activity-user:update')")
public CommonResult<Boolean> updateActivityUser(@Valid @RequestBody ActivityUserSaveReqVO updateReqVO) {
activityUserService.updateActivityUser(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除活动参加人员")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:activity-user:delete')")
public CommonResult<Boolean> deleteActivityUser(@RequestParam("id") Long id) {
activityUserService.deleteActivityUser(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得活动参加人员")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:activity-user:query')")
public CommonResult<ActivityUserRespVO> getActivityUser(@RequestParam("id") Long id) {
ActivityUserDO activityUser = activityUserService.getActivityUser(id);
return success(BeanUtils.toBean(activityUser, ActivityUserRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得活动参加人员分页")
@PreAuthorize("@ss.hasPermission('member:activity-user:query')")
public CommonResult<PageResult<ActivityUserRespVO>> getActivityUserPage(@Valid ActivityUserPageReqVO pageReqVO) {
PageResult<ActivityUserDO> pageResult = activityUserService.getActivityUserPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ActivityUserRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出活动参加人员 Excel")
@PreAuthorize("@ss.hasPermission('member:activity-user:export')")
@OperateLog(type = EXPORT)
public void exportActivityUserExcel(@Valid ActivityUserPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityUserDO> list = activityUserService.getActivityUserPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "活动参加人员.xls", "数据", ActivityUserRespVO.class,
BeanUtils.toBean(list, ActivityUserRespVO.class));
}
}

View File

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.member.controller.admin.activityuser.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 活动参加人员 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityUserCountVO {
@Schema(description = "活动id")
private Long activityId;
@Schema(description = "参加人数")
private Integer applyNum = 0;
}

View File

@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.member.controller.admin.activityuser.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 活动参加人员分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ActivityUserPageReqVO extends PageParam {
@Schema(description = "活动id", example = "12749")
private Long activityId;
@Schema(description = "用户id", example = "6186")
private Long userId;
@Schema(description = "电话")
private String mobile;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,39 @@
package cn.iocoder.yudao.module.member.controller.admin.activityuser.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 活动参加人员 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityUserRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17804")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12749")
@ExcelProperty("活动id")
private Long activityId;
@Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6186")
@ExcelProperty("用户id")
private Long userId;
@Schema(description = "电话")
@ExcelProperty("电话")
private String mobile;
private String nickName;
private String avatar;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,26 @@
package cn.iocoder.yudao.module.member.controller.admin.activityuser.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 活动参加人员新增/修改 Request VO")
@Data
public class ActivityUserSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17804")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12749")
@NotNull(message = "活动id不能为空")
private Long activityId;
@Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6186")
@NotNull(message = "用户id不能为空")
private Long userId;
@Schema(description = "电话")
private String mobile;
}

View File

@ -0,0 +1,301 @@
package cn.iocoder.yudao.module.member.controller.app.activity;
import cn.hutool.json.JSONUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.idempotent.core.annotation.Idempotent;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserPageReqVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityadddish.ActivityAddDishDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant.ActivityRestaurantDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitytabledish.ActivityTableDishDO;
import cn.iocoder.yudao.module.member.service.activity.ActivityService;
import cn.iocoder.yudao.module.member.service.activityadddish.ActivityAddDishService;
import cn.iocoder.yudao.module.member.service.activityawards.ActivityAwardsService;
import cn.iocoder.yudao.module.member.service.activityawardsuser.ActivityAwardsUserService;
import cn.iocoder.yudao.module.member.service.activitypay.ActivityPayService;
import cn.iocoder.yudao.module.member.service.activityrestaurant.ActivityRestaurantService;
import cn.iocoder.yudao.module.member.service.activitytable.ActivityTableService;
import cn.iocoder.yudao.module.member.service.activitytabledish.ActivityTableDishService;
import cn.iocoder.yudao.module.member.service.activityuser.ActivityUserService;
import cn.iocoder.yudao.module.member.util.QRCodeWithJWTUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.time.LocalDate;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
@Tag(name = "用户 APP - 活动")
@RestController
@RequestMapping("/member/activity")
@Validated
public class AppActivityDrawController {
@Resource
private ActivityService activityService;
@Resource
private ActivityAwardsService activityAwardsService;
@Resource
private ActivityAwardsUserService activityAwardsUserService;
@Resource
private ActivityUserService activityUserService;
@Resource
private ActivityTableService activityTableService;
@Resource
private ActivityPayService activityPayService;
@Resource
private ActivityRestaurantService activityRestaurantService;
@Resource
private ActivityTableDishService activityTableDishService;
@Resource
private ActivityAddDishService activityAddDishService;
@GetMapping("/manage/page")
@Operation(summary = "管理员获取当天活动")
public CommonResult<PageResult<ActivityRespVO>> getTodayActivityPage(@Valid ActivityPageReqVO pageReqVO) {
PageResult<ActivityRespVO> pageResult = activityService.getActivityPage(pageReqVO);
return success(pageResult);
}
@GetMapping("/user/page")
@Operation(summary = "用户获取所有活动")
public CommonResult<PageResult<ActivityRespVO>> getAllActivityPage(@Valid ActivityPageReqVO pageReqVO) {
PageResult<ActivityRespVO> pageResult = activityService.getUserActivityPage(pageReqVO);
return success(pageResult);
}
@GetMapping("/userRecord/page")
@Operation(summary = "用户获取自己的活动记录")
public CommonResult<PageResult<AppActivityRespVO>> getUserRecordActivityPage(@Valid ActivityUserPageReqVO pageReqVO) {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
pageReqVO.setUserId(loginUserId);
return success(activityUserService.getUserRecordPage(pageReqVO));
}
@GetMapping("/prizeDraw")
@Operation(summary = "抽奖")
@Idempotent(timeout = 10)
public CommonResult<List<ActivityAwardsUserDO>> prizeDraw(@Valid AppActivityPrizeDrawVO drawVO) {
return success( activityService.prizeDraw(drawVO));
}
@GetMapping("/awardsUser/page")
@Operation(summary = "中奖人员分页")
public CommonResult<PageResult<ActivityAwardsUserRespVO>> getActivityAwardsUserPage(@Valid ActivityAwardsUserPageReqVO pageReqVO) {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
PageResult<ActivityAwardsUserDO> pageResult = activityAwardsUserService.getActivityAwardsUserPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ActivityAwardsUserRespVO.class));
}
@PostMapping("/user/apply")
@Operation(summary = "用户报名")
@Idempotent(timeout = 10)
public CommonResult<Boolean> userApply(@Valid @RequestBody AppUserApplyVO appUserApplyVO) {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
appUserApplyVO.setUserId(loginUserId);
return success( activityUserService.userApply(appUserApplyVO));
}
@GetMapping("/manage/get")
@Operation(summary = "管理员获得活动详情")
public CommonResult<ActivityRespVO> getActivity(@RequestParam("id") Long id) {
ActivityDO activity = activityService.getActivity(id);
ActivityRespVO bean = BeanUtils.toBean(activity, ActivityRespVO.class);
return success(bean);
}
@GetMapping("/user/activity")
@Operation(summary = "用户获得活动详情(记录)")
public CommonResult<AppActivityRespVO> getUserActivity(@RequestParam("id") Long id) {
AppActivityRespVO activity = activityService.getUserActivity(id,SecurityFrameworkUtils.getLoginUserId());
return success(activity);
}
@GetMapping("/user/activity/applyInfo")
@Operation(summary = "用户获得活动详情(报名)")
public CommonResult<AppActivityRespVO> getUserActivityApplyInfo(@RequestParam("id") Long id) {
AppActivityRespVO activity = activityService.getUserActivityApplyInfo(id,SecurityFrameworkUtils.getLoginUserId());
return success(activity);
}
@GetMapping("/user/activityList")
@Operation(summary = "用户获得可订餐的活动")
public CommonResult<List<AppActivityRespVO>> getUserActivityList() {
return success(activityService.getReservatList());
}
@GetMapping("/user/activityList/page")
@Operation(summary = "用户获得可订餐的活动分页")
public CommonResult<PageResult<ActivityRespVO>> getActivityReservePage(@Valid ActivityPageReqVO pageReqVO) {
PageResult<ActivityRespVO> pageResult = activityService.getActivityReservePage(pageReqVO);
return success(pageResult);
}
@GetMapping("/user/table")
@Operation(summary = "用户获取已订餐桌号")
public CommonResult<List<AppActivityTableRespVO>> getUserTableList(@RequestParam("activityId") Long activityId,@RequestParam("time") String time) {
return success(BeanUtils.toBean(activityTableService.getListByActivityIdAndTime(activityId,time), AppActivityTableRespVO.class));
}
@PostMapping("/user/check")
@Operation(summary = "用户订餐桌号检测")
public CommonResult<Boolean> userTableCheck(@RequestBody AppCheckVO vo) {
return success(activityTableService.userTableCheck(vo));
}
@PutMapping("/user/unbind")
@Operation(summary = "支付失败取消用户餐桌绑定")
public CommonResult<Boolean> userTableUnbind(@RequestBody AppUnbindVO vo) {
return success(activityTableService.userTableUnbind(vo));
}
@GetMapping("/qrCode")
@Operation(summary = "获取核销二维码(抽奖)")
public CommonResult<String> getQrCode(@RequestParam("activityAwardsUserId") Long activityAwardsUserId) {
ActivityAwardsUserDO activityAwardsUserDO = activityAwardsUserService.getActivityAwardsUser(activityAwardsUserId);
if(!"0".equals(activityAwardsUserDO.getAwardsStatus())){
throw exception(ACTIVITY_AWARDS_USER_NOT_EFFECTIVE);
}
ActivityDO activity = activityService.getActivity(activityAwardsUserDO.getActivityId());
ActivityAwardsDO activityAwards = activityAwardsService.getActivityAwards(activityAwardsUserDO.getAwardsId());
AppQrCodeVO appQrCodeVO = new AppQrCodeVO();
appQrCodeVO.setActivityAwardsUserId(activityAwardsUserId);
appQrCodeVO.setNickName(activityAwardsUserDO.getNickName());
appQrCodeVO.setMobile(activityAwardsUserDO.getMobile());
appQrCodeVO.setPrize(activityAwards.getPrize());
appQrCodeVO.setActivityName(activity.getActivityName());
appQrCodeVO.setType("1");
String qrCode = QRCodeWithJWTUtil.generateQRCode(JSONUtil.toJsonStr(appQrCodeVO), 350, 350, null);// 生
return success(qrCode);
}
@PutMapping("/cancel")
@Operation(summary = "核销(抽奖)")
public CommonResult<Boolean> cancel(@RequestBody AppCancelVO vo) {
return success(activityAwardsUserService.cancel(vo));
}
@GetMapping("/manage/applyUserList")
@Operation(summary = "报名人员列表")
public CommonResult<List<AppActivityUserRespVO>> applyUserList(@RequestParam("activityId") Long activityId) {
return success(activityUserService.applyUserList(activityId));
}
@GetMapping("/awardsList")
@Operation(summary = "获得活动奖项列表")
public CommonResult<List<ActivityAwardsRespVO>> getActivityAwardsList(@RequestParam("activityId") Long activityId) {
List<ActivityAwardsDO> list = activityAwardsService.getListByActivity(activityId);
return success(BeanUtils.toBean(list, ActivityAwardsRespVO.class));
}
@GetMapping("/user/pay/page")
@Operation(summary = "用户付款记录分页")
public CommonResult<PageResult<AppActivityPayRespVO>> getUserActivityPayPage(@Valid ActivityPayPageReqVO pageReqVO) {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
pageReqVO.setUserId(loginUserId);
PageResult<AppActivityPayRespVO> pageResult = activityPayService.getUserActivityPayPage(pageReqVO);
return success(pageResult);
}
@GetMapping("/user/activity/reserveInfo")
@Operation(summary = "用户获得订餐活动详情")
public CommonResult<AppActivityRespVO> getUserActivityReserveInfo(@RequestParam("id") Long id) {
ActivityDO activity = activityService.getActivity(id);
AppActivityRespVO bean = BeanUtils.toBean(activity, AppActivityRespVO.class);
ActivityRestaurantDO activityRestaurantDO = activityRestaurantService.getByActivityId(id);
bean.setActivityRestaurantSaveDto(BeanUtils.toBean(activityRestaurantDO, ActivityRestaurantRespVO.class));
return success(bean);
}
@GetMapping("/reserveQrCode")
@Operation(summary = "获取核销二维码(订餐)")
public CommonResult<String> getReserveQrCode(@RequestParam("activityPayId") Long activityPayId) {
ActivityPayDO activityPay = activityPayService.getActivityPay(activityPayId);
if(!"0".equals(activityPay.getStatus())){
throw exception(ACTIVITY_PAY_USE);
}
//获取当天日期
LocalDate now = LocalDate.now();
//比较日期是否相等
if(! now.isEqual(activityPay.getReserveTime())){
throw exception(ACTIVITY_PAY_EXPIRE);
}
ActivityDO activity = activityService.getActivity(activityPay.getActivityId());
AppReserveQrCodeVO appReserveQrCodeVO = new AppReserveQrCodeVO();
appReserveQrCodeVO.setActivityPayId(activityPayId);
appReserveQrCodeVO.setNickName(activityPay.getNickName());
appReserveQrCodeVO.setMobile(activityPay.getMobile());
appReserveQrCodeVO.setActivityName(activity.getActivityName());
appReserveQrCodeVO.setSerialNumbers(activityPay.getSerialNumbers());
appReserveQrCodeVO.setType("2");
String qrCode = QRCodeWithJWTUtil.generateQRCode(JSONUtil.toJsonStr(appReserveQrCodeVO), 350, 350, null);// 生
return success(qrCode);
}
@PutMapping("/reserveCancel")
@Operation(summary = "核销(订餐)")
public CommonResult<Boolean> reserveCancel(@RequestBody AppCancelVO vo) {
return success(activityPayService.reserveCancel(vo));
}
@GetMapping("/tableList")
@Operation(summary = "获得所有活动用餐桌子")
public CommonResult<List<ActivityTableDishRespVO>> getActivityTableDishList(@Valid ActivityTableDishPageReqVO pageReqVO) {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityTableDishDO> list = activityTableDishService.getActivityTableDishPage(pageReqVO).getList();
return success(BeanUtils.toBean(list, ActivityTableDishRespVO.class));
}
@GetMapping("/addDishList")
@Operation(summary = "获得活动用餐桌子加菜列表")
public CommonResult<List<ActivityAddDishRespVO>> getActivityAddDishPage(@Valid ActivityAddDishPageReqVO pageReqVO) {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ActivityAddDishDO> list = activityAddDishService.getActivityAddDishPage(pageReqVO).getList();
return success(BeanUtils.toBean(list, ActivityAddDishRespVO.class));
}
}

View File

@ -0,0 +1,50 @@
package cn.iocoder.yudao.module.member.controller.app.activity.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 活动付款 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AppActivityPayRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24970")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27391")
@ExcelProperty("活动id")
private Long activityId;
private String activityName;
@Schema(description = "桌号")
@ExcelProperty("桌号")
private String serialNumbers;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "7717")
@ExcelProperty("价格")
private BigDecimal price;
@Schema(description = "用户id", example = "5313")
@ExcelProperty("用户id")
private Long userId;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
private String status;
private LocalDate reserveTime;
private String dish;
private String diningPeriod;
}

View File

@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.member.controller.app.activity.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
@Data
public class AppActivityPrizeDrawVO {
@Schema(description = "奖项Id")
@NotNull(message = "奖项不能为空")
private Long awardsId;
@Schema(description = "抽奖人数")
@Min(value = 1, message = "数值不能小于 1")
private Integer num;
}

View File

@ -0,0 +1,83 @@
package cn.iocoder.yudao.module.member.controller.app.activity.vo;
import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantRespVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 活动 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AppActivityRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29158")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@ExcelProperty("活动名称")
private String activityName;
@Schema(description = "活动开始时间")
@ExcelProperty("活动开始时间")
private LocalDateTime startTime;
@Schema(description = "活动结束时间")
@ExcelProperty("活动结束时间")
private LocalDateTime endTime;
@Schema(description = "描述", example = "你猜")
@ExcelProperty("描述")
private String description;
@Schema(description = "封面图")
@ExcelProperty("封面图")
private String img;
@Schema(description = "地点")
@ExcelProperty("地点")
private String location;
@Schema(description = "主办方")
@ExcelProperty("主办方")
private String sponsor;
@Schema(description = "可抽奖次数")
@ExcelProperty("可抽奖次数")
private Integer lotteryNum;
@Schema(description = "用餐状态0-禁用1-启用 ", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("用餐状态0-禁用1-启用 ")
private String reservationStatus;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "报名人数")
private Integer applyNum;
@Schema(description = "中奖人数")
private Integer awardsNum;
@Schema(description = "预定人数")
private Integer reserveNum;
@Schema(description = "收入")
private BigDecimal income;
@Schema(description = "是否报名")
private Boolean isApply;
private ActivityRestaurantRespVO activityRestaurantSaveDto;
private List<AppUserAwardsVO> awards;
private List<ActivityAwardsDO> awardList;
}

View File

@ -0,0 +1,51 @@
package cn.iocoder.yudao.module.member.controller.app.activity.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 活动用餐桌子 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AppActivityTableRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5590")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8513")
@ExcelProperty("活动id")
private Long activityId;
@Schema(description = "序号")
@ExcelProperty("序号")
private Integer serialNumber;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "515")
@ExcelProperty("价格")
private BigDecimal price;
@Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13832")
@ExcelProperty("用户id")
private Long userId;
@Schema(description = "电话")
@ExcelProperty("电话")
private String mobile;
private String nickName;
private String avatar;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
private LocalDate reserveTime;
}

View File

@ -0,0 +1,39 @@
package cn.iocoder.yudao.module.member.controller.app.activity.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 活动参加人员 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AppActivityUserRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17804")
@ExcelProperty("编号")
private Long id;
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12749")
@ExcelProperty("活动id")
private Long activityId;
@Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6186")
@ExcelProperty("用户id")
private Long userId;
@Schema(description = "电话")
@ExcelProperty("电话")
private String mobile;
private String nickName;
private String avatar;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,11 @@
package cn.iocoder.yudao.module.member.controller.app.activity.vo;
import lombok.Data;
@Data
public class AppCancelVO {
private Long activityAwardsUserId;
private Long activityPayId;
}

View File

@ -0,0 +1,21 @@
package cn.iocoder.yudao.module.member.controller.app.activity.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class AppCheckVO {
private List<Integer> serialNumbers;
private String time;
private Long activityId;
private BigDecimal price;
}

View File

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.member.controller.app.activity.vo;
import lombok.Data;
@Data
public class AppQrCodeVO {
private Long activityAwardsUserId;
private String nickName;
private String mobile;
private String prize;
private String activityName;
private String type;
}

View File

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.member.controller.app.activity.vo;
import lombok.Data;
@Data
public class AppReserveQrCodeVO {
private Long activityPayId;
private String mobile;
private String serialNumbers;
private String activityName;
private String nickName;
private String type;
}

View File

@ -0,0 +1,15 @@
package cn.iocoder.yudao.module.member.controller.app.activity.vo;
import lombok.Data;
import java.util.List;
@Data
public class AppUnbindVO {
private List<Integer> serialNumbers;
private String time;
private Long activityId;
}

View File

@ -0,0 +1,23 @@
package cn.iocoder.yudao.module.member.controller.app.activity.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class AppUserApplyVO {
@Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12749")
@NotNull(message = "活动id不能为空")
private Long activityId;
@Schema(description = "用户Id")
private Long userId;
@Schema(description = "电话")
@NotBlank(message = "用户电话不能为空")
private String mobile;
}

View File

@ -0,0 +1,16 @@
package cn.iocoder.yudao.module.member.controller.app.activity.vo;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class AppUserAwardsVO {
private Long id;
private String awardsName;
private String prize;
private String awardsStatus;
private LocalDateTime createTime;
}

View File

@ -0,0 +1,69 @@
package cn.iocoder.yudao.module.member.dal.dataobject.activity;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 活动 DO
*
* @author 我是秦俊旗
*/
@TableName("member_activity")
@KeySequence("member_activity_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 活动名称
*/
private String activityName;
/**
* 活动开始时间
*/
private LocalDateTime startTime;
/**
* 活动结束时间
*/
private LocalDateTime endTime;
/**
* 描述
*/
private String description;
/**
* 封面图
*/
private String img;
/**
* 地点
*/
private String location;
/**
* 主办方
*/
private String sponsor;
/**
* 可抽奖次数
*/
private Integer lotteryNum;
/**
* 用餐状态0-禁用1-启用
*/
private String reservationStatus;
}

View File

@ -0,0 +1,52 @@
package cn.iocoder.yudao.module.member.dal.dataobject.activityadddish;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 活动用餐桌子加菜 DO
*
* @author 我是秦俊旗
*/
@TableName("member_activity_add_dish")
@KeySequence("member_activity_add_dish_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityAddDishDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 桌子
*/
private Long tableDishId;
/**
* 序号
*/
private Integer serialNumber;
/**
* 菜名
*/
private String dishName;
/**
* 菜品价格
*/
private BigDecimal dishPrice;
/**
* 菜品图片
*/
private String dishImg;
}

View File

@ -0,0 +1,54 @@
package cn.iocoder.yudao.module.member.dal.dataobject.activityawards;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.*;
import lombok.*;
/**
* 活动奖项 DO
*
* @author 我是秦俊旗
*/
@TableName("member_activity_awards")
@KeySequence("member_activity_awards_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityAwardsDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 活动id
*/
private Long activityId;
/**
* 奖项名称
*/
private String awardsName;
/**
* 限制类型(1-整个活动2-单个奖项3-无限制)
*/
private String limitType;
/**
* 奖项人数
*/
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private Integer awardsNum;
/**
* 奖品
*/
private String prize;
/**
* 排序
*/
private Integer sortNum;
}

View File

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
/**
* 活动中奖人员 DO
*
* @author 我是秦俊旗
*/
@TableName("member_activity_awards_user")
@KeySequence("member_activity_awards_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityAwardsUserDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 活动id
*/
private Long activityId;
/**
* 用户id
*/
private Long userId;
private String nickName;
private String avatar;
/**
* 领奖状态(0-未领奖1-已领奖2-已过期)
*/
private String awardsStatus;
/**
* 电话
*/
private String mobile;
/**
* 奖品id
*/
private Long awardsId;
}

View File

@ -0,0 +1,61 @@
package cn.iocoder.yudao.module.member.dal.dataobject.activitypay;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* 活动付款 DO
*
* @author 我是秦俊旗
*/
@TableName("member_activity_pay")
@KeySequence("member_activity_pay_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityPayDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 活动id
*/
private Long activityId;
/**
* 桌号
*/
private String serialNumbers;
/**
* 价格
*/
private BigDecimal price;
/**
* 用户id
*/
private Long userId;
private String status;
private LocalDate reserveTime;
private String nickName;
private String mobile;
private String dish;
private String diningPeriod;
}

View File

@ -0,0 +1,58 @@
package cn.iocoder.yudao.module.member.dal.dataobject.activitypaytable;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.*;
import lombok.*;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* 活动付款 DO
*
* @author 我是秦俊旗
*/
@TableName("member_activity_pay_table")
@KeySequence("member_activity_pay_table_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityPayTableDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 活动id
*/
private Long activityId;
/**
* 桌号
*/
private String serialNumbers;
/**
* 价格
*/
private BigDecimal price;
/**
* 用户id
*/
private Long userId;
/**
* 预定时间
*/
private LocalDate reserveTime;
@TableField(value = "sum(price)",insertStrategy = FieldStrategy.NEVER,updateStrategy = FieldStrategy.NEVER)
private BigDecimal allPrice;
private String nickName;
private String mobile;
}

View File

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 活动用餐 DO
*
* @author 我是秦俊旗
*/
@TableName("member_activity_restaurant")
@KeySequence("member_activity_restaurant_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityRestaurantDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 活动id
*/
private Long activityId;
/**
* 总桌数
*/
private Integer totalTable;
/**
* 每桌人数
*/
private Integer tableNum;
/**
* 价格
*/
private BigDecimal price;
/**
* 菜谱图片
*/
private String dishUrl;
/**
* 描述
*/
private String description;
}

View File

@ -0,0 +1,59 @@
package cn.iocoder.yudao.module.member.dal.dataobject.activitytable;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* 活动用餐桌子 DO
*
* @author 我是秦俊旗
*/
@TableName("member_activity_table")
@KeySequence("member_activity_table_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityTableDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 活动id
*/
private Long activityId;
/**
* 序号
*/
private Integer serialNumber;
/**
* 价格
*/
private BigDecimal price;
/**
* 用户id
*/
private Long userId;
/**
* 电话
*/
private String mobile;
private String nickName;
private String avatar;
private LocalDate reserveTime;
}

View File

@ -0,0 +1,48 @@
package cn.iocoder.yudao.module.member.dal.dataobject.activitytabledish;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.math.BigDecimal;
/**
* 活动用餐桌子配置 DO
*
* @author 我是秦俊旗
*/
@TableName("member_activity_table_dish")
@KeySequence("member_activity_table_dish_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityTableDishDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 活动id
*/
private Long activityId;
/**
* 序号
*/
private Integer serialNumber;
/**
* 价格
*/
private BigDecimal price;
/**
* 套餐菜品
*/
private String dish;
}

View File

@ -0,0 +1,45 @@
package cn.iocoder.yudao.module.member.dal.dataobject.activityuser;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
/**
* 活动参加人员 DO
*
* @author 我是秦俊旗
*/
@TableName("member_activity_user")
@KeySequence("member_activity_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityUserDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 活动id
*/
private Long activityId;
/**
* 用户id
*/
private Long userId;
/**
* 电话
*/
private String mobile;
private String nickName;
private String avatar;
}

View File

@ -0,0 +1,52 @@
package cn.iocoder.yudao.module.member.dal.mysql.activity;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 活动 Mapper
*
* @author 我是秦俊旗
*/
@Mapper
public interface ActivityMapper extends BaseMapperX<ActivityDO> {
default PageResult<ActivityDO> selectPage(ActivityPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ActivityDO>()
.likeIfPresent(ActivityDO::getActivityName, reqVO.getActivityName())
.leIfPresent(ActivityDO::getStartTime, reqVO.getStartTime())
.geIfPresent(ActivityDO::getEndTime, reqVO.getStartTime())
.eqIfPresent(ActivityDO::getDescription, reqVO.getDescription())
.eqIfPresent(ActivityDO::getImg, reqVO.getImg())
.eqIfPresent(ActivityDO::getLocation, reqVO.getLocation())
.eqIfPresent(ActivityDO::getSponsor, reqVO.getSponsor())
.eqIfPresent(ActivityDO::getLotteryNum, reqVO.getLotteryNum())
.eqIfPresent(ActivityDO::getReservationStatus, reqVO.getReservationStatus())
.betweenIfPresent(ActivityDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ActivityDO::getId));
}
default PageResult<ActivityDO> selectPageApp(ActivityPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ActivityDO>()
.likeIfPresent(ActivityDO::getActivityName, reqVO.getActivityName())
.leIfPresent(ActivityDO::getStartTime, reqVO.getStartTime())
.geIfPresent(ActivityDO::getEndTime, reqVO.getStartTime())
.eqIfPresent(ActivityDO::getDescription, reqVO.getDescription())
.eqIfPresent(ActivityDO::getImg, reqVO.getImg())
.eqIfPresent(ActivityDO::getLocation, reqVO.getLocation())
.eqIfPresent(ActivityDO::getSponsor, reqVO.getSponsor())
.eqIfPresent(ActivityDO::getLotteryNum, reqVO.getLotteryNum())
.eqIfPresent(ActivityDO::getReservationStatus, reqVO.getReservationStatus())
.betweenIfPresent(ActivityDO::getCreateTime, reqVO.getCreateTime())
.last("ORDER BY " +
" CASE " +
" WHEN start_time <= NOW() AND end_time >= NOW() THEN 0 " +
" ELSE 1 " +
" END," +
" end_time ASC "));
}
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.member.dal.mysql.activityadddish;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityadddish.ActivityAddDishDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 活动用餐桌子加菜 Mapper
*
* @author 我是秦俊旗
*/
@Mapper
public interface ActivityAddDishMapper extends BaseMapperX<ActivityAddDishDO> {
default PageResult<ActivityAddDishDO> selectPage(ActivityAddDishPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ActivityAddDishDO>()
.eqIfPresent(ActivityAddDishDO::getTableDishId, reqVO.getTableDishId())
.eqIfPresent(ActivityAddDishDO::getSerialNumber, reqVO.getSerialNumber())
.likeIfPresent(ActivityAddDishDO::getDishName, reqVO.getDishName())
.eqIfPresent(ActivityAddDishDO::getDishPrice, reqVO.getDishPrice())
.eqIfPresent(ActivityAddDishDO::getDishImg, reqVO.getDishImg())
.betweenIfPresent(ActivityAddDishDO::getCreateTime, reqVO.getCreateTime())
.inIfPresent(ActivityAddDishDO::getTableDishId, reqVO.getTableDishIds())
.orderByDesc(ActivityAddDishDO::getId));
}
}

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.member.dal.mysql.activityawards;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 活动奖项 Mapper
*
* @author 我是秦俊旗
*/
@Mapper
public interface ActivityAwardsMapper extends BaseMapperX<ActivityAwardsDO> {
default PageResult<ActivityAwardsDO> selectPage(ActivityAwardsPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ActivityAwardsDO>()
.eqIfPresent(ActivityAwardsDO::getActivityId, reqVO.getActivityId())
.likeIfPresent(ActivityAwardsDO::getAwardsName, reqVO.getAwardsName())
.eqIfPresent(ActivityAwardsDO::getAwardsNum, reqVO.getAwardsNum())
.eqIfPresent(ActivityAwardsDO::getPrize, reqVO.getPrize())
.eqIfPresent(ActivityAwardsDO::getSortNum, reqVO.getSortNum())
.betweenIfPresent(ActivityAwardsDO::getCreateTime, reqVO.getCreateTime())
.orderByAsc(ActivityAwardsDO::getSortNum));
}
}

View File

@ -0,0 +1,54 @@
package cn.iocoder.yudao.module.member.dal.mysql.activityawardsuser;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserCountVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserRespVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 活动中奖人员 Mapper
*
* @author 我是秦俊旗
*/
@Mapper
public interface ActivityAwardsUserMapper extends BaseMapperX<ActivityAwardsUserDO> {
default PageResult<ActivityAwardsUserDO> selectPage(ActivityAwardsUserPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ActivityAwardsUserDO>()
.eqIfPresent(ActivityAwardsUserDO::getActivityId, reqVO.getActivityId())
.eqIfPresent(ActivityAwardsUserDO::getUserId, reqVO.getUserId())
.eqIfPresent(ActivityAwardsUserDO::getMobile, reqVO.getMobile())
.eqIfPresent(ActivityAwardsUserDO::getAwardsId, reqVO.getAwardsId())
.betweenIfPresent(ActivityAwardsUserDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ActivityAwardsUserDO::getId));
}
List<ActivityAwardsUserCountVO> countByActivityIds(@Param("activityIds") List<Long> activityIds);
default PageResult<ActivityAwardsUserRespVO> selectJoinPage(ActivityAwardsUserPageReqVO reqVO) {
Page<ActivityAwardsUserRespVO> activityAwardsUserRespVOPage = selectJoinPage(new Page<>(reqVO.getPageNo(), reqVO.getPageSize()), ActivityAwardsUserRespVO.class,
new MPJLambdaWrapper<ActivityAwardsUserDO>()
.selectAll(ActivityAwardsUserDO.class)
.select(ActivityAwardsDO::getAwardsName, ActivityAwardsDO::getPrize)
.leftJoin(ActivityAwardsDO.class, ActivityAwardsDO::getId, ActivityAwardsUserDO::getAwardsId)
.eq(reqVO.getActivityId() != null, ActivityAwardsUserDO::getActivityId, reqVO.getActivityId())
.eq(reqVO.getAwardsId() != null, ActivityAwardsUserDO::getAwardsId, reqVO.getAwardsId())
.eq(StrUtil.isNotBlank(reqVO.getAwardsStatus()), ActivityAwardsUserDO::getAwardsStatus,reqVO.getAwardsStatus())
.eq(StrUtil.isNotBlank(reqVO.getMobile()), ActivityAwardsUserDO::getMobile, reqVO.getMobile())
.orderByAsc(ActivityAwardsDO::getSortNum)
);
return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal());
}
}

View File

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.member.dal.mysql.activitypay;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayCountVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 活动付款 Mapper
*
* @author 我是秦俊旗
*/
@Mapper
public interface ActivityPayMapper extends BaseMapperX<ActivityPayDO> {
default PageResult<ActivityPayDO> selectPage(ActivityPayPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ActivityPayDO>()
.eqIfPresent(ActivityPayDO::getActivityId, reqVO.getActivityId())
.eqIfPresent(ActivityPayDO::getSerialNumbers, reqVO.getSerialNumbers())
.eqIfPresent(ActivityPayDO::getPrice, reqVO.getPrice())
.eqIfPresent(ActivityPayDO::getUserId, reqVO.getUserId())
.betweenIfPresent(ActivityPayDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ActivityPayDO::getId));
}
List<ActivityPayCountVO> countByActivityIds(@Param("activityIds") List<Long> activityIds);
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.member.dal.mysql.activitypaytable;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.member.dal.dataobject.activitypaytable.ActivityPayTableDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo.*;
/**
* 活动付款 Mapper
*
* @author 我是秦俊旗
*/
@Mapper
public interface ActivityPayTableMapper extends BaseMapperX<ActivityPayTableDO> {
default PageResult<ActivityPayTableDO> selectPage(ActivityPayTablePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ActivityPayTableDO>()
.eqIfPresent(ActivityPayTableDO::getActivityId, reqVO.getActivityId())
.eqIfPresent(ActivityPayTableDO::getSerialNumbers, reqVO.getSerialNumbers())
.eqIfPresent(ActivityPayTableDO::getPrice, reqVO.getPrice())
.eqIfPresent(ActivityPayTableDO::getUserId, reqVO.getUserId())
.betweenIfPresent(ActivityPayTableDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ActivityPayTableDO::getId));
}
}

View File

@ -0,0 +1,32 @@
package cn.iocoder.yudao.module.member.dal.mysql.activityrestaurant;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant.ActivityRestaurantDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.*;
/**
* 活动用餐 Mapper
*
* @author 我是秦俊旗
*/
@Mapper
public interface ActivityRestaurantMapper extends BaseMapperX<ActivityRestaurantDO> {
default PageResult<ActivityRestaurantDO> selectPage(ActivityRestaurantPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ActivityRestaurantDO>()
.eqIfPresent(ActivityRestaurantDO::getActivityId, reqVO.getActivityId())
.eqIfPresent(ActivityRestaurantDO::getTotalTable, reqVO.getTotalTable())
.eqIfPresent(ActivityRestaurantDO::getTableNum, reqVO.getTableNum())
.eqIfPresent(ActivityRestaurantDO::getPrice, reqVO.getPrice())
.eqIfPresent(ActivityRestaurantDO::getDishUrl, reqVO.getDishUrl())
.eqIfPresent(ActivityRestaurantDO::getDescription, reqVO.getDescription())
.betweenIfPresent(ActivityRestaurantDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ActivityRestaurantDO::getId));
}
}

View File

@ -0,0 +1,38 @@
package cn.iocoder.yudao.module.member.dal.mysql.activitytable;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTableCountVO;
import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTablePageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitytable.ActivityTableDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 活动用餐桌子 Mapper
*
* @author 我是秦俊旗
*/
@Mapper
public interface ActivityTableMapper extends BaseMapperX<ActivityTableDO> {
default PageResult<ActivityTableDO> selectPage(ActivityTablePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ActivityTableDO>()
.eqIfPresent(ActivityTableDO::getActivityId, reqVO.getActivityId())
.eqIfPresent(ActivityTableDO::getSerialNumber, reqVO.getSerialNumber())
.eqIfPresent(ActivityTableDO::getPrice, reqVO.getPrice())
.eqIfPresent(ActivityTableDO::getUserId, reqVO.getUserId())
.eqIfPresent(ActivityTableDO::getMobile, reqVO.getMobile())
.betweenIfPresent(ActivityTableDO::getCreateTime, reqVO.getCreateTime())
.isNotNull(reqVO.getIsReserve(),ActivityTableDO::getUserId)
.orderByDesc(ActivityTableDO::getId));
}
List<ActivityTableCountVO> countByActivityIds(@Param("activityIds") List<Long> activityIds);
void deleteByActivityId(@Param("activityId")Long activityId);
}

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.member.dal.mysql.activitytabledish;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitytabledish.ActivityTableDishDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 活动用餐桌子配置 Mapper
*
* @author 我是秦俊旗
*/
@Mapper
public interface ActivityTableDishMapper extends BaseMapperX<ActivityTableDishDO> {
default PageResult<ActivityTableDishDO> selectPage(ActivityTableDishPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ActivityTableDishDO>()
.eqIfPresent(ActivityTableDishDO::getActivityId, reqVO.getActivityId())
.eqIfPresent(ActivityTableDishDO::getSerialNumber, reqVO.getSerialNumber())
.eqIfPresent(ActivityTableDishDO::getPrice, reqVO.getPrice())
.eqIfPresent(ActivityTableDishDO::getDish, reqVO.getDish())
.betweenIfPresent(ActivityTableDishDO::getCreateTime, reqVO.getCreateTime())
.inIfPresent(ActivityTableDishDO::getId, reqVO.getIds())
.orderByAsc(ActivityTableDishDO::getSerialNumber));
}
}

View File

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.member.dal.mysql.activityuser;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserCountVO;
import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserPageReqVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityRespVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityuser.ActivityUserDO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 活动参加人员 Mapper
*
* @author 我是秦俊旗
*/
@Mapper
public interface ActivityUserMapper extends BaseMapperX<ActivityUserDO> {
default PageResult<ActivityUserDO> selectPage(ActivityUserPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ActivityUserDO>()
.eqIfPresent(ActivityUserDO::getActivityId, reqVO.getActivityId())
.eqIfPresent(ActivityUserDO::getUserId, reqVO.getUserId())
.eqIfPresent(ActivityUserDO::getMobile, reqVO.getMobile())
.betweenIfPresent(ActivityUserDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ActivityUserDO::getId));
}
List<ActivityUserCountVO> countByActivityIds(@Param("activityIds") List<Long> activityIds);
default PageResult<AppActivityRespVO> selectUserRecordPage(ActivityUserPageReqVO reqVO) {
Page<AppActivityRespVO> activityAwardsUserRespVOPage = selectJoinPage(new Page<>(reqVO.getPageNo(), reqVO.getPageSize()), AppActivityRespVO.class,
new MPJLambdaWrapper<ActivityUserDO>()
.selectAll(ActivityDO.class)
.leftJoin(ActivityDO.class, ActivityDO::getId, ActivityUserDO::getActivityId)
.eq(ActivityUserDO::getUserId, reqVO.getUserId())
.orderByDesc(ActivityUserDO::getCreateTime)
);
return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal());
}
}

View File

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.member.job;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO;
import cn.iocoder.yudao.module.member.service.activityawardsuser.ActivityAwardsUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author:qjq
* @Date:2024/4/3 14:50
*/
@Slf4j
@Component
public class ActivityJob implements JobHandler {
@Resource
private ActivityAwardsUserService activityAwardsUserService;
/**
* 执行任务
*
* @param param 参数
* @return 结果
* @throws Exception 异常
*/
@Override
@TenantIgnore
public String execute(String param){
List<ActivityAwardsUserDO> listByTime = activityAwardsUserService.getListByTime();
if(CollectionUtil.isNotEmpty(listByTime)){
for (ActivityAwardsUserDO activityAwardsUserDO : listByTime) {
activityAwardsUserDO.setAwardsStatus("2");
}
activityAwardsUserService.updateBatch(listByTime);
}
log.info("[execute][上一天中奖信息过期 {}条]", listByTime.size());
return String.format("中奖信息过期 %s 条 ", listByTime.size());
}
}

View File

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.member.job;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO;
import cn.iocoder.yudao.module.member.service.activitypay.ActivityPayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author:qjq
* @Date:2024/4/3 14:50
*/
@Slf4j
@Component
public class ActivityReserveJob implements JobHandler {
@Resource
private ActivityPayService activityPayService;
/**
* 执行任务
*
* @param param 参数
* @return 结果
* @throws Exception 异常
*/
@Override
@TenantIgnore
public String execute(String param){
List<ActivityPayDO> listByTime = activityPayService.getListByTime();
if(CollectionUtil.isNotEmpty(listByTime)){
for (ActivityPayDO activityPayDO : listByTime) {
activityPayDO.setStatus("2");
}
activityPayService.updateBatch(listByTime);
}
log.info("[execute][上一天预约信息过期 {}条]", listByTime.size());
return String.format("预约信息过期 %s 条 ",listByTime.size());
}
}

View File

@ -0,0 +1,79 @@
package cn.iocoder.yudao.module.member.service.activity;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivitySaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPrizeDrawVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityRespVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO;
import javax.validation.Valid;
import java.util.List;
/**
* 活动 Service 接口
*
* @author 我是秦俊旗
*/
public interface ActivityService {
/**
* 创建活动
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createActivity(@Valid ActivitySaveReqVO createReqVO);
/**
* 更新活动
*
* @param updateReqVO 更新信息
*/
void updateActivity(@Valid ActivitySaveReqVO updateReqVO);
/**
* 删除活动
*
* @param id 编号
*/
void deleteActivity(Long id);
/**
* 获得活动
*
* @param id 编号
* @return 活动
*/
ActivityDO getActivity(Long id);
/**
* 获得活动分页
*
* @param pageReqVO 分页查询
* @return 活动分页
*/
PageResult<ActivityRespVO> getActivityPage(ActivityPageReqVO pageReqVO);
/**
* 获得用户活动分页
*
*/
PageResult<ActivityRespVO> getUserActivityPage(ActivityPageReqVO pageReqVO);
List<ActivityAwardsUserDO> prizeDraw(@Valid AppActivityPrizeDrawVO drawVO);
AppActivityRespVO getUserActivity(Long id,Long userId);
AppActivityRespVO getUserActivityApplyInfo(Long id,Long userId);
List<AppActivityRespVO> getReservatList();
PageResult<ActivityRespVO> getActivityReservePage(ActivityPageReqVO pageReqVO);
}

View File

@ -0,0 +1,416 @@
package cn.iocoder.yudao.module.member.service.activity;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivitySaveReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsListDTO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserCountVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayCountVO;
import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantSaveDto;
import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantSaveReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTableCountVO;
import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserCountVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPrizeDrawVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityRespVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant.ActivityRestaurantDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityuser.ActivityUserDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.dal.mysql.activity.ActivityMapper;
import cn.iocoder.yudao.module.member.service.activityawards.ActivityAwardsService;
import cn.iocoder.yudao.module.member.service.activityawardsuser.ActivityAwardsUserService;
import cn.iocoder.yudao.module.member.service.activitypay.ActivityPayService;
import cn.iocoder.yudao.module.member.service.activityrestaurant.ActivityRestaurantService;
import cn.iocoder.yudao.module.member.service.activitytable.ActivityTableService;
import cn.iocoder.yudao.module.member.service.activitytabledish.ActivityTableDishService;
import cn.iocoder.yudao.module.member.service.activityuser.ActivityUserService;
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
/**
* 活动 Service 实现类
*
* @author 我是秦俊旗
*/
@Service
@Validated
public class ActivityServiceImpl implements ActivityService {
@Resource
private ActivityMapper activityMapper;
@Resource
@Lazy
private ActivityAwardsService activityAwardsService;
@Resource
@Lazy
private ActivityUserService activityUserService;
@Resource
@Lazy
private ActivityTableService activityTableService;
@Resource
@Lazy
private ActivityRestaurantService activityRestaurantService;
@Resource
@Lazy
private ActivityAwardsUserService activityAwardsUserService;
@Resource
private MemberUserService memberUserService;
@Resource
@Lazy
private ActivityPayService activityPayService;
@Resource
@Lazy
private ActivityTableDishService activityTableDishService;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createActivity(ActivitySaveReqVO createReqVO) {
// 插入
ActivityDO activity = BeanUtils.toBean(createReqVO, ActivityDO.class);
activityMapper.insert(activity);
ArrayList<ActivityAwardsDO> activityAwardsDOarrayList = new ArrayList<ActivityAwardsDO>();
for (ActivityAwardsListDTO dto : createReqVO.getActivityAwardsList()) {
ActivityAwardsDO activityAwardsDO = BeanUtils.toBean(dto, ActivityAwardsDO.class);
activityAwardsDO.setActivityId(activity.getId());
activityAwardsDOarrayList.add(activityAwardsDO);
}
if (CollectionUtil.isNotEmpty(activityAwardsDOarrayList)) {
activityAwardsService.insertActivityAwards(activityAwardsDOarrayList);
}
if ("1".equals(createReqVO.getReservationStatus()) && createReqVO.getActivityRestaurantSaveDto() != null) {
ActivityRestaurantSaveReqVO bean = BeanUtils.toBean(createReqVO.getActivityRestaurantSaveDto(), ActivityRestaurantSaveReqVO.class);
if (bean.getTotalTable() <= 0) {
throw exception(ACTIVITY_TABLE_ZERO);
}
bean.setActivityId(activity.getId());
activityRestaurantService.createActivityRestaurant(bean);
activityTableDishService.createByRestaurant(bean);
}
// 返回
return activity.getId();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateActivity(ActivitySaveReqVO updateReqVO) {
// 校验存在
validateActivityExists(updateReqVO.getId());
validateActivityTime(updateReqVO.getId());
// 更新
ActivityDO updateObj = BeanUtils.toBean(updateReqVO, ActivityDO.class);
if ("1".equals(updateReqVO.getReservationStatus()) && updateReqVO.getActivityRestaurantSaveDto() != null) {
ActivityRestaurantSaveDto activityRestaurantSaveDto = updateReqVO.getActivityRestaurantSaveDto();
ActivityRestaurantSaveReqVO bean = BeanUtils.toBean(activityRestaurantSaveDto, ActivityRestaurantSaveReqVO.class);
if (bean.getTotalTable() <= 0) {
throw exception(ACTIVITY_TABLE_ZERO);
}
bean.setActivityId(updateObj.getId());
if (bean.getId() != null) {
// activityTableService.deleteByActivityId(updateObj.getId());
activityRestaurantService.updateActivityRestaurant(bean);
} else {
bean.setActivityId(updateObj.getId());
activityRestaurantService.createActivityRestaurant(bean);
activityTableDishService.createByRestaurant(bean);
}
}
activityMapper.updateById(updateObj);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteActivity(Long id) {
// 校验存在
validateActivityExists(id);
validateActivityTime(id);
// 删除
activityMapper.deleteById(id);
activityAwardsService.deleteByActivityId(id);
activityRestaurantService.deleteByActivityId(id);
}
private void validateActivityExists(Long id) {
if (activityMapper.selectById(id) == null) {
throw exception(ACTIVITY_NOT_EXISTS);
}
}
private void validateActivityTime(Long id) {
ActivityDO activityDO = activityMapper.selectById(id);
LocalDateTime startTime = activityDO.getStartTime();
LocalDateTime endTime = activityDO.getEndTime();
//现在时间再开始时间之后
if (startTime.isBefore(LocalDateTime.now())) {
throw exception(ACTIVITY_START);
}
}
@Override
public ActivityDO getActivity(Long id) {
return activityMapper.selectById(id);
}
@Override
public PageResult<ActivityRespVO> getActivityPage(ActivityPageReqVO pageReqVO) {
PageResult<ActivityDO> activityDOPageResult = activityMapper.selectPage(pageReqVO);
List<ActivityDO> list = activityDOPageResult.getList();
List<Long> activityIds = list.stream().map(ActivityDO::getId).collect(Collectors.toList());
if (CollectionUtil.isEmpty(activityIds)) {
return BeanUtils.toBean(activityDOPageResult, ActivityRespVO.class);
}
Map<Long, ActivityUserCountVO> userCountVOMap = activityUserService.countByActivityIds(activityIds);
Map<Long, ActivityTableCountVO> tableCountVOMap = activityTableService.countByActivityIds(activityIds);
Map<Long, ActivityAwardsUserCountVO> awardsUserCountVOMap = activityAwardsUserService.countByActivityIds(activityIds);
Map<Long, ActivityPayCountVO> longActivityPayCountVOMap = activityPayService.countByActivityIds(activityIds);
ArrayList<ActivityRespVO> activityRespVOS = new ArrayList<>();
for (ActivityDO activity : list) {
ActivityRespVO bean = BeanUtils.toBean(activity, ActivityRespVO.class);
bean.setApplyNum(userCountVOMap.getOrDefault(activity.getId(), new ActivityUserCountVO()).getApplyNum());
bean.setReserveNum(tableCountVOMap.getOrDefault(activity.getId(), new ActivityTableCountVO()).getReserveNum());
bean.setIncome((longActivityPayCountVOMap.getOrDefault(activity.getId(), new ActivityPayCountVO()).getIncome()));
bean.setAwardsNum(awardsUserCountVOMap.getOrDefault(activity.getId(), new ActivityAwardsUserCountVO()).getAwardsNum());
activityRespVOS.add(bean);
}
return new PageResult<>(activityRespVOS, activityDOPageResult.getTotal());
}
@Override
public PageResult<ActivityRespVO> getUserActivityPage(ActivityPageReqVO pageReqVO) {
pageReqVO.setUserId(SecurityFrameworkUtils.getLoginUserId());
PageResult<ActivityDO> activityDOPageResult = activityMapper.selectPageApp(pageReqVO);
List<ActivityDO> list = activityDOPageResult.getList();
List<Long> activityIds = list.stream().map(ActivityDO::getId).collect(Collectors.toList());
if (CollectionUtil.isEmpty(activityIds)) {
return BeanUtils.toBean(activityDOPageResult, ActivityRespVO.class);
}
Map<Long, ActivityUserCountVO> userCountVOMap = activityUserService.countByActivityIds(activityIds);
List<Long> applyByActivityIds = activityUserService.isApplyByActivityIds(activityIds, pageReqVO.getUserId());
ArrayList<ActivityRespVO> activityRespVOS = new ArrayList<>();
for (ActivityDO activity : list) {
ActivityRespVO bean = BeanUtils.toBean(activity, ActivityRespVO.class);
bean.setApplyNum(userCountVOMap.getOrDefault(activity.getId(), new ActivityUserCountVO()).getApplyNum());
bean.setIsApply(applyByActivityIds.contains(activity.getId()));
activityRespVOS.add(bean);
}
return new PageResult<>(activityRespVOS, activityDOPageResult.getTotal());
}
@Override
public List<ActivityAwardsUserDO> prizeDraw(AppActivityPrizeDrawVO drawVO) {
// 查询奖品
ActivityAwardsDO activityAwards = activityAwardsService.getActivityAwards(drawVO.getAwardsId());
// 查询活动
ActivityDO activityDO = activityMapper.selectById(activityAwards.getActivityId());
if(activityDO.getStartTime().isAfter(LocalDateTime.now())){
throw exception(ACTIVITY_ERROR);
}
// 查询报名用户
List<ActivityUserDO> activityUserDOList = activityUserService.getUserListByActivityId(activityDO.getId());
//抽奖用户池
Set<Long> drawUserPool = activityUserDOList.stream().map(ActivityUserDO::getUserId).collect(Collectors.toSet());
if(CollectionUtil.isEmpty(drawUserPool)){
throw exception(ACTIVITY_NO_USER);
}
// 查询当天中奖用户
List<ActivityAwardsUserDO> activityAwardsUserDOList = activityAwardsUserService.getAwardsUserListByActivityId(activityDO.getId());
//统计已中该奖项的人数
// int count = (int) activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwards.getId())).count();
//
// if (count + drawVO.getNum() > activityAwards.getAwardsNum()) {
// throw exception(ACTIVITY_AWARDS_EXCEED);
// }
//查询整个活动中限制类型为整个活动1的奖项
List<ActivityAwardsDO> limitTypeList = activityAwardsService.getListByActivityIdAndAwardsStatus(activityDO.getId(), "1");
//优先排除这批中奖人员
if(CollectionUtil.isNotEmpty(limitTypeList)){
for (ActivityAwardsDO activityAwardsDO : limitTypeList) {
Map<Long, Long> map = activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwardsDO.getId()))
.collect(Collectors.groupingBy(
ActivityAwardsUserDO::getUserId,
Collectors.counting()
));
Integer awardsNum = activityAwardsDO.getAwardsNum();
// 筛选出次数 大于限定次数 的用户ID存入Set去重
Set<Long> inconsistentUserList = map.entrySet().stream()
.filter(entry -> entry.getValue() >= awardsNum)
.map(Map.Entry::getKey)
.collect(Collectors.toSet());
// 从抽奖用户池中移除次数大于限定次数的用户
drawUserPool.removeAll(inconsistentUserList);
}
}
// 获取该奖项的限制类型
String limitType = activityAwards.getLimitType();
//如果是单个奖项2的话需要排除该奖项次数满的 整个活动1的话上面已排除 无限制3无需排除
if ("2".equals(limitType)){
Map<Long, Long> map = activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwards.getId()))
.collect(Collectors.groupingBy(
ActivityAwardsUserDO::getUserId,
Collectors.counting()
));
//每个人可中奖次数
Integer awardsNum = activityAwards.getAwardsNum();
// 筛选出次数 大于限定次数 的用户ID存入Set去重
Set<Long> inconsistentUserList = map.entrySet().stream()
.filter(entry -> entry.getValue() >= awardsNum)
.map(Map.Entry::getKey)
.collect(Collectors.toSet());
drawUserPool.removeAll(inconsistentUserList);
}
//开始抽奖
List<Long> longs = selectRandom(drawUserPool, drawVO.getNum());
//中奖人员信息
List<MemberUserDO> userList = memberUserService.getUserList(longs);
//插入数据库
ArrayList<ActivityAwardsUserDO> list = new ArrayList<>();
for (MemberUserDO user : userList) {
ActivityAwardsUserDO activityAwardsUserDO = new ActivityAwardsUserDO();
activityAwardsUserDO.setActivityId(activityDO.getId());
activityAwardsUserDO.setUserId(user.getId());
activityAwardsUserDO.setNickName(user.getNickname());
activityAwardsUserDO.setAvatar(user.getAvatar());
activityAwardsUserDO.setMobile(user.getMobile());
activityAwardsUserDO.setAwardsId(activityAwards.getId());
activityAwardsUserDO.setAwardsStatus("0");
list.add(activityAwardsUserDO);
}
activityAwardsUserService.insertBatch(list);
return list;
}
public static List<Long> selectRandom(Set<Long> drawUserPool, int count) {
// 校验输入
if (drawUserPool == null || drawUserPool.isEmpty()) {
return Collections.emptyList();
}
int total = drawUserPool.size();
if (count >= total) {
return new ArrayList<>(drawUserPool); // 直接返回所有元素
}
// 转换为列表并复制,避免修改原始集合
List<Long> list = new ArrayList<>(drawUserPool);
Random random = new Random();
// Fisher-Yates 洗牌算法(原地打乱)
for (int i = total - 1; i > 0; i--) {
int j = random.nextInt(i + 1); // 生成 [0, i] 之间的随机索引
Collections.swap(list, i, j); // 交换元素,确保每个位置等概率出现
}
// 取前 count 个元素
return list.subList(0, count);
}
@Override
public AppActivityRespVO getUserActivity(Long id,Long userId) {
ActivityDO activityDO = activityMapper.selectById(id);
if( activityDO == null){
throw exception(ACTIVITY_NOT_EXISTS);
}
AppActivityRespVO activity = BeanUtil.toBean(activityDO, AppActivityRespVO.class);
Map<Long, ActivityUserCountVO> userCountVOMap = activityUserService.countByActivityIds(Collections.singletonList(id));
activity.setApplyNum(userCountVOMap.getOrDefault(activity.getId(), new ActivityUserCountVO()).getApplyNum());
activity.setAwards(activityAwardsUserService.getListByActivityIdAndUserId(id, userId));
return activity;
}
@Override
public AppActivityRespVO getUserActivityApplyInfo(Long id, Long userId) {
ActivityDO activityDO = activityMapper.selectById(id);
if( activityDO == null){
throw exception(ACTIVITY_NOT_EXISTS);
}
AppActivityRespVO activity = BeanUtil.toBean(activityDO, AppActivityRespVO.class);
Map<Long, ActivityUserCountVO> userCountVOMap = activityUserService.countByActivityIds(Collections.singletonList(id));
activity.setApplyNum(userCountVOMap.getOrDefault(activity.getId(), new ActivityUserCountVO()).getApplyNum());
activity.setIsApply(activityUserService.selectIsApply(id, userId));
activity.setAwardList(activityAwardsService.getListByActivityId(id));
return activity;
}
@Override
public List<AppActivityRespVO> getReservatList() {
LocalDateTime now = LocalDateTime.now();
List<ActivityDO> activityDOS = activityMapper.selectList(Wrappers.<ActivityDO>lambdaQuery()
.eq(ActivityDO::getReservationStatus, "1")
.ge(ActivityDO::getEndTime, now)
// .le(ActivityDO::getStartTime, now)
);
List<AppActivityRespVO> result = new ArrayList<>();
for (ActivityDO activityDO : activityDOS) {
AppActivityRespVO bean = BeanUtils.toBean(activityDO, AppActivityRespVO.class);
ActivityRestaurantDO activityRestaurantDO = activityRestaurantService.getByActivityId(activityDO.getId());
bean.setActivityRestaurantSaveDto(BeanUtils.toBean(activityRestaurantDO, ActivityRestaurantRespVO.class));
result.add(bean);
}
return result;
}
@Override
public PageResult<ActivityRespVO> getActivityReservePage(ActivityPageReqVO reqVO) {
PageResult<ActivityDO> activityDOPageResult = activityMapper.selectPage(reqVO, new LambdaQueryWrapperX<ActivityDO>()
.eq(ActivityDO::getReservationStatus, "1")
.ge(ActivityDO::getEndTime, LocalDateTime.now())
.orderByDesc(ActivityDO::getId));
return BeanUtils.toBean(activityDOPageResult, ActivityRespVO.class);
}
}

View File

@ -0,0 +1,58 @@
package cn.iocoder.yudao.module.member.service.activityadddish;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishSaveBatchVO;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityadddish.ActivityAddDishDO;
import javax.validation.Valid;
/**
* 活动用餐桌子加菜 Service 接口
*
* @author 我是秦俊旗
*/
public interface ActivityAddDishService {
/**
* 创建活动用餐桌子加菜
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createActivityAddDish(@Valid ActivityAddDishSaveReqVO createReqVO);
/**
* 更新活动用餐桌子加菜
*
* @param updateReqVO 更新信息
*/
void updateActivityAddDish(@Valid ActivityAddDishSaveReqVO updateReqVO);
/**
* 删除活动用餐桌子加菜
*
* @param id 编号
*/
void deleteActivityAddDish(Long id);
/**
* 获得活动用餐桌子加菜
*
* @param id 编号
* @return 活动用餐桌子加菜
*/
ActivityAddDishDO getActivityAddDish(Long id);
/**
* 获得活动用餐桌子加菜分页
*
* @param pageReqVO 分页查询
* @return 活动用餐桌子加菜分页
*/
PageResult<ActivityAddDishDO> getActivityAddDishPage(ActivityAddDishPageReqVO pageReqVO);
void createActivityAddDishBatch(ActivityAddDishSaveBatchVO activityAddDishSaveBatchVO);
}

View File

@ -0,0 +1,105 @@
package cn.iocoder.yudao.module.member.service.activityadddish;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishSaveBatchVO;
import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityadddish.ActivityAddDishDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitytabledish.ActivityTableDishDO;
import cn.iocoder.yudao.module.member.dal.mysql.activityadddish.ActivityAddDishMapper;
import cn.iocoder.yudao.module.member.service.activitytabledish.ActivityTableDishService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_ADD_DISH_NOT_CHANGE;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_ADD_DISH_NOT_EXISTS;
/**
* 活动用餐桌子加菜 Service 实现类
*
* @author 我是秦俊旗
*/
@Service
@Validated
public class ActivityAddDishServiceImpl implements ActivityAddDishService {
@Resource
private ActivityAddDishMapper activityAddDishMapper;
@Resource
private ActivityTableDishService activityTableDishService;
@Override
public Long createActivityAddDish(ActivityAddDishSaveReqVO createReqVO) {
// 插入
ActivityAddDishDO activityAddDish = BeanUtils.toBean(createReqVO, ActivityAddDishDO.class);
activityAddDishMapper.insert(activityAddDish);
// 返回
return activityAddDish.getId();
}
@Override
public void updateActivityAddDish(ActivityAddDishSaveReqVO updateReqVO) {
// 校验存在
validateActivityAddDishExists(updateReqVO.getId());
// 更新
ActivityAddDishDO updateObj = BeanUtils.toBean(updateReqVO, ActivityAddDishDO.class);
activityAddDishMapper.updateById(updateObj);
}
@Override
public void deleteActivityAddDish(Long id) {
// 校验存在
validateActivityAddDishExists(id);
// 删除
activityAddDishMapper.deleteById(id);
}
private void validateActivityAddDishExists(Long id) {
if (activityAddDishMapper.selectById(id) == null) {
throw exception(ACTIVITY_ADD_DISH_NOT_EXISTS);
}
}
@Override
public ActivityAddDishDO getActivityAddDish(Long id) {
return activityAddDishMapper.selectById(id);
}
@Override
public PageResult<ActivityAddDishDO> getActivityAddDishPage(ActivityAddDishPageReqVO pageReqVO) {
return activityAddDishMapper.selectPage(pageReqVO);
}
@Override
public void createActivityAddDishBatch(ActivityAddDishSaveBatchVO activityAddDishSaveBatchVO) {
List<Long> tableDishIds = activityAddDishSaveBatchVO.getTableDishIds();
if(tableDishIds == null){
throw exception(ACTIVITY_ADD_DISH_NOT_CHANGE);
}
List<ActivityTableDishDO> listByIds = activityTableDishService.getListByIds(tableDishIds);
Map<Long, Integer> collect = listByIds.stream().collect(Collectors.toMap(ActivityTableDishDO::getId, ActivityTableDishDO::getSerialNumber));
List<ActivityAddDishDO> list = new ArrayList<>();
for (Long tableDishId : tableDishIds){
ActivityAddDishDO activityAddDishDO = new ActivityAddDishDO();
activityAddDishDO.setTableDishId(tableDishId);
activityAddDishDO.setDishName(activityAddDishSaveBatchVO.getDishName());
activityAddDishDO.setDishPrice(activityAddDishSaveBatchVO.getDishPrice());
activityAddDishDO.setDishImg(activityAddDishSaveBatchVO.getDishImg());
activityAddDishDO.setSerialNumber(collect.get(tableDishId));
list.add(activityAddDishDO);
}
activityAddDishMapper.insertBatch(list);
}
}

View File

@ -0,0 +1,69 @@
package cn.iocoder.yudao.module.member.service.activityawards;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO;
import javax.validation.Valid;
import java.util.List;
/**
* 活动奖项 Service 接口
*
* @author 我是秦俊旗
*/
public interface ActivityAwardsService {
/**
* 创建活动奖项
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createActivityAwards(@Valid ActivityAwardsSaveReqVO createReqVO);
/**
* 更新活动奖项
*
* @param updateReqVO 更新信息
*/
void updateActivityAwards(@Valid ActivityAwardsSaveReqVO updateReqVO);
/**
* 删除活动奖项
*
* @param id 编号
*/
void deleteActivityAwards(Long id);
/**
* 获得活动奖项
*
* @param id 编号
* @return 活动奖项
*/
ActivityAwardsDO getActivityAwards(Long id);
/**
* 获得活动奖项分页
*
* @param pageReqVO 分页查询
* @return 活动奖项分页
*/
PageResult<ActivityAwardsDO> getActivityAwardsPage(ActivityAwardsPageReqVO pageReqVO);
void insertActivityAwards(List<ActivityAwardsDO> activityAwardsDOList);
void deleteByActivityId(Long activityId);
List<ActivityAwardsDO> getListByActivityId(Long activityId);
List<ActivityAwardsDO> getListByIds(List<Long> ids);
List<ActivityAwardsDO> getListByActivityIdAndAwardsStatus(Long activityId, String limitType);
List<ActivityAwardsDO> getListByActivity(Long activityId);
}

View File

@ -0,0 +1,111 @@
package cn.iocoder.yudao.module.member.service.activityawards;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO;
import cn.iocoder.yudao.module.member.dal.mysql.activityawards.ActivityAwardsMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_AWARDS_NOT_EXISTS;
/**
* 活动奖项 Service 实现类
*
* @author 我是秦俊旗
*/
@Service
@Validated
public class ActivityAwardsServiceImpl implements ActivityAwardsService {
@Resource
private ActivityAwardsMapper activityAwardsMapper;
@Override
public Long createActivityAwards(ActivityAwardsSaveReqVO createReqVO) {
// 插入
ActivityAwardsDO activityAwards = BeanUtils.toBean(createReqVO, ActivityAwardsDO.class);
activityAwardsMapper.insert(activityAwards);
// 返回
return activityAwards.getId();
}
@Override
public void updateActivityAwards(ActivityAwardsSaveReqVO updateReqVO) {
// 校验存在
validateActivityAwardsExists(updateReqVO.getId());
// 更新
ActivityAwardsDO updateObj = BeanUtils.toBean(updateReqVO, ActivityAwardsDO.class);
activityAwardsMapper.updateById(updateObj);
}
@Override
public void deleteActivityAwards(Long id) {
// 校验存在
validateActivityAwardsExists(id);
// 删除
activityAwardsMapper.deleteById(id);
}
private void validateActivityAwardsExists(Long id) {
if (activityAwardsMapper.selectById(id) == null) {
throw exception(ACTIVITY_AWARDS_NOT_EXISTS);
}
}
@Override
public ActivityAwardsDO getActivityAwards(Long id) {
return activityAwardsMapper.selectById(id);
}
@Override
public PageResult<ActivityAwardsDO> getActivityAwardsPage(ActivityAwardsPageReqVO pageReqVO) {
return activityAwardsMapper.selectPage(pageReqVO);
}
@Override
public void insertActivityAwards(List<ActivityAwardsDO> activityAwardsDOList) {
activityAwardsMapper.insertBatch(activityAwardsDOList);
}
@Override
public void deleteByActivityId(Long activityId) {
activityAwardsMapper.delete(Wrappers.lambdaQuery(ActivityAwardsDO.class).eq(ActivityAwardsDO::getActivityId,activityId));
}
@Override
public List<ActivityAwardsDO> getListByActivityId(Long activityId) {
return activityAwardsMapper.selectList(Wrappers.lambdaQuery(ActivityAwardsDO.class)
.eq(ActivityAwardsDO::getActivityId, activityId)
.orderByAsc(ActivityAwardsDO::getSortNum));
}
@Override
public List<ActivityAwardsDO> getListByIds(List<Long> ids) {
return activityAwardsMapper.selectList(Wrappers.lambdaQuery(ActivityAwardsDO.class)
.in(ActivityAwardsDO::getId, ids)
.orderByAsc(ActivityAwardsDO::getSortNum));
}
@Override
public List<ActivityAwardsDO> getListByActivityIdAndAwardsStatus(Long activityId, String limitType) {
return activityAwardsMapper.selectList(Wrappers.lambdaQuery(ActivityAwardsDO.class)
.eq(ActivityAwardsDO::getActivityId, activityId)
.eq(ActivityAwardsDO::getLimitType, limitType));
}
@Override
public List<ActivityAwardsDO> getListByActivity(Long activityId) {
return activityAwardsMapper.selectList(Wrappers.lambdaQuery(ActivityAwardsDO.class)
.eq(ActivityAwardsDO::getActivityId, activityId));
}
}

View File

@ -0,0 +1,76 @@
package cn.iocoder.yudao.module.member.service.activityawardsuser;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserCountVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCancelVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppUserAwardsVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
* 活动中奖人员 Service 接口
*
* @author 我是秦俊旗
*/
public interface ActivityAwardsUserService {
/**
* 创建活动中奖人员
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createActivityAwardsUser(@Valid ActivityAwardsUserSaveReqVO createReqVO);
/**
* 更新活动中奖人员
*
* @param updateReqVO 更新信息
*/
void updateActivityAwardsUser(@Valid ActivityAwardsUserSaveReqVO updateReqVO);
/**
* 删除活动中奖人员
*
* @param id 编号
*/
void deleteActivityAwardsUser(Long id);
/**
* 获得活动中奖人员
*
* @param id 编号
* @return 活动中奖人员
*/
ActivityAwardsUserDO getActivityAwardsUser(Long id);
/**
* 获得活动中奖人员分页
*
* @param pageReqVO 分页查询
* @return 活动中奖人员分页
*/
PageResult<ActivityAwardsUserDO> getActivityAwardsUserPage(ActivityAwardsUserPageReqVO pageReqVO);
PageResult<ActivityAwardsUserRespVO> getActivityAwardsUserJoinPage(ActivityAwardsUserPageReqVO pageReqVO);
Map<Long, ActivityAwardsUserCountVO> countByActivityIds(List<Long> activityIds);
List<ActivityAwardsUserDO> getAwardsUserListByActivityId(Long activityId);
void insertBatch(List<ActivityAwardsUserDO> list);
List<AppUserAwardsVO> getListByActivityIdAndUserId(Long activityId, Long userId);
Boolean cancel(AppCancelVO vo);
List<ActivityAwardsUserDO> getListByTime();
void updateBatch(List<ActivityAwardsUserDO> list );
}

View File

@ -0,0 +1,160 @@
package cn.iocoder.yudao.module.member.service.activityawardsuser;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserCountVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserRespVO;
import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCancelVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppUserAwardsVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO;
import cn.iocoder.yudao.module.member.dal.mysql.activityawardsuser.ActivityAwardsUserMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_AWARDS_USER_NOT_EFFECTIVE;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_AWARDS_USER_NOT_EXISTS;
/**
* 活动中奖人员 Service 实现类
*
* @author 我是秦俊旗
*/
@Service
@Validated
public class ActivityAwardsUserServiceImpl implements ActivityAwardsUserService {
@Resource
private ActivityAwardsUserMapper activityAwardsUserMapper;
@Override
public Long createActivityAwardsUser(ActivityAwardsUserSaveReqVO createReqVO) {
// 插入
ActivityAwardsUserDO activityAwardsUser = BeanUtils.toBean(createReqVO, ActivityAwardsUserDO.class);
activityAwardsUserMapper.insert(activityAwardsUser);
// 返回
return activityAwardsUser.getId();
}
@Override
public void updateActivityAwardsUser(ActivityAwardsUserSaveReqVO updateReqVO) {
// 校验存在
validateActivityAwardsUserExists(updateReqVO.getId());
// 更新
ActivityAwardsUserDO updateObj = BeanUtils.toBean(updateReqVO, ActivityAwardsUserDO.class);
activityAwardsUserMapper.updateById(updateObj);
}
@Override
public void deleteActivityAwardsUser(Long id) {
// 校验存在
validateActivityAwardsUserExists(id);
// 删除
activityAwardsUserMapper.deleteById(id);
}
private void validateActivityAwardsUserExists(Long id) {
if (activityAwardsUserMapper.selectById(id) == null) {
throw exception(ACTIVITY_AWARDS_USER_NOT_EXISTS);
}
}
@Override
public ActivityAwardsUserDO getActivityAwardsUser(Long id) {
return activityAwardsUserMapper.selectById(id);
}
@Override
public PageResult<ActivityAwardsUserDO> getActivityAwardsUserPage(ActivityAwardsUserPageReqVO pageReqVO) {
return activityAwardsUserMapper.selectPage(pageReqVO);
}
@Override
public PageResult<ActivityAwardsUserRespVO> getActivityAwardsUserJoinPage(ActivityAwardsUserPageReqVO pageReqVO) {
return activityAwardsUserMapper.selectJoinPage(pageReqVO);
}
@Override
public Map<Long, ActivityAwardsUserCountVO> countByActivityIds(List<Long> activityIds) {
List<ActivityAwardsUserCountVO> activityAwardsUserCountVOS = activityAwardsUserMapper.countByActivityIds(activityIds);
if (activityAwardsUserCountVOS.isEmpty()) {
return Collections.emptyMap();
}
return activityAwardsUserCountVOS.stream().collect(Collectors.toMap(ActivityAwardsUserCountVO::getActivityId, v -> v));
}
@Override
public List<ActivityAwardsUserDO> getAwardsUserListByActivityId(Long activityId) {
LocalDateTime date = LocalDateTime.now();
LocalDateTime startOfDay = date.with(LocalTime.MIN);
LocalDateTime endOfDay = date.with(LocalTime.MAX);
return activityAwardsUserMapper.selectList(Wrappers.<ActivityAwardsUserDO>lambdaQuery()
.eq(ActivityAwardsUserDO::getActivityId, activityId)
.between(ActivityAwardsUserDO::getCreateTime, startOfDay, endOfDay));
}
@Override
public void insertBatch(List<ActivityAwardsUserDO> list) {
activityAwardsUserMapper.insertBatch(list);
}
@Override
public List<AppUserAwardsVO> getListByActivityIdAndUserId(Long activityId, Long userId) {
return activityAwardsUserMapper
.selectJoinList(AppUserAwardsVO.class,
new MPJLambdaWrapper<ActivityAwardsUserDO>()
.select(ActivityAwardsDO::getPrize, ActivityAwardsDO::getAwardsName)
.select(ActivityAwardsUserDO::getAwardsStatus, ActivityAwardsUserDO::getCreateTime, ActivityAwardsUserDO::getId)
.leftJoin(ActivityAwardsDO.class, ActivityAwardsDO::getId, ActivityAwardsUserDO::getAwardsId)
.eq(ActivityAwardsUserDO::getActivityId, activityId)
.eq(ActivityAwardsUserDO::getUserId, userId)
.orderByAsc(ActivityAwardsUserDO::getCreateTime));
}
@Override
public Boolean cancel(AppCancelVO vo) {
ActivityAwardsUserDO activityAwardsUserDO = activityAwardsUserMapper.selectById(vo.getActivityAwardsUserId());
if(!"0".equals(activityAwardsUserDO.getAwardsStatus())){
throw exception(ACTIVITY_AWARDS_USER_NOT_EFFECTIVE);
}
activityAwardsUserDO.setAwardsStatus("1");
int i = activityAwardsUserMapper.updateById(activityAwardsUserDO);
return i>0;
}
@Override
public List<ActivityAwardsUserDO> getListByTime() {
LocalDateTime date = LocalDateTime.now().minusDays(1);
LocalDateTime endOfDay = date.with(LocalTime.MAX);
return activityAwardsUserMapper.selectList(Wrappers.<ActivityAwardsUserDO>lambdaQuery()
.le(ActivityAwardsUserDO::getCreateTime, endOfDay)
.eq(ActivityAwardsUserDO::getAwardsStatus, "0")
);
}
@Override
public void updateBatch(List<ActivityAwardsUserDO> list) {
activityAwardsUserMapper.updateBatch(list);
}
}

View File

@ -0,0 +1,71 @@
package cn.iocoder.yudao.module.member.service.activitypay;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayCountVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPaySaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPayRespVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCancelVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
* 活动付款 Service 接口
*
* @author 我是秦俊旗
*/
public interface ActivityPayService {
/**
* 创建活动付款
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createActivityPay(@Valid ActivityPaySaveReqVO createReqVO);
/**
* 更新活动付款
*
* @param updateReqVO 更新信息
*/
void updateActivityPay(@Valid ActivityPaySaveReqVO updateReqVO);
/**
* 删除活动付款
*
* @param id 编号
*/
void deleteActivityPay(Long id);
/**
* 获得活动付款
*
* @param id 编号
* @return 活动付款
*/
ActivityPayDO getActivityPay(Long id);
/**
* 获得活动付款分页
*
* @param pageReqVO 分页查询
* @return 活动付款分页
*/
PageResult<ActivityPayDO> getActivityPayPage(ActivityPayPageReqVO pageReqVO);
Map<Long, ActivityPayCountVO> countByActivityIds(List<Long> activityIds);
void addActivityPay(ActivityPaySaveReqVO createReqVO);
PageResult<AppActivityPayRespVO> getUserActivityPayPage(ActivityPayPageReqVO pageReqVO);
Boolean reserveCancel(AppCancelVO vo);
List<ActivityPayDO> getListByTime();
void updateBatch(List<ActivityPayDO> list);
}

View File

@ -0,0 +1,201 @@
package cn.iocoder.yudao.module.member.service.activitypay;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayCountVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPaySaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPayRespVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCancelVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitypaytable.ActivityPayTableDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.dal.mysql.activitypay.ActivityPayMapper;
import cn.iocoder.yudao.module.member.service.activitypaytable.ActivityPayTableService;
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
/**
* 活动付款 Service 实现类
*
* @author 我是秦俊旗
*/
@Service
@Validated
public class ActivityPayServiceImpl implements ActivityPayService {
@Resource
private ActivityPayMapper activityPayMapper;
@Resource
private ActivityPayTableService activityPayTableService;
@Resource
@Lazy
private MemberUserService memberUserService;
@Override
public Long createActivityPay(ActivityPaySaveReqVO createReqVO) {
// 插入
ActivityPayDO activityPay = BeanUtils.toBean(createReqVO, ActivityPayDO.class);
activityPayMapper.insert(activityPay);
// 返回
return activityPay.getId();
}
@Override
public void updateActivityPay(ActivityPaySaveReqVO updateReqVO) {
// 校验存在
validateActivityPayExists(updateReqVO.getId());
// 更新
ActivityPayDO updateObj = BeanUtils.toBean(updateReqVO, ActivityPayDO.class);
activityPayMapper.updateById(updateObj);
}
@Override
public void deleteActivityPay(Long id) {
// 校验存在
validateActivityPayExists(id);
// 删除
activityPayMapper.deleteById(id);
}
private void validateActivityPayExists(Long id) {
if (activityPayMapper.selectById(id) == null) {
throw exception(ACTIVITY_PAY_NOT_EXISTS);
}
}
@Override
public ActivityPayDO getActivityPay(Long id) {
return activityPayMapper.selectById(id);
}
@Override
public PageResult<ActivityPayDO> getActivityPayPage(ActivityPayPageReqVO pageReqVO) {
return activityPayMapper.selectPage(pageReqVO);
}
@Override
public Map<Long, ActivityPayCountVO> countByActivityIds(List<Long> activityIds) {
List<ActivityPayCountVO> activityPayCountVOS = activityPayMapper.countByActivityIds(activityIds);
if (activityPayCountVOS.isEmpty()) {
return Collections.emptyMap();
}
return activityPayCountVOS.stream().collect(Collectors.toMap(ActivityPayCountVO::getActivityId, v -> v));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void addActivityPay(ActivityPaySaveReqVO createReqVO) {
ActivityPayDO activityPayDO = new ActivityPayDO();
BeanUtil.copyProperties(createReqVO, activityPayDO,"reserveTime");
MemberUserDO user = memberUserService.getUser(createReqVO.getUserId());
activityPayDO.setMobile(user.getMobile());
activityPayDO.setNickName(user.getNickname());
String reserveTime = createReqVO.getReserveTime();
LocalDate localDate = null;
if(StrUtil.isNotBlank(reserveTime)){
//转化成date
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
localDate = LocalDate.parse(reserveTime, formatter);
}
activityPayDO.setReserveTime(localDate);
activityPayMapper.insert(activityPayDO);
String serialNumbers = createReqVO.getSerialNumbers();
String[] split = serialNumbers.split(",");
BigDecimal divide = createReqVO.getPrice().divide(BigDecimal.valueOf(split.length),2, RoundingMode.HALF_UP);
List<ActivityPayTableDO> activityPayTableDOS = new ArrayList<>();
for (String serialNumber : split) {
ActivityPayTableDO activityPayTableDO = new ActivityPayTableDO();
activityPayTableDO.setActivityId(activityPayDO.getActivityId());
activityPayTableDO.setSerialNumbers(serialNumber);
activityPayTableDO.setPrice(divide);
activityPayTableDO.setUserId(activityPayDO.getUserId());
activityPayTableDO.setReserveTime(activityPayDO.getReserveTime());
activityPayTableDO.setNickName(activityPayDO.getNickName());
activityPayTableDO.setMobile(activityPayDO.getMobile());
activityPayTableDOS.add(activityPayTableDO);
}
if(!activityPayTableDOS.isEmpty()){
activityPayTableService.insertBatch(activityPayTableDOS);
}
}
@Override
public PageResult<AppActivityPayRespVO> getUserActivityPayPage(ActivityPayPageReqVO pageReqVO) {
Page<AppActivityPayRespVO> activityAwardsUserRespVOPage = activityPayMapper.selectJoinPage(new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), AppActivityPayRespVO.class,
new MPJLambdaWrapper<ActivityPayDO>()
.selectAll(ActivityPayDO.class)
.select(ActivityDO::getActivityName)
.leftJoin(ActivityDO.class, ActivityDO::getId, ActivityAwardsUserDO::getActivityId)
.eq(pageReqVO.getActivityId() != null, ActivityAwardsUserDO::getActivityId, pageReqVO.getActivityId())
.eq( ActivityPayDO::getUserId, pageReqVO.getUserId())
.orderByDesc(ActivityPayDO::getCreateTime)
);
return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal());
}
@Override
public Boolean reserveCancel(AppCancelVO vo) {
ActivityPayDO activityPayDO = activityPayMapper.selectById(vo.getActivityPayId());
if(!"0".equals(activityPayDO.getStatus())){
throw exception(ACTIVITY_PAY_USE);
}
//获取当天日期
LocalDate now = LocalDate.now();
//比较日期是否相等
if(! now.isEqual(activityPayDO.getReserveTime())){
throw exception(ACTIVITY_PAY_EXPIRE);
}
activityPayDO.setStatus("1");
int i = activityPayMapper.updateById(activityPayDO);
return i>0;
}
@Override
public List<ActivityPayDO> getListByTime() {
LocalDate localDate = LocalDate.now().minusDays(1);
return activityPayMapper.selectList(Wrappers.<ActivityPayDO>lambdaQuery()
.le(ActivityPayDO::getReserveTime, localDate)
.eq(ActivityPayDO::getStatus, "0")
);
}
@Override
public void updateBatch(List<ActivityPayDO> list) {
activityPayMapper.updateBatch(list);
}
}

View File

@ -0,0 +1,59 @@
package cn.iocoder.yudao.module.member.service.activitypaytable;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo.ActivityPayTablePageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo.ActivityPayTableSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitypaytable.ActivityPayTableDO;
import javax.validation.Valid;
import java.util.List;
/**
* 活动付款 Service 接口
*
* @author 我是秦俊旗
*/
public interface ActivityPayTableService {
/**
* 创建活动付款
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createActivityPayTable(@Valid ActivityPayTableSaveReqVO createReqVO);
/**
* 更新活动付款
*
* @param updateReqVO 更新信息
*/
void updateActivityPayTable(@Valid ActivityPayTableSaveReqVO updateReqVO);
/**
* 删除活动付款
*
* @param id 编号
*/
void deleteActivityPayTable(Long id);
/**
* 获得活动付款
*
* @param id 编号
* @return 活动付款
*/
ActivityPayTableDO getActivityPayTable(Long id);
/**
* 获得活动付款分页
*
* @param pageReqVO 分页查询
* @return 活动付款分页
*/
PageResult<ActivityPayTableDO> getActivityPayTablePage(ActivityPayTablePageReqVO pageReqVO);
void insertBatch(List<ActivityPayTableDO> list);
PageResult<ActivityPayTableDO> getActivityPayTableGroupPage(ActivityPayTablePageReqVO pageReqVO);
}

Some files were not shown because too many files have changed in this diff Show More