会员中心代码、sql脚本提交

1.合并积分模块只member module
2.初始化sql放入mysql/member_point.sql
3.添加会员中/会员积分、会员签到/xxx层级目录
4.删除无用的接口代码
This commit is contained in:
xiaqing
2023-06-28 22:49:19 +08:00
parent e5c556f106
commit c7ced55a6c
70 changed files with 1127 additions and 1955 deletions

View File

@ -23,4 +23,17 @@ public interface ErrorCodeConstants {
// ========== 用户收件地址 1004004000 ==========
ErrorCode ADDRESS_NOT_EXISTS = new ErrorCode(1004004000, "用户收件地址不存在");
//========== 用户积分 1004005000 ==========
ErrorCode CONFIG_NOT_EXISTS = new ErrorCode(1004005001, "积分设置不存在");
ErrorCode CONFIG_EXISTS = new ErrorCode(1004005002, "积分设置已存在,只允配置一条记录");
ErrorCode SIGN_IN_CONFIG_NOT_EXISTS = new ErrorCode(1004005003, "签到天数规则不存在");
ErrorCode SIGN_IN_CONFIG_EXISTS = new ErrorCode(1004005004, "签到天数规则已存在");
ErrorCode RECORD_NOT_EXISTS = new ErrorCode( 1004005005, "用户积分记录不存在");
ErrorCode SIGN_IN_RECORD_NOT_EXISTS = new ErrorCode(1004005006, "用户签到积分不存在");
}

View File

