This commit is contained in:
zt
2024-12-12 14:52:36 +08:00
parent 4232eefa0f
commit 7acf7c7b30
20 changed files with 928 additions and 2 deletions

View File

@ -164,5 +164,9 @@ public interface ErrorCodeConstants {
ErrorCode TIME_NOT_SATISFY = new ErrorCode(1_004_026_00, "27号后不能充值");
ErrorCode GROUP_COUNT_NOT_EXISTS = new ErrorCode(1_004_027_00, "用户分组充值统计不存在");
ErrorCode CONFIG_DATA_NOT_EXISTS = new ErrorCode(1_004_028_00, "配置数据不存在");
ErrorCode CONFIG_TYPE_NOT_EXISTS = new ErrorCode(1_004_029_00, "配置类型不存在");
}

View File

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.member.controller.admin.configdata;
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.configdata.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.configdata.ConfigDataDO;
import cn.iocoder.yudao.module.member.service.configdata.ConfigDataService;
@Tag(name = "管理后台 - 配置数据")
@RestController
@RequestMapping("/member/config-data")
@Validated
public class ConfigDataController {
@Resource
private ConfigDataService configDataService;
@PostMapping("/create")
@Operation(summary = "创建配置数据")
@PreAuthorize("@ss.hasPermission('member:config-data:create')")
public CommonResult<Long> createConfigData(@Valid @RequestBody ConfigDataSaveReqVO createReqVO) {
return success(configDataService.createConfigData(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新配置数据")
@PreAuthorize("@ss.hasPermission('member:config-data:update')")
public CommonResult<Boolean> updateConfigData(@Valid @RequestBody ConfigDataSaveReqVO updateReqVO) {
configDataService.updateConfigData(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除配置数据")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:config-data:delete')")
public CommonResult<Boolean> deleteConfigData(@RequestParam("id") Long id) {
configDataService.deleteConfigData(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得配置数据")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:config-data:query')")
public CommonResult<ConfigDataRespVO> getConfigData(@RequestParam("id") Long id) {
ConfigDataDO configData = configDataService.getConfigData(id);
return success(BeanUtils.toBean(configData, ConfigDataRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得配置数据分页")
@PreAuthorize("@ss.hasPermission('member:config-data:query')")
public CommonResult<PageResult<ConfigDataRespVO>> getConfigDataPage(@Valid ConfigDataPageReqVO pageReqVO) {
PageResult<ConfigDataDO> pageResult = configDataService.getConfigDataPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ConfigDataRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出配置数据 Excel")
@PreAuthorize("@ss.hasPermission('member:config-data:export')")
@OperateLog(type = EXPORT)
public void exportConfigDataExcel(@Valid ConfigDataPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ConfigDataDO> list = configDataService.getConfigDataPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "配置数据.xls", "数据", ConfigDataRespVO.class,
BeanUtils.toBean(list, ConfigDataRespVO.class));
}
}

View File

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.member.controller.admin.configdata.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 ConfigDataPageReqVO extends PageParam {
@Schema(description = "配置标签")
private String label;
@Schema(description = "配置键值")
private String value;
@Schema(description = "键值类型1-文本2-时间", example = "1")
private Integer valueType;
@Schema(description = "配置类型", example = "2")
private String dictType;
@Schema(description = "备注", example = "随便")
private String remark;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,44 @@
package cn.iocoder.yudao.module.member.controller.admin.configdata.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 配置数据 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ConfigDataRespVO {
@Schema(description = "字典编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "5829")
@ExcelProperty("字典编码")
private Long id;
@Schema(description = "配置标签", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("配置标签")
private String label;
@Schema(description = "配置键值", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("配置键值")
private String value;
@Schema(description = "键值类型1-文本2-时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("键值类型1-文本2-时间")
private Integer valueType;
@Schema(description = "配置类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("配置类型")
private String dictType;
@Schema(description = "备注", example = "随便")
@ExcelProperty("备注")
private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,34 @@
package cn.iocoder.yudao.module.member.controller.admin.configdata.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 ConfigDataSaveReqVO {
@Schema(description = "字典编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "5829")
private Long id;
@Schema(description = "配置标签", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "配置标签不能为空")
private String label;
@Schema(description = "配置键值", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "配置键值不能为空")
private String value;
@Schema(description = "键值类型1-文本2-时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "键值类型1-文本2-时间不能为空")
private Integer valueType;
@Schema(description = "配置类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "配置类型不能为空")
private String dictType;
@Schema(description = "备注", example = "随便")
private String remark;
}

View File

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.member.controller.admin.configtype;
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.configtype.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.configtype.ConfigTypeDO;
import cn.iocoder.yudao.module.member.service.configtype.ConfigTypeService;
@Tag(name = "管理后台 - 配置类型")
@RestController
@RequestMapping("/member/config-type")
@Validated
public class ConfigTypeController {
@Resource
private ConfigTypeService configTypeService;
@PostMapping("/create")
@Operation(summary = "创建配置类型")
@PreAuthorize("@ss.hasPermission('member:config-type:create')")
public CommonResult<Long> createConfigType(@Valid @RequestBody ConfigTypeSaveReqVO createReqVO) {
return success(configTypeService.createConfigType(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新配置类型")
@PreAuthorize("@ss.hasPermission('member:config-type:update')")
public CommonResult<Boolean> updateConfigType(@Valid @RequestBody ConfigTypeSaveReqVO updateReqVO) {
configTypeService.updateConfigType(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除配置类型")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:config-type:delete')")
public CommonResult<Boolean> deleteConfigType(@RequestParam("id") Long id) {
configTypeService.deleteConfigType(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得配置类型")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:config-type:query')")
public CommonResult<ConfigTypeRespVO> getConfigType(@RequestParam("id") Long id) {
ConfigTypeDO configType = configTypeService.getConfigType(id);
return success(BeanUtils.toBean(configType, ConfigTypeRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得配置类型分页")
@PreAuthorize("@ss.hasPermission('member:config-type:query')")
public CommonResult<PageResult<ConfigTypeRespVO>> getConfigTypePage(@Valid ConfigTypePageReqVO pageReqVO) {
PageResult<ConfigTypeDO> pageResult = configTypeService.getConfigTypePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ConfigTypeRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出配置类型 Excel")
@PreAuthorize("@ss.hasPermission('member:config-type:export')")
@OperateLog(type = EXPORT)
public void exportConfigTypeExcel(@Valid ConfigTypePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ConfigTypeDO> list = configTypeService.getConfigTypePage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "配置类型.xls", "数据", ConfigTypeRespVO.class,
BeanUtils.toBean(list, ConfigTypeRespVO.class));
}
}

View File

@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.member.controller.admin.configtype.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 ConfigTypePageReqVO extends PageParam {
@Schema(description = "配置名称", example = "芋艿")
private String name;
@Schema(description = "配置类型", example = "1")
private String type;
@Schema(description = "备注", example = "随便")
private String remark;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,36 @@
package cn.iocoder.yudao.module.member.controller.admin.configtype.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 配置类型 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ConfigTypeRespVO {
@Schema(description = "字典主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19574")
@ExcelProperty("字典主键")
private Long id;
@Schema(description = "配置名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("配置名称")
private String name;
@Schema(description = "配置类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("配置类型")
private String type;
@Schema(description = "备注", example = "随便")
@ExcelProperty("备注")
private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,26 @@
package cn.iocoder.yudao.module.member.controller.admin.configtype.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 ConfigTypeSaveReqVO {
@Schema(description = "字典主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19574")
private Long id;
@Schema(description = "配置名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "配置名称不能为空")
private String name;
@Schema(description = "配置类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotEmpty(message = "配置类型不能为空")
private String type;
@Schema(description = "备注", example = "随便")
private String remark;
}

View File

@ -0,0 +1,46 @@
package cn.iocoder.yudao.module.member.controller.app.configdata;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.configdata.vo.ConfigDataRespVO;
import cn.iocoder.yudao.module.member.dal.dataobject.configdata.ConfigDataDO;
import cn.iocoder.yudao.module.member.service.configdata.ConfigDataService;
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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "APP - 配置数据")
@RestController
@RequestMapping("/member/config-data")
@Validated
public class AppConfigDataController {
@Resource
private ConfigDataService configDataService;
@GetMapping("/getList")
@Operation(summary = "获得配置数据")
public CommonResult<List<ConfigDataRespVO>> getConfigData(@RequestParam("dictType") String dictType) {
List<ConfigDataDO> configData = configDataService.getConfigDataList(dictType);
return success(BeanUtils.toBean(configData, ConfigDataRespVO.class));
}
@GetMapping("/getOne")
@Operation(summary = "获得配置数据")
public CommonResult<ConfigDataRespVO> getConfigData(@RequestParam("label") String label,@RequestParam("dictType") String dictType) {
ConfigDataDO configData = configDataService.getConfigData(label, dictType);
return success(BeanUtils.toBean(configData, ConfigDataRespVO.class));
}
}

View File

@ -1,6 +1,8 @@
package cn.iocoder.yudao.module.member.controller.app.storeorder;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@ -10,11 +12,14 @@ import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderR
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderDetailVo;
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderVO;
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto;
import cn.iocoder.yudao.module.member.dal.dataobject.configdata.ConfigDataDO;
import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO;
import cn.iocoder.yudao.module.member.enums.StoreOrderStatusEnum;
import cn.iocoder.yudao.module.member.service.async.MemberAsyncService;
import cn.iocoder.yudao.module.member.service.configdata.ConfigDataService;
import cn.iocoder.yudao.module.member.service.storeorder.StoreOrderService;
import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService;
import cn.iocoder.yudao.module.member.util.ConfigConstants;
import cn.iocoder.yudao.module.system.api.carteen.CarteenApi;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -28,9 +33,14 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.time.Duration;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
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.CONFIG_TYPE_NOT_EXISTS;
@Tag(name = "APP超市 - 商品订单")
@RestController
@ -46,6 +56,8 @@ public class AppStoreOrderController {
private CarteenApi carteenApi;
@Resource
private MemberAsyncService memberAsyncService;
@Resource
private ConfigDataService configDataService;
@GetMapping("/page")
@ -70,8 +82,7 @@ public class AppStoreOrderController {
@PostMapping("/appCreate")
@Operation(summary = "创建购物车订单")
public CommonResult<Boolean> appCreate(@RequestBody CardDto dto) {
checkTime();
AddReqVO addReqVO = storeOrderService.appCreate(dto);
//记录
memberAsyncService.batchRecord(addReqVO);
@ -131,4 +142,22 @@ public class AppStoreOrderController {
}
public void checkTime(){
String start = configDataService.getConfigData(ConfigConstants.START_TIME, ConfigConstants.BUY_PROHIBIT).getValue();
String end = configDataService.getConfigData(ConfigConstants.END_TIME, ConfigConstants.BUY_PROHIBIT).getValue();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime startTime = LocalTime.parse(start, formatter);
LocalTime endTime = LocalTime.parse(end, formatter);
LocalTime now = LocalTime.now();
Duration startToNow = Duration.between(startTime, now);
Duration startToEnd = Duration.between(startTime, endTime);
boolean isInRange = startToNow.isZero() ||!startToNow.isNegative() && startToNow.compareTo(startToEnd) <= 0;
if(isInRange){
String msg = String.format("购买失败,请在%s-%s之间购买", start, end);
throw exception(new ErrorCode(1_007_904_009, msg));
}
}
}

View File

@ -0,0 +1,51 @@
package cn.iocoder.yudao.module.member.dal.dataobject.configdata;
import lombok.*;
import java.util.*;
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_config_data")
@KeySequence("member_config_data_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ConfigDataDO extends BaseDO {
/**
* 字典编码
*/
@TableId
private Long id;
/**
* 配置标签
*/
private String label;
/**
* 配置键值
*/
private String value;
/**
* 键值类型1-文本2-时间
*/
private Integer valueType;
/**
* 配置类型
*/
private String dictType;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,43 @@
package cn.iocoder.yudao.module.member.dal.dataobject.configtype;
import lombok.*;
import java.util.*;
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_config_type")
@KeySequence("member_config_type_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ConfigTypeDO extends BaseDO {
/**
* 字典主键
*/
@TableId
private Long id;
/**
* 配置名称
*/
private String name;
/**
* 配置类型
*/
private String type;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.member.dal.mysql.configdata;
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.configdata.ConfigDataDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.member.controller.admin.configdata.vo.*;
/**
* 配置数据 Mapper
*
* @author 秦俊旗
*/
@Mapper
public interface ConfigDataMapper extends BaseMapperX<ConfigDataDO> {
default PageResult<ConfigDataDO> selectPage(ConfigDataPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ConfigDataDO>()
.eqIfPresent(ConfigDataDO::getLabel, reqVO.getLabel())
.eqIfPresent(ConfigDataDO::getValue, reqVO.getValue())
.eqIfPresent(ConfigDataDO::getValueType, reqVO.getValueType())
.eqIfPresent(ConfigDataDO::getDictType, reqVO.getDictType())
.eqIfPresent(ConfigDataDO::getRemark, reqVO.getRemark())
.betweenIfPresent(ConfigDataDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ConfigDataDO::getId));
}
}

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.member.dal.mysql.configtype;
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.configtype.ConfigTypeDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.member.controller.admin.configtype.vo.*;
/**
* 配置类型 Mapper
*
* @author 秦俊旗
*/
@Mapper
public interface ConfigTypeMapper extends BaseMapperX<ConfigTypeDO> {
default PageResult<ConfigTypeDO> selectPage(ConfigTypePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ConfigTypeDO>()
.likeIfPresent(ConfigTypeDO::getName, reqVO.getName())
.eqIfPresent(ConfigTypeDO::getType, reqVO.getType())
.eqIfPresent(ConfigTypeDO::getRemark, reqVO.getRemark())
.betweenIfPresent(ConfigTypeDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ConfigTypeDO::getId));
}
}

View File

@ -0,0 +1,58 @@
package cn.iocoder.yudao.module.member.service.configdata;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.member.controller.admin.configdata.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.configdata.ConfigDataDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
/**
* 配置数据 Service 接口
*
* @author 秦俊旗
*/
public interface ConfigDataService {
/**
* 创建配置数据
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createConfigData(@Valid ConfigDataSaveReqVO createReqVO);
/**
* 更新配置数据
*
* @param updateReqVO 更新信息
*/
void updateConfigData(@Valid ConfigDataSaveReqVO updateReqVO);
/**
* 删除配置数据
*
* @param id 编号
*/
void deleteConfigData(Long id);
/**
* 获得配置数据
*
* @param id 编号
* @return 配置数据
*/
ConfigDataDO getConfigData(Long id);
/**
* 获得配置数据分页
*
* @param pageReqVO 分页查询
* @return 配置数据分页
*/
PageResult<ConfigDataDO> getConfigDataPage(ConfigDataPageReqVO pageReqVO);
ConfigDataDO getConfigData(String label,String dictType);
List<ConfigDataDO> getConfigDataList(String dictType);
}

View File

@ -0,0 +1,86 @@
package cn.iocoder.yudao.module.member.service.configdata;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.module.member.controller.admin.configdata.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.configdata.ConfigDataDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.dal.mysql.configdata.ConfigDataMapper;
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 ConfigDataServiceImpl implements ConfigDataService {
@Resource
private ConfigDataMapper configDataMapper;
@Override
public Long createConfigData(ConfigDataSaveReqVO createReqVO) {
// 插入
ConfigDataDO configData = BeanUtils.toBean(createReqVO, ConfigDataDO.class);
configDataMapper.insert(configData);
// 返回
return configData.getId();
}
@Override
public void updateConfigData(ConfigDataSaveReqVO updateReqVO) {
// 校验存在
validateConfigDataExists(updateReqVO.getId());
// 更新
ConfigDataDO updateObj = BeanUtils.toBean(updateReqVO, ConfigDataDO.class);
configDataMapper.updateById(updateObj);
}
@Override
public void deleteConfigData(Long id) {
// 校验存在
validateConfigDataExists(id);
// 删除
configDataMapper.deleteById(id);
}
private void validateConfigDataExists(Long id) {
if (configDataMapper.selectById(id) == null) {
throw exception(CONFIG_DATA_NOT_EXISTS);
}
}
@Override
public ConfigDataDO getConfigData(Long id) {
return configDataMapper.selectById(id);
}
@Override
public PageResult<ConfigDataDO> getConfigDataPage(ConfigDataPageReqVO pageReqVO) {
return configDataMapper.selectPage(pageReqVO);
}
@Override
public ConfigDataDO getConfigData(String label, String dictType) {
return configDataMapper.selectOne(Wrappers.<ConfigDataDO>lambdaQuery()
.eq(ConfigDataDO::getLabel,label).eq(ConfigDataDO::getDictType,dictType));
}
@Override
public List<ConfigDataDO> getConfigDataList(String dictType) {
return configDataMapper.selectList(Wrappers.<ConfigDataDO>lambdaQuery()
.eq(ConfigDataDO::getDictType,dictType));
}
}

View File

@ -0,0 +1,55 @@
package cn.iocoder.yudao.module.member.service.configtype;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.member.controller.admin.configtype.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.configtype.ConfigTypeDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
/**
* 配置类型 Service 接口
*
* @author 秦俊旗
*/
public interface ConfigTypeService {
/**
* 创建配置类型
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createConfigType(@Valid ConfigTypeSaveReqVO createReqVO);
/**
* 更新配置类型
*
* @param updateReqVO 更新信息
*/
void updateConfigType(@Valid ConfigTypeSaveReqVO updateReqVO);
/**
* 删除配置类型
*
* @param id 编号
*/
void deleteConfigType(Long id);
/**
* 获得配置类型
*
* @param id 编号
* @return 配置类型
*/
ConfigTypeDO getConfigType(Long id);
/**
* 获得配置类型分页
*
* @param pageReqVO 分页查询
* @return 配置类型分页
*/
PageResult<ConfigTypeDO> getConfigTypePage(ConfigTypePageReqVO pageReqVO);
}

View File

@ -0,0 +1,74 @@
package cn.iocoder.yudao.module.member.service.configtype;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.module.member.controller.admin.configtype.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.configtype.ConfigTypeDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.dal.mysql.configtype.ConfigTypeMapper;
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 ConfigTypeServiceImpl implements ConfigTypeService {
@Resource
private ConfigTypeMapper configTypeMapper;
@Override
public Long createConfigType(ConfigTypeSaveReqVO createReqVO) {
// 插入
ConfigTypeDO configType = BeanUtils.toBean(createReqVO, ConfigTypeDO.class);
configTypeMapper.insert(configType);
// 返回
return configType.getId();
}
@Override
public void updateConfigType(ConfigTypeSaveReqVO updateReqVO) {
// 校验存在
validateConfigTypeExists(updateReqVO.getId());
// 更新
ConfigTypeDO updateObj = BeanUtils.toBean(updateReqVO, ConfigTypeDO.class);
configTypeMapper.updateById(updateObj);
}
@Override
public void deleteConfigType(Long id) {
// 校验存在
validateConfigTypeExists(id);
// 删除
configTypeMapper.deleteById(id);
}
private void validateConfigTypeExists(Long id) {
if (configTypeMapper.selectById(id) == null) {
throw exception(CONFIG_TYPE_NOT_EXISTS);
}
}
@Override
public ConfigTypeDO getConfigType(Long id) {
return configTypeMapper.selectById(id);
}
@Override
public PageResult<ConfigTypeDO> getConfigTypePage(ConfigTypePageReqVO pageReqVO) {
return configTypeMapper.selectPage(pageReqVO);
}
}

View File

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.member.util;
import java.math.BigDecimal;
/**
* @author zt
* @description <description class purpose>
* @since 2024/4/12
*/
public class ConfigConstants {
/**
* 超市禁止购买时间段配置
*/
public static final String BUY_PROHIBIT = "buy_prohibit";
public static final String START_TIME = "startTime";
public static final String END_TIME = "endTime";
}