@ -84,6 +84,11 @@
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-excel</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -26,9 +26,9 @@ public class MemberPointConfigController {
@Resource
private MemberPointConfigService memberPointConfigService;
@PutMapping("/update")
@PutMapping("/save")
@Operation(summary = "保存会员积分配置")
@PreAuthorize("@ss.hasPermission('member:point-config:save')")
@PreAuthorize("@ss.hasPermission('point:config:save')")
public CommonResult<Boolean> updateConfig(@Valid @RequestBody MemberPointConfigSaveReqVO saveReqVO) {
memberPointConfigService.saveConfig(saveReqVO);
return success(true);
@ -36,7 +36,7 @@ public class MemberPointConfigController {
@GetMapping("/get")
@Operation(summary = "获得会员积分配置")
@PreAuthorize("@ss.hasPermission('member:point-config:query')")
@PreAuthorize("@ss.hasPermission('point:config:query')")
public CommonResult<MemberPointConfigRespVO> getConfig() {
MemberPointConfigDO config = memberPointConfigService.getConfig();
return success(MemberPointConfigConvert.INSTANCE.convert(config));

View File

@ -0,0 +1,83 @@
package cn.iocoder.yudao.module.member.controller.admin.point;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
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.point.vo.recrod.*;
import cn.iocoder.yudao.module.member.convert.point.MemberPointRecordConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
import cn.iocoder.yudao.module.member.service.point.MemberPointRecordService;
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.Collection;
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("/point/record")
@Validated
public class MemberPointRecordController {
@Resource
private MemberPointRecordService recordService;
@PutMapping("/update")
@Operation(summary = "更新用户积分记录")
@PreAuthorize("@ss.hasPermission('point:record:update')")
public CommonResult<Boolean> updateRecord(@Valid @RequestBody MemberPointRecordUpdateReqVO updateReqVO) {
recordService.updateRecord(updateReqVO);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得用户积分记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('point:record:query')")
public CommonResult<MemberPointRecordRespVO> getRecord(@RequestParam("id") Long id) {
MemberPointRecordDO record = recordService.getRecord(id);
return success(MemberPointRecordConvert.INSTANCE.convert(record));
}
@GetMapping("/list")
@Operation(summary = "获得用户积分记录列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('point:record:query')")
public CommonResult<List<MemberPointRecordRespVO>> getRecordList(@RequestParam("ids") Collection<Long> ids) {
List<MemberPointRecordDO> list = recordService.getRecordList(ids);
return success(MemberPointRecordConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得用户积分记录分页")
@PreAuthorize("@ss.hasPermission('point:record:query')")
public CommonResult<PageResult<MemberPointRecordRespVO>> getRecordPage(@Valid MemberPointRecordPageReqVO pageVO) {
PageResult<MemberPointRecordDO> pageResult = recordService.getRecordPage(pageVO);
return success(MemberPointRecordConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出用户积分记录 Excel")
@PreAuthorize("@ss.hasPermission('point:record:export')")
@OperateLog(type = EXPORT)
public void exportRecordExcel(@Valid MemberPointRecordExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<MemberPointRecordDO> list = recordService.getRecordList(exportReqVO);
// 导出 Excel
List<MemberPointRecordExcelVO> datas = MemberPointRecordConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "用户积分记录.xls", "数据", MemberPointRecordExcelVO.class, datas);
}
}

View File

@ -12,6 +12,8 @@ import java.math.BigDecimal;
@Data
public class MemberPointConfigBaseVO {
private Long id;
@Schema(description = "积分抵扣开关", required = true, example = "true")
private Boolean tradeDeductEnable;

View File

@ -0,0 +1,64 @@
package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* 用户积分记录 Base VO提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
*/
@Data
public class MemberPointRecordBaseVO {
@Schema(description = "业务编码", example = "22706")
@NotNull(message = "业务编码不能为空")
private String bizId;
@Schema(description = "业务类型", example = "1")
@NotNull(message = "业务类型不能为空")
private String bizType;
@Schema(description = "1增加 0扣减", example = "1")
@NotNull(message = "操作类型不能为空")
private String type;
@Schema(description = "积分标题")
@NotNull(message = "积分标题不能为空")
private String title;
@Schema(description = "积分描述", example = "你猜")
private String description;
@Schema(description = "积分")
@NotNull(message = "操作积分不能为空")
private Integer point;
@Schema(description = "变动后的积分", requiredMode = Schema.RequiredMode.REQUIRED)
// @NotNull(message = "变动后的积分不能为空")
private Integer totalPoint;
@Schema(description = "状态1-订单创建2-冻结期3-完成4-失效(订单退款) ", example = "1")
@NotNull(message = "积分状态不能为空")
private Integer status;
@Schema(description = "用户id", example = "31169")
@NotNull(message = "用户ID不能为空")
private Integer userId;
@Schema(description = "冻结时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@NotNull(message = "冻结时间不能为空")
private LocalDateTime freezingTime;
@Schema(description = "解冻时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@NotNull(message = "解冻时间不能为空")
private LocalDateTime thawingTime;
}

View File

@ -0,0 +1,12 @@
package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "管理后台 - 用户积分记录创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MemberPointRecordCreateReqVO extends MemberPointRecordBaseVO {
}

View File

@ -0,0 +1,61 @@
package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;
import lombok.*;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
/**
* 用户积分记录 Excel VO
*
* @author QingX
*/
@Data
public class MemberPointRecordExcelVO {
@ExcelProperty("自增主键")
private Long id;
@ExcelProperty("业务编码")
private String bizId;
@ExcelProperty(value = "业务类型", converter = DictConvert.class)
@DictFormat("biz_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String bizType;
@ExcelProperty("1增加 0扣减")
private String type;
@ExcelProperty("积分标题")
private String title;
@ExcelProperty("积分描述")
private String description;
@ExcelProperty("积分")
private Integer point;
@ExcelProperty("变动后的积分")
private Integer totalPoint;
@ExcelProperty(value = "状态1-订单创建2-冻结期3-完成4-失效(订单退款) ", converter = DictConvert.class)
@DictFormat("point_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private Integer status;
@ExcelProperty("用户id")
private Integer userId;
@ExcelProperty("冻结时间")
private LocalDateTime freezingTime;
@ExcelProperty("解冻时间")
private LocalDateTime thawingTime;
@ExcelProperty("发生时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,25 @@
package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "管理后台 - 用户积分记录 Excel 导出 Request VO参数和 PointRecordPageReqVO 是一致的")
@Data
public class MemberPointRecordExportReqVO {
@Schema(description = "业务编码", example = "22706")
private String bizId;
@Schema(description = "业务类型", example = "1")
private String bizType;
@Schema(description = "1增加 0扣减", example = "1")
private String type;
@Schema(description = "积分标题")
private String title;
@Schema(description = "状态1-订单创建2-冻结期3-完成4-失效(订单退款) ", example = "1")
private Integer status;
}

View File

@ -0,0 +1,28 @@
package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
@Schema(description = "管理后台 - 用户积分记录分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MemberPointRecordPageReqVO extends PageParam {
@Schema(description = "业务编码", example = "22706")
private String bizId;
@Schema(description = "业务类型", example = "1")
private String bizType;
@Schema(description = "1增加 0扣减", example = "1")
private String type;
@Schema(description = "积分标题")
private String title;
@Schema(description = "状态1-订单创建2-冻结期3-完成4-失效(订单退款) ", example = "1")
private Integer status;
}

View File

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 用户积分记录 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MemberPointRecordRespVO extends MemberPointRecordBaseVO {
@Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31457")
private Long id;
@Schema(description = "发生时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 用户积分记录更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MemberPointRecordUpdateReqVO extends MemberPointRecordBaseVO {
@Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31457")
@NotNull(message = "自增主键不能为空")
private Long id;
}

View File

@ -1 +0,0 @@
package cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod;

View File

@ -0,0 +1,99 @@
package cn.iocoder.yudao.module.member.controller.admin.signin;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
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.signin.vo.*;
import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
import cn.iocoder.yudao.module.member.service.signin.MemberSignInConfigService;
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.Collection;
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("/point/sign-in-config")
@Validated
public class MemberSignInConfigController {
@Resource
private MemberSignInConfigService memberSignInConfigService;
@PostMapping("/create")
@Operation(summary = "创建积分签到规则")
@PreAuthorize("@ss.hasPermission('point:sign-in-config:create')")
public CommonResult<Integer> createSignInConfig(@Valid @RequestBody MemberSignInConfigCreateReqVO createReqVO) {
return success(memberSignInConfigService.createSignInConfig(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新积分签到规则")
@PreAuthorize("@ss.hasPermission('point:sign-in-config:update')")
public CommonResult<Boolean> updateSignInConfig(@Valid @RequestBody MemberSignInConfigUpdateReqVO updateReqVO) {
memberSignInConfigService.updateSignInConfig(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除积分签到规则")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('point:sign-in-config:delete')")
public CommonResult<Boolean> deleteSignInConfig(@RequestParam("id") Integer id) {
memberSignInConfigService.deleteSignInConfig(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得积分签到规则")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('point:sign-in-config:query')")
public CommonResult<MemberSignInConfigRespVO> getSignInConfig(@RequestParam("id") Integer id) {
MemberSignInConfigDO signInConfig = memberSignInConfigService.getSignInConfig(id);
return success(MemberSignInConfigConvert.INSTANCE.convert(signInConfig));
}
@GetMapping("/list")
@Operation(summary = "获得积分签到规则列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('point:sign-in-config:query')")
public CommonResult<List<MemberSignInConfigRespVO>> getSignInConfigList(@RequestParam("ids") Collection<Integer> ids) {
List<MemberSignInConfigDO> list = memberSignInConfigService.getSignInConfigList(ids);
return success(MemberSignInConfigConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得积分签到规则分页")
@PreAuthorize("@ss.hasPermission('point:sign-in-config:query')")
public CommonResult<PageResult<MemberSignInConfigRespVO>> getSignInConfigPage(@Valid MemberSignInConfigPageReqVO pageVO) {
PageResult<MemberSignInConfigDO> pageResult = memberSignInConfigService.getSignInConfigPage(pageVO);
return success(MemberSignInConfigConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出积分签到规则 Excel")
@PreAuthorize("@ss.hasPermission('point:sign-in-config:export')")
@OperateLog(type = EXPORT)
public void exportSignInConfigExcel(@Valid MemberSignInConfigExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<MemberSignInConfigDO> list = memberSignInConfigService.getSignInConfigList(exportReqVO);
// 导出 Excel
List<MemberSignInConfigExcelVO> datas = MemberSignInConfigConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "积分签到规则.xls", "数据", MemberSignInConfigExcelVO.class, datas);
}
}

View File

@ -0,0 +1,84 @@
package cn.iocoder.yudao.module.member.controller.admin.signin;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
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.signin.vo.*;
import cn.iocoder.yudao.module.member.convert.signin.MemberSignInRecordConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
import cn.iocoder.yudao.module.member.service.signin.MemberSignInRecordService;
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.Collection;
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("/point/sign-in-record")
@Validated
public class MemberSignInRecordController {
@Resource
private MemberSignInRecordService memberSignInRecordService;
@DeleteMapping("/delete")
@Operation(summary = "删除用户签到积分")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('point:sign-in-record:delete')")
public CommonResult<Boolean> deleteSignInRecord(@RequestParam("id") Long id) {
memberSignInRecordService.deleteSignInRecord(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得用户签到积分")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('point:sign-in-record:query')")
public CommonResult<MemberSignInRecordRespVO> getSignInRecord(@RequestParam("id") Long id) {
MemberSignInRecordDO signInRecord = memberSignInRecordService.getSignInRecord(id);
return success(MemberSignInRecordConvert.INSTANCE.convert(signInRecord));
}
@GetMapping("/list")
@Operation(summary = "获得用户签到积分列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('point:sign-in-record:query')")
public CommonResult<List<MemberSignInRecordRespVO>> getSignInRecordList(@RequestParam("ids") Collection<Long> ids) {
List<MemberSignInRecordDO> list = memberSignInRecordService.getSignInRecordList(ids);
return success(MemberSignInRecordConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得用户签到积分分页")
@PreAuthorize("@ss.hasPermission('point:sign-in-record:query')")
public CommonResult<PageResult<MemberSignInRecordRespVO>> getSignInRecordPage(@Valid MemberSignInRecordPageReqVO pageVO) {
PageResult<MemberSignInRecordDO> pageResult = memberSignInRecordService.getSignInRecordPage(pageVO);
return success(MemberSignInRecordConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出用户签到积分 Excel")
@PreAuthorize("@ss.hasPermission('point:sign-in-record:export')")
@OperateLog(type = EXPORT)
public void exportSignInRecordExcel(@Valid MemberSignInRecordExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<MemberSignInRecordDO> list = memberSignInRecordService.getSignInRecordList(exportReqVO);
// 导出 Excel
List<MemberSignInRecordExcelVO> datas = MemberSignInRecordConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "用户签到积分.xls", "数据", MemberSignInRecordExcelVO.class, datas);
}
}

View File

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
/**
* 积分签到规则 Base VO提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
*/
@Data
public class MemberSignInConfigBaseVO {
@Schema(description = "签到第x天", example = "7")
private Integer day;
@Schema(description = "签到天数对应分数", example = "10")
private Integer point;
}

View File

@ -0,0 +1,12 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "管理后台 - 积分签到规则创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MemberSignInConfigCreateReqVO extends MemberSignInConfigBaseVO {
}

View File

@ -0,0 +1,26 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import lombok.*;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
/**
* 积分签到规则 Excel VO
*
* @author QingX
*/
@Data
public class MemberSignInConfigExcelVO {
@ExcelProperty("签到第x天")
private Integer day;
@ExcelProperty("签到天数对应分数")
private Integer point;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "管理后台 - 积分签到规则 Excel 导出 Request VO参数和 SignInConfigPageReqVO 是一致的")
@Data
public class MemberSignInConfigExportReqVO {
@Schema(description = "签到第x天", example = "7")
private Integer day;
}

View File

@ -0,0 +1,16 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
@Schema(description = "管理后台 - 积分签到规则分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MemberSignInConfigPageReqVO extends PageParam {
@Schema(description = "签到第x天", example = "7")
private Integer day;
}

View File

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 积分签到规则 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MemberSignInConfigRespVO extends MemberSignInConfigBaseVO {
@Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "20937")
private Integer id;
@Schema(description = "创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 积分签到规则更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MemberSignInConfigUpdateReqVO extends MemberSignInConfigBaseVO {
@Schema(description = "规则自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13653")
@NotNull(message = "规则自增主键不能为空")
private Integer id;
}

View File

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 用户签到积分 Base VO提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
*/
@Data
public class MemberSignInRecordBaseVO {
@Schema(description = "签到用户", example = "6507")
private Integer userId;
@Schema(description = "第几天签到")
private Integer day;
@Schema(description = "签到的分数")
private Integer point;
}

View File

@ -0,0 +1,14 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Schema(description = "管理后台 - 用户签到积分创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MemberSignInRecordCreateReqVO extends MemberSignInRecordBaseVO {
}

View File

@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 用户签到积分 Excel VO
*
* @author 芋道源码
*/
@Data
public class MemberSignInRecordExcelVO {
@ExcelProperty("签到自增id")
private Long id;
@ExcelProperty("签到用户")
private Integer userId;
@ExcelProperty("第几天签到")
private Integer day;
@ExcelProperty("签到的分数")
private Integer point;
@ExcelProperty("签到时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,25 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
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 = "管理后台 - 用户签到积分 Excel 导出 Request VO参数和 SignInRecordPageReqVO 是一致的")
@Data
public class MemberSignInRecordExportReqVO {
@Schema(description = "签到用户", example = "6507")
private Integer userId;
@Schema(description = "第几天签到")
private Integer day;
@Schema(description = "签到时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.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 MemberSignInRecordPageReqVO extends PageParam {
@Schema(description = "签到用户", example = "6507")
private Integer userId;
@Schema(description = "第几天签到")
private Integer day;
@Schema(description = "签到时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 用户签到积分 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MemberSignInRecordRespVO extends MemberSignInRecordBaseVO {
@Schema(description = "签到自增id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11903")
private Long id;
@Schema(description = "签到时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.member.controller.admin.signin.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 用户签到积分更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MemberSignInRecordUpdateReqVO extends MemberSignInRecordBaseVO {
@Schema(description = "签到自增id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11903")
@NotNull(message = "签到自增id不能为空")
private Long id;
}

View File

@ -1,7 +1,10 @@
package cn.iocoder.yudao.module.member.convert.point;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.config.MemberPointConfigRespVO;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.config.MemberPointConfigSaveReqVO;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordUpdateReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointConfigDO;
import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@ -17,4 +20,7 @@ public interface MemberPointConfigConvert {
MemberPointConfigRespVO convert(MemberPointConfigDO bean);
MemberPointConfigDO convert(MemberPointConfigSaveReqVO bean);
}

View File

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.member.convert.point;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordCreateReqVO;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordExcelVO;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordRespVO;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordUpdateReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
/**
* 用户积分记录 Convert
*
* @author QingX
*/
@Mapper
public interface MemberPointRecordConvert {
MemberPointRecordConvert INSTANCE = Mappers.getMapper(MemberPointRecordConvert.class);
MemberPointRecordDO convert(MemberPointRecordCreateReqVO bean);
MemberPointRecordDO convert(MemberPointRecordUpdateReqVO bean);
MemberPointRecordRespVO convert(MemberPointRecordDO bean);
List<MemberPointRecordRespVO> convertList(List<MemberPointRecordDO> list);
PageResult<MemberPointRecordRespVO> convertPage(PageResult<MemberPointRecordDO> page);
List<MemberPointRecordExcelVO> convertList02(List<MemberPointRecordDO> list);
}

View File

@ -0,0 +1,34 @@
package cn.iocoder.yudao.module.member.convert.signin;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.*;
/**
* 积分签到规则 Convert
*
* @author QingX
*/
@Mapper
public interface MemberSignInConfigConvert {
MemberSignInConfigConvert INSTANCE = Mappers.getMapper(MemberSignInConfigConvert.class);
MemberSignInConfigDO convert(MemberSignInConfigCreateReqVO bean);
MemberSignInConfigDO convert(MemberSignInConfigUpdateReqVO bean);
MemberSignInConfigRespVO convert(MemberSignInConfigDO bean);
List<MemberSignInConfigRespVO> convertList(List<MemberSignInConfigDO> list);
PageResult<MemberSignInConfigRespVO> convertPage(PageResult<MemberSignInConfigDO> page);
List<MemberSignInConfigExcelVO> convertList02(List<MemberSignInConfigDO> list);
}

View File

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.member.convert.signin;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordCreateReqVO;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordExcelVO;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordRespVO;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordUpdateReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
/**
* 用户签到积分 Convert
*
* @author 芋道源码
*/
@Mapper
public interface MemberSignInRecordConvert {
MemberSignInRecordConvert INSTANCE = Mappers.getMapper(MemberSignInRecordConvert.class);
MemberSignInRecordDO convert(MemberSignInRecordCreateReqVO bean);
MemberSignInRecordDO convert(MemberSignInRecordUpdateReqVO bean);
MemberSignInRecordRespVO convert(MemberSignInRecordDO bean);
List<MemberSignInRecordRespVO> convertList(List<MemberSignInRecordDO> list);
PageResult<MemberSignInRecordRespVO> convertPage(PageResult<MemberSignInRecordDO> page);
List<MemberSignInRecordExcelVO> convertList02(List<MemberSignInRecordDO> list);
}

View File

@ -0,0 +1,81 @@
package cn.iocoder.yudao.module.member.dal.dataobject.point;
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.time.LocalDateTime;
/**
* 用户积分记录 DO
*
* @author QingX
*/
@TableName("member_point_record")
@KeySequence("member_point_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MemberPointRecordDO extends BaseDO {
/**
* 自增主键
*/
@TableId
private Long id;
/**
* 业务编码
*/
private String bizId;
/**
* 业务类型
*
* 枚举 {@link TODO biz_type 对应的类}
*/
private String bizType;
/**
* 1增加 0扣减
*/
private String type;
/**
* 积分标题
*/
private String title;
/**
* 积分描述
*/
private String description;
/**
* 积分
*/
private Integer point;
/**
* 变动后的积分
*/
private Integer totalPoint;
/**
* 状态1-订单创建2-冻结期3-完成4-失效(订单退款)
*
* 枚举 {@link TODO point_status 对应的类}
*/
private Integer status;
/**
* 用户id
*/
private Integer userId;
/**
* 冻结时间
*/
private LocalDateTime freezingTime;
/**
* 解冻时间
*/
private LocalDateTime thawingTime;
}

View File

@ -0,0 +1,38 @@
package cn.iocoder.yudao.module.member.dal.dataobject.signin;
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 QingX
*/
@TableName("member_sign_in_config")
@KeySequence("member_sign_in_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MemberSignInConfigDO extends BaseDO {
/**
* 规则自增主键
*/
@TableId
private Integer id;
/**
* 签到第x天
*/
private Integer day;
/**
* 签到天数对应分数
*/
private Integer point;
}

View File

@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.member.dal.dataobject.signin;
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_sign_in_record")
@KeySequence("member_sign_in_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MemberSignInRecordDO extends BaseDO {
/**
* 签到自增id
*/
@TableId
private Long id;
/**
* 签到用户
*/
private Integer userId;
/**
* 第几天签到
*/
private Integer day;
/**
* 签到的分数
*/
private Integer point;
}

View File

@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.member.dal.mysql.point;
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.point.vo.recrod.MemberPointRecordExportReqVO;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 用户积分记录 Mapper
*
* @author QingX
*/
@Mapper
public interface MemberPointRecordMapper extends BaseMapperX<MemberPointRecordDO> {
default PageResult<MemberPointRecordDO> selectPage(MemberPointRecordPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MemberPointRecordDO>()
.eqIfPresent(MemberPointRecordDO::getBizId, reqVO.getBizId())
.eqIfPresent(MemberPointRecordDO::getBizType, reqVO.getBizType())
.eqIfPresent(MemberPointRecordDO::getType, reqVO.getType())
.eqIfPresent(MemberPointRecordDO::getTitle, reqVO.getTitle())
.eqIfPresent(MemberPointRecordDO::getStatus, reqVO.getStatus())
.orderByDesc(MemberPointRecordDO::getId));
}
default List<MemberPointRecordDO> selectList(MemberPointRecordExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<MemberPointRecordDO>()
.eqIfPresent(MemberPointRecordDO::getBizId, reqVO.getBizId())
.eqIfPresent(MemberPointRecordDO::getBizType, reqVO.getBizType())
.eqIfPresent(MemberPointRecordDO::getType, reqVO.getType())
.eqIfPresent(MemberPointRecordDO::getTitle, reqVO.getTitle())
.eqIfPresent(MemberPointRecordDO::getStatus, reqVO.getStatus())
.orderByDesc(MemberPointRecordDO::getId));
}
}

View File

@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.member.dal.mysql.signin;
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.signin.vo.MemberSignInConfigExportReqVO;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 积分签到规则 Mapper
*
* @author QingX
*/
@Mapper
public interface MemberSignInConfigMapper extends BaseMapperX<MemberSignInConfigDO> {
default PageResult<MemberSignInConfigDO> selectPage(MemberSignInConfigPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MemberSignInConfigDO>()
.eqIfPresent(MemberSignInConfigDO::getDay, reqVO.getDay())
.orderByAsc(MemberSignInConfigDO::getDay));
}
default List<MemberSignInConfigDO> selectList(MemberSignInConfigExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<MemberSignInConfigDO>()
.eqIfPresent(MemberSignInConfigDO::getDay, reqVO.getDay())
.orderByDesc(MemberSignInConfigDO::getId));
}
//
default long selectSameDayNotSelf(MemberSignInConfigUpdateReqVO reqVO){
return selectCount(new LambdaQueryWrapperX <MemberSignInConfigDO>()
.ne(MemberSignInConfigDO::getId, reqVO.getId())
.eq(MemberSignInConfigDO::getDay,reqVO.getDay())
);
}
}

View File

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.member.dal.mysql.signin;
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.signin.vo.MemberSignInRecordExportReqVO;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 用户签到积分 Mapper
*
* @author 芋道源码
*/
@Mapper
public interface MemberSignInRecordMapper extends BaseMapperX<MemberSignInRecordDO> {
default PageResult<MemberSignInRecordDO> selectPage(MemberSignInRecordPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MemberSignInRecordDO>()
.eqIfPresent(MemberSignInRecordDO::getUserId, reqVO.getUserId())
.eqIfPresent(MemberSignInRecordDO::getDay, reqVO.getDay())
.betweenIfPresent(MemberSignInRecordDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MemberSignInRecordDO::getId));
}
default List<MemberSignInRecordDO> selectList(MemberSignInRecordExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<MemberSignInRecordDO>()
.eqIfPresent(MemberSignInRecordDO::getUserId, reqVO.getUserId())
.eqIfPresent(MemberSignInRecordDO::getDay, reqVO.getDay())
.betweenIfPresent(MemberSignInRecordDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MemberSignInRecordDO::getId));
}
}

View File

@ -1,12 +1,15 @@
package cn.iocoder.yudao.module.member.service.point;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.config.MemberPointConfigSaveReqVO;
import cn.iocoder.yudao.module.member.convert.point.MemberPointConfigConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointConfigDO;
import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
import cn.iocoder.yudao.module.member.dal.mysql.point.MemberPointConfigMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.List;
/**
* 会员积分配置 Service 实现类
@ -18,16 +21,23 @@ import javax.annotation.Resource;
public class MemberPointConfigServiceImpl implements MemberPointConfigService {
@Resource
private MemberPointConfigMapper memberPointConfigMapper;
private MemberPointConfigMapper pointConfigMapper;
@Override
public void saveConfig(MemberPointConfigSaveReqVO saveReqVO) {
// TODO qingx配置存在则 update不存在则 insert
long total = pointConfigMapper.selectCount();
MemberPointConfigDO pointConfigDO = MemberPointConfigConvert.INSTANCE.convert(saveReqVO);
//大于0存在记录则更新否则插入
if (total > 0) {
pointConfigMapper.updateById(pointConfigDO);
} else {
pointConfigMapper.insert(pointConfigDO);
}
}
@Override
public MemberPointConfigDO getConfig() {
// TODO qingx直接查询到一条
return null;
List <MemberPointConfigDO> list = pointConfigMapper.selectList();
return list == null ? null : list.get(0);
}
}

View File

@ -0,0 +1,63 @@
package cn.iocoder.yudao.module.member.service.point;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordCreateReqVO;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordExportReqVO;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordUpdateReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
/**
* 用户积分记录 Service 接口
*
* @author QingX
*/
public interface MemberPointRecordService {
/**
* 更新用户积分记录
*
* @param updateReqVO 更新信息
*/
void updateRecord(@Valid MemberPointRecordUpdateReqVO updateReqVO);
/**
* 获得用户积分记录
*
* @param id 编号
* @return 用户积分记录
*/
MemberPointRecordDO getRecord(Long id);
/**
* 获得用户积分记录列表
*
* @param ids 编号
* @return 用户积分记录列表
*/
List<MemberPointRecordDO> getRecordList(Collection<Long> ids);
/**
* 获得用户积分记录分页
*
* @param pageReqVO 分页查询
* @return 用户积分记录分页
*/
PageResult<MemberPointRecordDO> getRecordPage(MemberPointRecordPageReqVO pageReqVO);
/**
* 获得用户积分记录列表, 用于 Excel 导出
*
* @param exportReqVO 查询条件
* @return 用户积分记录列表
*/
List<MemberPointRecordDO> getRecordList(MemberPointRecordExportReqVO exportReqVO);
}

View File

@ -0,0 +1,70 @@
package cn.iocoder.yudao.module.member.service.point;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordCreateReqVO;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordExportReqVO;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.point.vo.recrod.MemberPointRecordUpdateReqVO;
import cn.iocoder.yudao.module.member.convert.point.MemberPointRecordConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointRecordDO;
import cn.iocoder.yudao.module.member.dal.mysql.point.MemberPointRecordMapper;
import cn.iocoder.yudao.module.member.enums.ErrorCodeConstants;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
/**
* 用户积分记录 Service 实现类
*
* @author QingX
*/
@Service
@Validated
public class MemberPointRecordServiceImpl implements MemberPointRecordService {
@Resource
private MemberPointRecordMapper recordMapper;
@Override
public void updateRecord(MemberPointRecordUpdateReqVO updateReqVO) {
// 校验存在
validateRecordExists(updateReqVO.getId());
// 更新
MemberPointRecordDO updateObj = MemberPointRecordConvert.INSTANCE.convert(updateReqVO);
recordMapper.updateById(updateObj);
}
private void validateRecordExists(Long id) {
if (recordMapper.selectById(id) == null) {
throw exception(ErrorCodeConstants.RECORD_NOT_EXISTS);
}
}
@Override
public MemberPointRecordDO getRecord(Long id) {
return recordMapper.selectById(id);
}
@Override
public List<MemberPointRecordDO> getRecordList(Collection<Long> ids) {
return recordMapper.selectBatchIds(ids);
}
@Override
public PageResult<MemberPointRecordDO> getRecordPage(MemberPointRecordPageReqVO pageReqVO) {
return recordMapper.selectPage(pageReqVO);
}
@Override
public List<MemberPointRecordDO> getRecordList(MemberPointRecordExportReqVO exportReqVO) {
return recordMapper.selectList(exportReqVO);
}
}

View File

@ -0,0 +1,74 @@
package cn.iocoder.yudao.module.member.service.signin;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigCreateReqVO;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigExportReqVO;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInConfigUpdateReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
/**
* 积分签到规则 Service 接口
*
* @author QingX
*/
public interface MemberSignInConfigService {
/**
* 创建积分签到规则
*
* @param createReqVO 创建信息
* @return 编号
*/
Integer createSignInConfig(@Valid MemberSignInConfigCreateReqVO createReqVO);
/**
* 更新积分签到规则
*
* @param updateReqVO 更新信息
*/
void updateSignInConfig(@Valid MemberSignInConfigUpdateReqVO updateReqVO);
/**
* 删除积分签到规则
*
* @param id 编号
*/
void deleteSignInConfig(Integer id);
/**
* 获得积分签到规则
*
* @param id 编号
* @return 积分签到规则
*/
MemberSignInConfigDO getSignInConfig(Integer id);
/**
* 获得积分签到规则列表
*
* @param ids 编号
* @return 积分签到规则列表
*/
List<MemberSignInConfigDO> getSignInConfigList(Collection<Integer> ids);
/**
* 获得积分签到规则分页
*
* @param pageReqVO 分页查询
* @return 积分签到规则分页
*/
PageResult<MemberSignInConfigDO> getSignInConfigPage(MemberSignInConfigPageReqVO pageReqVO);
/**
* 获得积分签到规则列表, 用于 Excel 导出
*
* @param exportReqVO 查询条件
* @return 积分签到规则列表
*/
List<MemberSignInConfigDO> getSignInConfigList(MemberSignInConfigExportReqVO exportReqVO);
}

View File

@ -0,0 +1,103 @@
package cn.iocoder.yudao.module.member.service.signin;
import cn.iocoder.yudao.module.member.service.signin.MemberSignInConfigService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInConfigDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.convert.signin.MemberSignInConfigConvert;
import cn.iocoder.yudao.module.member.dal.mysql.signin.MemberSignInConfigMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
/**
* 积分签到规则 Service 实现类
*
* @author QingX
*/
@Service
@Validated
public class MemberSignInConfigServiceImpl implements MemberSignInConfigService {
@Resource
private MemberSignInConfigMapper memberSignInConfigMapper;
@Override
public Integer createSignInConfig(MemberSignInConfigCreateReqVO createReqVO) {
// 插入
MemberSignInConfigDO signInConfig = MemberSignInConfigConvert.INSTANCE.convert(createReqVO);
//判断是否重复插入签到天数
validateSignInConfigExistsDay(signInConfig.getDay());
memberSignInConfigMapper.insert(signInConfig);
// 返回
return signInConfig.getId();
}
@Override
public void updateSignInConfig(MemberSignInConfigUpdateReqVO updateReqVO) {
// 校验存在
validateSignInConfigExists(updateReqVO.getId());
//判断是否重复插入签到天数
validateSignInConfigSameDayNotSelf(updateReqVO);
// 判断更新的
MemberSignInConfigDO updateObj = MemberSignInConfigConvert.INSTANCE.convert(updateReqVO);
memberSignInConfigMapper.updateById(updateObj);
}
@Override
public void deleteSignInConfig(Integer id) {
// 校验存在
validateSignInConfigExists(id);
// 删除
memberSignInConfigMapper.deleteById(id);
}
private void validateSignInConfigExists(Integer id) {
if (memberSignInConfigMapper.selectById(id) == null) {
throw exception(SIGN_IN_CONFIG_NOT_EXISTS);
}
}
//根据签到天数判断是否存在一个相同的天数
private void validateSignInConfigExistsDay(Integer day) {
if (memberSignInConfigMapper.selectCount(MemberSignInConfigDO::getDay,day)>0) {
throw exception(SIGN_IN_CONFIG_EXISTS);
}
}
//更新天数时判断是否有重复的天数,需要去除自己
private void validateSignInConfigSameDayNotSelf(MemberSignInConfigUpdateReqVO reqVO) {
if (memberSignInConfigMapper.selectSameDayNotSelf(reqVO)>0) {
throw exception(SIGN_IN_CONFIG_EXISTS);
}
}
@Override
public MemberSignInConfigDO getSignInConfig(Integer id) {
return memberSignInConfigMapper.selectById(id);
}
@Override
public List<MemberSignInConfigDO> getSignInConfigList(Collection<Integer> ids) {
return memberSignInConfigMapper.selectBatchIds(ids);
}
@Override
public PageResult<MemberSignInConfigDO> getSignInConfigPage(MemberSignInConfigPageReqVO pageReqVO) {
return memberSignInConfigMapper.selectPage(pageReqVO);
}
@Override
public List<MemberSignInConfigDO> getSignInConfigList(MemberSignInConfigExportReqVO exportReqVO) {
return memberSignInConfigMapper.selectList(exportReqVO);
}
}

View File

@ -0,0 +1,57 @@
package cn.iocoder.yudao.module.member.service.signin;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
/**
* 用户签到积分 Service 接口
*
* @author 芋道源码
*/
public interface MemberSignInRecordService {
/**
* 删除用户签到积分
*
* @param id 编号
*/
void deleteSignInRecord(Long id);
/**
* 获得用户签到积分
*
* @param id 编号
* @return 用户签到积分
*/
MemberSignInRecordDO getSignInRecord(Long id);
/**
* 获得用户签到积分列表
*
* @param ids 编号
* @return 用户签到积分列表
*/
List<MemberSignInRecordDO> getSignInRecordList(Collection<Long> ids);
/**
* 获得用户签到积分分页
*
* @param pageReqVO 分页查询
* @return 用户签到积分分页
*/
PageResult<MemberSignInRecordDO> getSignInRecordPage(MemberSignInRecordPageReqVO pageReqVO);
/**
* 获得用户签到积分列表, 用于 Excel 导出
*
* @param exportReqVO 查询条件
* @return 用户签到积分列表
*/
List<MemberSignInRecordDO> getSignInRecordList(MemberSignInRecordExportReqVO exportReqVO);
}

View File

@ -0,0 +1,67 @@
package cn.iocoder.yudao.module.member.service.signin;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordCreateReqVO;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordExportReqVO;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.signin.vo.MemberSignInRecordUpdateReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.signin.MemberSignInRecordDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.convert.signin.MemberSignInRecordConvert;
import cn.iocoder.yudao.module.member.dal.mysql.signin.MemberSignInRecordMapper;
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 MemberSignInRecordServiceImpl implements MemberSignInRecordService {
@Resource
private MemberSignInRecordMapper memberSignInRecordMapper;
@Override
public void deleteSignInRecord(Long id) {
// 校验存在
validateSignInRecordExists(id);
// 删除
memberSignInRecordMapper.deleteById(id);
}
private void validateSignInRecordExists(Long id) {
if (memberSignInRecordMapper.selectById(id) == null) {
throw exception(SIGN_IN_RECORD_NOT_EXISTS);
}
}
@Override
public MemberSignInRecordDO getSignInRecord(Long id) {
return memberSignInRecordMapper.selectById(id);
}
@Override
public List<MemberSignInRecordDO> getSignInRecordList(Collection<Long> ids) {
return memberSignInRecordMapper.selectBatchIds(ids);
}
@Override
public PageResult<MemberSignInRecordDO> getSignInRecordPage(MemberSignInRecordPageReqVO pageReqVO) {
return memberSignInRecordMapper.selectPage(pageReqVO);
}
@Override
public List<MemberSignInRecordDO> getSignInRecordList(MemberSignInRecordExportReqVO exportReqVO) {
return memberSignInRecordMapper.selectList(exportReqVO);
}
}