个人偏好

This commit is contained in:
zengtao01
2024-04-03 16:45:14 +08:00
parent 8bca6551e3
commit af89715203
54 changed files with 2139 additions and 186 deletions

View File

@ -63,5 +63,7 @@ public interface ErrorCodeConstants {
ErrorCode DINING_PLATES_NOT_EXISTS = new ErrorCode(1_004_013_004, "订单明细不存在"); ErrorCode DINING_PLATES_NOT_EXISTS = new ErrorCode(1_004_013_004, "订单明细不存在");
ErrorCode USER_EXPAND_NOT_EXISTS = new ErrorCode(1_004_013_005, "订单明细不存在"); ErrorCode USER_EXPAND_NOT_EXISTS = new ErrorCode(1_004_013_005, "订单明细不存在");
ErrorCode USER_PREFERENCE_NOT_EXISTS = new ErrorCode(1_004_013_006, "订单明细不存在"); ErrorCode USER_PREFERENCE_NOT_EXISTS = new ErrorCode(1_004_013_006, "订单明细不存在");
ErrorCode ALLOC_NOT_EXISTS = new ErrorCode(1_004_013_007, "订单明细不存在");
ErrorCode STORE_EVALUATE_NOT_EXISTS = new ErrorCode(1_004_013_008, "订单明细不存在");
ErrorCode STORE_COMPLAIN_NOT_EXISTS = new ErrorCode(1_004_013_009, "订单明细不存在");
} }

View File

@ -0,0 +1,100 @@
package cn.iocoder.yudao.module.member.controller.admin.alloc;
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.alloc.vo.AllocPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.alloc.vo.AllocRespVO;
import cn.iocoder.yudao.module.member.controller.admin.alloc.vo.AllocSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.alloc.AllocDO;
import cn.iocoder.yudao.module.member.service.alloc.AllocService;
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.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
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/alloc")
@Validated
public class AllocController {
@Resource
private AllocService allocService;
@PostMapping("/create")
@Operation(summary = "创建配置")
@PreAuthorize("@ss.hasPermission('member:alloc:create')")
public CommonResult<Long> createAlloc(@Valid @RequestBody AllocSaveReqVO createReqVO) {
return success(allocService.createAlloc(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新配置")
@PreAuthorize("@ss.hasPermission('member:alloc:update')")
public CommonResult<Boolean> updateAlloc(@Valid @RequestBody AllocSaveReqVO updateReqVO) {
allocService.updateAlloc(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除配置")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:alloc:delete')")
public CommonResult<Boolean> deleteAlloc(@RequestParam("id") Long id) {
allocService.deleteAlloc(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得配置")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:alloc:query')")
public CommonResult<AllocRespVO> getAlloc(@RequestParam("id") Long id) {
AllocDO alloc = allocService.getAlloc(id);
return success(BeanUtils.toBean(alloc, AllocRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得配置分页")
@PreAuthorize("@ss.hasPermission('member:alloc:query')")
public CommonResult<PageResult<AllocRespVO>> getAllocPage(@Valid AllocPageReqVO pageReqVO) {
PageResult<AllocDO> pageResult = allocService.getAllocPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, AllocRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出配置 Excel")
@PreAuthorize("@ss.hasPermission('member:alloc:export')")
@OperateLog(type = EXPORT)
public void exportAllocExcel(@Valid AllocPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<AllocDO> list = allocService.getAllocPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "配置.xls", "数据", AllocRespVO.class,
BeanUtils.toBean(list, AllocRespVO.class));
}
}

View File

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.member.controller.admin.alloc.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 AllocPageReqVO extends PageParam {
@Schema(description = "所属模块")
private String moudle;
@Schema(description = "配置名", example = "张三")
private String allocName;
@Schema(description = "配置值")
private String allocValue;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.member.controller.admin.alloc.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 AllocRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31174")
@ExcelProperty("编号")
private Long id;
@Schema(description = "所属模块")
@ExcelProperty("所属模块")
private String moudle;
@Schema(description = "配置名", example = "张三")
@ExcelProperty("配置名")
private String allocName;
@Schema(description = "配置值")
@ExcelProperty("配置值")
private String allocValue;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.member.controller.admin.alloc.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 配置新增/修改 Request VO")
@Data
public class AllocSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31174")
private Long id;
@Schema(description = "所属模块")
private String moudle;
@Schema(description = "配置名", example = "张三")
private String allocName;
@Schema(description = "配置值")
private String allocValue;
}

View File

@ -37,4 +37,6 @@ public class CardRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
@Schema(description = "消费类型")
private String type;
} }

View File

@ -1,33 +1,38 @@
package cn.iocoder.yudao.module.member.controller.admin.rechargeamount; package cn.iocoder.yudao.module.member.controller.admin.rechargeamount;
import org.springframework.web.bind.annotation.*; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
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.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; 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 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.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; 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.rechargeamount.vo.RechargeAmountPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.rechargeamount.vo.RechargeAmountRespVO;
import cn.iocoder.yudao.module.member.controller.admin.rechargeamount.vo.*; import cn.iocoder.yudao.module.member.controller.admin.rechargeamount.vo.RechargeAmountSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.rechargeamount.RechargeAmountDO; import cn.iocoder.yudao.module.member.dal.dataobject.rechargeamount.RechargeAmountDO;
import cn.iocoder.yudao.module.member.service.rechargeamount.RechargeAmountService; import cn.iocoder.yudao.module.member.service.rechargeamount.RechargeAmountService;
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.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
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 = "管理后台 - 充值金额配置") @Tag(name = "管理后台 - 充值金额配置")
@RestController @RestController
@ -40,14 +45,12 @@ public class RechargeAmountController {
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建充值金额配置") @Operation(summary = "创建充值金额配置")
@PreAuthorize("@ss.hasPermission('member:recharge-amount:create')")
public CommonResult<Long> createRechargeAmount(@Valid @RequestBody RechargeAmountSaveReqVO createReqVO) { public CommonResult<Long> createRechargeAmount(@Valid @RequestBody RechargeAmountSaveReqVO createReqVO) {
return success(rechargeAmountService.createRechargeAmount(createReqVO)); return success(rechargeAmountService.createRechargeAmount(createReqVO));
} }
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新充值金额配置") @Operation(summary = "更新充值金额配置")
@PreAuthorize("@ss.hasPermission('member:recharge-amount:update')")
public CommonResult<Boolean> updateRechargeAmount(@Valid @RequestBody RechargeAmountSaveReqVO updateReqVO) { public CommonResult<Boolean> updateRechargeAmount(@Valid @RequestBody RechargeAmountSaveReqVO updateReqVO) {
rechargeAmountService.updateRechargeAmount(updateReqVO); rechargeAmountService.updateRechargeAmount(updateReqVO);
return success(true); return success(true);
@ -56,7 +59,6 @@ public class RechargeAmountController {
@DeleteMapping("/delete") @DeleteMapping("/delete")
@Operation(summary = "删除充值金额配置") @Operation(summary = "删除充值金额配置")
@Parameter(name = "id", description = "编号", required = true) @Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:recharge-amount:delete')")
public CommonResult<Boolean> deleteRechargeAmount(@RequestParam("id") Long id) { public CommonResult<Boolean> deleteRechargeAmount(@RequestParam("id") Long id) {
rechargeAmountService.deleteRechargeAmount(id); rechargeAmountService.deleteRechargeAmount(id);
return success(true); return success(true);
@ -65,7 +67,6 @@ public class RechargeAmountController {
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得充值金额配置") @Operation(summary = "获得充值金额配置")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:recharge-amount:query')")
public CommonResult<RechargeAmountRespVO> getRechargeAmount(@RequestParam("id") Long id) { public CommonResult<RechargeAmountRespVO> getRechargeAmount(@RequestParam("id") Long id) {
RechargeAmountDO rechargeAmount = rechargeAmountService.getRechargeAmount(id); RechargeAmountDO rechargeAmount = rechargeAmountService.getRechargeAmount(id);
return success(BeanUtils.toBean(rechargeAmount, RechargeAmountRespVO.class)); return success(BeanUtils.toBean(rechargeAmount, RechargeAmountRespVO.class));
@ -73,7 +74,6 @@ public class RechargeAmountController {
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得充值金额配置分页") @Operation(summary = "获得充值金额配置分页")
@PreAuthorize("@ss.hasPermission('member:recharge-amount:query')")
public CommonResult<PageResult<RechargeAmountRespVO>> getRechargeAmountPage(@Valid RechargeAmountPageReqVO pageReqVO) { public CommonResult<PageResult<RechargeAmountRespVO>> getRechargeAmountPage(@Valid RechargeAmountPageReqVO pageReqVO) {
PageResult<RechargeAmountDO> pageResult = rechargeAmountService.getRechargeAmountPage(pageReqVO); PageResult<RechargeAmountDO> pageResult = rechargeAmountService.getRechargeAmountPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, RechargeAmountRespVO.class)); return success(BeanUtils.toBean(pageResult, RechargeAmountRespVO.class));

View File

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.member.controller.admin.storecomplain;
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.storecomplain.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.storecomplain.StoreComplainDO;
import cn.iocoder.yudao.module.member.service.storecomplain.StoreComplainService;
@Tag(name = "管理后台 - 投诉")
@RestController
@RequestMapping("/member/store-complain")
@Validated
public class StoreComplainController {
@Resource
private StoreComplainService storeComplainService;
@PostMapping("/create")
@Operation(summary = "创建投诉")
@PreAuthorize("@ss.hasPermission('member:store-complain:create')")
public CommonResult<Long> createStoreComplain(@Valid @RequestBody StoreComplainSaveReqVO createReqVO) {
return success(storeComplainService.createStoreComplain(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新投诉")
@PreAuthorize("@ss.hasPermission('member:store-complain:update')")
public CommonResult<Boolean> updateStoreComplain(@Valid @RequestBody StoreComplainSaveReqVO updateReqVO) {
storeComplainService.updateStoreComplain(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除投诉")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:store-complain:delete')")
public CommonResult<Boolean> deleteStoreComplain(@RequestParam("id") Long id) {
storeComplainService.deleteStoreComplain(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得投诉")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:store-complain:query')")
public CommonResult<StoreComplainRespVO> getStoreComplain(@RequestParam("id") Long id) {
StoreComplainDO storeComplain = storeComplainService.getStoreComplain(id);
return success(BeanUtils.toBean(storeComplain, StoreComplainRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得投诉分页")
@PreAuthorize("@ss.hasPermission('member:store-complain:query')")
public CommonResult<PageResult<StoreComplainRespVO>> getStoreComplainPage(@Valid StoreComplainPageReqVO pageReqVO) {
PageResult<StoreComplainDO> pageResult = storeComplainService.getStoreComplainPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, StoreComplainRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出投诉 Excel")
@PreAuthorize("@ss.hasPermission('member:store-complain:export')")
@OperateLog(type = EXPORT)
public void exportStoreComplainExcel(@Valid StoreComplainPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<StoreComplainDO> list = storeComplainService.getStoreComplainPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "投诉.xls", "数据", StoreComplainRespVO.class,
BeanUtils.toBean(list, StoreComplainRespVO.class));
}
}

View File

@ -0,0 +1,43 @@
package cn.iocoder.yudao.module.member.controller.admin.storecomplain.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 StoreComplainPageReqVO extends PageParam {
@Schema(description = "用户ID", example = "14476")
private Long userId;
@Schema(description = "门店Id", example = "18179")
private Long storeId;
@Schema(description = "门店名", example = "芋艿")
private String storeName;
@Schema(description = "主题")
private String topic;
@Schema(description = "描述")
private String describe;
@Schema(description = "上传照片", example = "https://www.iocoder.cn")
private String url;
@Schema(description = "电话")
private String phone;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,52 @@
package cn.iocoder.yudao.module.member.controller.admin.storecomplain.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 StoreComplainRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21372")
@ExcelProperty("编号")
private Long id;
@Schema(description = "用户ID", example = "14476")
@ExcelProperty("用户ID")
private Long userId;
@Schema(description = "门店Id", example = "18179")
@ExcelProperty("门店Id")
private Long storeId;
@Schema(description = "门店名", example = "芋艿")
@ExcelProperty("门店名")
private String storeName;
@Schema(description = "主题")
@ExcelProperty("主题")
private String topic;
@Schema(description = "描述")
@ExcelProperty("描述")
private String describe;
@Schema(description = "上传照片", example = "https://www.iocoder.cn")
@ExcelProperty("上传照片")
private String url;
@Schema(description = "电话")
@ExcelProperty("电话")
private String phone;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,36 @@
package cn.iocoder.yudao.module.member.controller.admin.storecomplain.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 StoreComplainSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21372")
private Long id;
@Schema(description = "用户ID", example = "14476")
private Long userId;
@Schema(description = "门店Id", example = "18179")
private Long storeId;
@Schema(description = "门店名", example = "芋艿")
private String storeName;
@Schema(description = "主题")
private String topic;
@Schema(description = "描述")
private String describe;
@Schema(description = "上传照片", example = "https://www.iocoder.cn")
private String url;
@Schema(description = "电话")
private String phone;
}

View File

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.member.controller.admin.storeevaluate;
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.storeevaluate.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.storeevaluate.StoreEvaluateDO;
import cn.iocoder.yudao.module.member.service.storeevaluate.StoreEvaluateService;
@Tag(name = "管理后台 - 店铺评价")
@RestController
@RequestMapping("/member/store-evaluate")
@Validated
public class StoreEvaluateController {
@Resource
private StoreEvaluateService storeEvaluateService;
@PostMapping("/create")
@Operation(summary = "创建店铺评价")
@PreAuthorize("@ss.hasPermission('member:store-evaluate:create')")
public CommonResult<Long> createStoreEvaluate(@Valid @RequestBody StoreEvaluateSaveReqVO createReqVO) {
return success(storeEvaluateService.createStoreEvaluate(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新店铺评价")
@PreAuthorize("@ss.hasPermission('member:store-evaluate:update')")
public CommonResult<Boolean> updateStoreEvaluate(@Valid @RequestBody StoreEvaluateSaveReqVO updateReqVO) {
storeEvaluateService.updateStoreEvaluate(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除店铺评价")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:store-evaluate:delete')")
public CommonResult<Boolean> deleteStoreEvaluate(@RequestParam("id") Long id) {
storeEvaluateService.deleteStoreEvaluate(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得店铺评价")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:store-evaluate:query')")
public CommonResult<StoreEvaluateRespVO> getStoreEvaluate(@RequestParam("id") Long id) {
StoreEvaluateDO storeEvaluate = storeEvaluateService.getStoreEvaluate(id);
return success(BeanUtils.toBean(storeEvaluate, StoreEvaluateRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得店铺评价分页")
@PreAuthorize("@ss.hasPermission('member:store-evaluate:query')")
public CommonResult<PageResult<StoreEvaluateRespVO>> getStoreEvaluatePage(@Valid StoreEvaluatePageReqVO pageReqVO) {
PageResult<StoreEvaluateDO> pageResult = storeEvaluateService.getStoreEvaluatePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, StoreEvaluateRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出店铺评价 Excel")
@PreAuthorize("@ss.hasPermission('member:store-evaluate:export')")
@OperateLog(type = EXPORT)
public void exportStoreEvaluateExcel(@Valid StoreEvaluatePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<StoreEvaluateDO> list = storeEvaluateService.getStoreEvaluatePage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "店铺评价.xls", "数据", StoreEvaluateRespVO.class,
BeanUtils.toBean(list, StoreEvaluateRespVO.class));
}
}

View File

@ -0,0 +1,49 @@
package cn.iocoder.yudao.module.member.controller.admin.storeevaluate.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 StoreEvaluatePageReqVO extends PageParam {
@Schema(description = "用户ID", example = "15939")
private Long userId;
@Schema(description = "门店Id", example = "5445")
private Long storeId;
@Schema(description = "门店名", example = "赵六")
private String storeName;
@Schema(description = "评价")
private String evaluate;
@Schema(description = "菜品评价")
private String dishEvaluate;
@Schema(description = "服务评价")
private String serEvaluate;
@Schema(description = "环境评价")
private String envEvaluate;
@Schema(description = "文字评价", example = "随便")
private String remark;
@Schema(description = "上传照片", example = "https://www.iocoder.cn")
private String url;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,59 @@
package cn.iocoder.yudao.module.member.controller.admin.storeevaluate.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 StoreEvaluateRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "30065")
@ExcelProperty("编号")
private Long id;
@Schema(description = "用户ID", example = "15939")
@ExcelProperty("用户ID")
private Long userId;
@Schema(description = "门店Id", example = "5445")
@ExcelProperty("门店Id")
private Long storeId;
@Schema(description = "门店名", example = "赵六")
@ExcelProperty("门店名")
private String storeName;
@Schema(description = "评价")
@ExcelProperty("评价")
private String evaluate;
@Schema(description = "菜品评价")
@ExcelProperty("菜品评价")
private String dishEvaluate;
@Schema(description = "服务评价")
@ExcelProperty("服务评价")
private String serEvaluate;
@Schema(description = "环境评价")
@ExcelProperty("环境评价")
private String envEvaluate;
@Schema(description = "文字评价", example = "随便")
@ExcelProperty("文字评价")
private String remark;
@Schema(description = "上传照片", example = "https://www.iocoder.cn")
@ExcelProperty("上传照片")
private String url;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,40 @@
package cn.iocoder.yudao.module.member.controller.admin.storeevaluate.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 店铺评价新增/修改 Request VO")
@Data
public class StoreEvaluateSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "30065")
private Long id;
@Schema(description = "用户ID", example = "15939")
private Long userId;
@Schema(description = "门店Id", example = "5445")
private Long storeId;
@Schema(description = "门店名", example = "赵六")
private String storeName;
@Schema(description = "评价")
private String evaluate;
@Schema(description = "菜品评价")
private String dishEvaluate;
@Schema(description = "服务评价")
private String serEvaluate;
@Schema(description = "环境评价")
private String envEvaluate;
@Schema(description = "文字评价", example = "随便")
private String remark;
@Schema(description = "上传照片", example = "https://www.iocoder.cn")
private String url;
}

View File

@ -1,9 +1,7 @@
package cn.iocoder.yudao.module.member.controller.admin.userpreference.vo; package cn.iocoder.yudao.module.member.controller.admin.userpreference.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.Data;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 用户偏好新增/修改 Request VO") @Schema(description = "管理后台 - 用户偏好新增/修改 Request VO")
@Data @Data
@ -24,7 +22,7 @@ public class UserPreferenceSaveReqVO {
@Schema(description = "健康状态") @Schema(description = "健康状态")
private String health; private String health;
@Schema(description = "食物类型", example = "1") @Schema(description = "食物类型")
private String foodType; private String foodType;
@Schema(description = "过敏食物") @Schema(description = "过敏食物")

View File

@ -0,0 +1,90 @@
package cn.iocoder.yudao.module.member.controller.app.alloc;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.app.alloc.vo.AppAllocRespVO;
import cn.iocoder.yudao.module.member.dal.dataobject.alloc.AllocDO;
import cn.iocoder.yudao.module.member.service.alloc.AllocService;
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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "用户 App - 配置")
@RestController
@RequestMapping("/member/alloc")
@Validated
public class AppAllocController {
@Resource
private AllocService allocService;
//@PostMapping("/create")
//@Operation(summary = "创建配置")
//@PreAuthorize("@ss.hasPermission('member:alloc:create')")
//public CommonResult<Long> createAlloc(@Valid @RequestBody AllocSaveReqVO createReqVO) {
// return success(allocService.createAlloc(createReqVO));
//}
//
//@PutMapping("/update")
//@Operation(summary = "更新配置")
//@PreAuthorize("@ss.hasPermission('member:alloc:update')")
//public CommonResult<Boolean> updateAlloc(@Valid @RequestBody AllocSaveReqVO updateReqVO) {
// allocService.updateAlloc(updateReqVO);
// return success(true);
//}
//
//@DeleteMapping("/delete")
//@Operation(summary = "删除配置")
//@Parameter(name = "id", description = "编号", required = true)
//@PreAuthorize("@ss.hasPermission('member:alloc:delete')")
//public CommonResult<Boolean> deleteAlloc(@RequestParam("id") Long id) {
// allocService.deleteAlloc(id);
// return success(true);
//}
//
//@GetMapping("/get")
//@Operation(summary = "获得配置")
//@Parameter(name = "id", description = "编号", required = true, example = "1024")
//@PreAuthorize("@ss.hasPermission('member:alloc:query')")
//public CommonResult<AllocRespVO> getAlloc(@RequestParam("id") Long id) {
// AllocDO alloc = allocService.getAlloc(id);
// return success(BeanUtils.toBean(alloc, AllocRespVO.class));
//}
//
//@GetMapping("/page")
//@Operation(summary = "获得配置分页")
//@PreAuthorize("@ss.hasPermission('member:alloc:query')")
//public CommonResult<PageResult<AllocRespVO>> getAllocPage(@Valid AllocPageReqVO pageReqVO) {
// PageResult<AllocDO> pageResult = allocService.getAllocPage(pageReqVO);
// return success(BeanUtils.toBean(pageResult, AllocRespVO.class));
//}
//
//@GetMapping("/export-excel")
//@Operation(summary = "导出配置 Excel")
//@PreAuthorize("@ss.hasPermission('member:alloc:export')")
//@OperateLog(type = EXPORT)
//public void exportAllocExcel(@Valid AllocPageReqVO pageReqVO,
// HttpServletResponse response) throws IOException {
// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
// List<AllocDO> list = allocService.getAllocPage(pageReqVO).getList();
// // 导出 Excel
// ExcelUtils.write(response, "配置.xls", "数据", AllocRespVO.class,
// BeanUtils.toBean(list, AllocRespVO.class));
//}
@GetMapping("/list")
@Operation(summary = "联系我们配置列表")
public CommonResult<List<AppAllocRespVO>> getAllocList() {
List<AllocDO> allocList = allocService.getAllocList();
return success(BeanUtils.toBean(allocList, AppAllocRespVO.class));
}
}

View File

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.member.controller.app.alloc.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 AppAllocPageReqVO extends PageParam {
@Schema(description = "所属模块")
private String moudle;
@Schema(description = "配置名", example = "张三")
private String allocName;
@Schema(description = "配置值")
private String allocValue;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.member.controller.app.alloc.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 AppAllocRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31174")
@ExcelProperty("编号")
private Long id;
@Schema(description = "所属模块")
@ExcelProperty("所属模块")
private Long moudle;
@Schema(description = "配置名", example = "张三")
@ExcelProperty("配置名")
private Long allocName;
@Schema(description = "配置值")
@ExcelProperty("配置值")
private String allocValue;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,24 @@
package cn.iocoder.yudao.module.member.controller.app.alloc.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 AppAllocSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31174")
private Long id;
@Schema(description = "所属模块")
private Long moudle;
@Schema(description = "配置名", example = "张三")
private Long allocName;
@Schema(description = "配置值")
private String allocValue;
}

View File

@ -4,10 +4,12 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardRespVO; import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardRespVO;
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardMonthVO;
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO; import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
import cn.iocoder.yudao.module.member.service.card.CardService; import cn.iocoder.yudao.module.member.service.card.CardService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -97,4 +99,12 @@ public class AppCardController {
return success(cardService.getMoney()); return success(cardService.getMoney());
} }
@GetMapping("/month")
@Operation(summary = "获取本月支出或充值金额")
@Parameter(name = "flag", description = "0-支出1-充值", required = true, example = "1")
public CommonResult<AppCardMonthVO> getMonthMoney(Long userId, String flag, String time) {
return success(cardService.getMonthMoney(userId,flag,time));
}
} }

View File

@ -0,0 +1,21 @@
package cn.iocoder.yudao.module.member.controller.app.card.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
@Schema(description = "用户 APP - 余额变动明细 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AppCardMonthVO {
@Schema(description = "")
private BigDecimal money;
@Schema(description = "笔数")
private Integer count;
}

View File

@ -30,6 +30,9 @@ public class AppCardPageReqVO extends PageParam {
@Schema(description = "变动金额") @Schema(description = "变动金额")
private BigDecimal changeMoney; private BigDecimal changeMoney;
@Schema(description = "消费类型")
private String type;
@Schema(description = "创建时间") @Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;

View File

@ -45,4 +45,14 @@ public class AppOrderRespVO {
@Schema(description = "菜品") @Schema(description = "菜品")
private List<AppOrderDetailRespVO> detailList; private List<AppOrderDetailRespVO> detailList;
@Schema(description = "推荐摄入量")
private Double proposeIntake;
@Schema(description = "摄入量")
private Double intake;
@Schema(description = "差值")
private Double difference;
} }

View File

@ -0,0 +1,83 @@
package cn.iocoder.yudao.module.member.controller.app.storecomplain;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.member.controller.app.storecomplain.vo.AppStoreComplainSaveReqVO;
import cn.iocoder.yudao.module.member.service.storecomplain.StoreComplainService;
import io.swagger.v3.oas.annotations.Operation;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "用户 App - 投诉")
@RestController
@RequestMapping("/member/store-complain")
@Validated
public class AppStoreComplainController {
@Resource
private StoreComplainService storeComplainService;
@PostMapping("/create")
@Operation(summary = "创建投诉")
@PreAuthorize("@ss.hasPermission('member:store-complain:create')")
public CommonResult<Long> createStoreComplain(@Valid @RequestBody AppStoreComplainSaveReqVO createReqVO) {
return success(storeComplainService.createStoreComplainApp(createReqVO));
}
//@PutMapping("/update")
//@Operation(summary = "更新投诉")
//@PreAuthorize("@ss.hasPermission('member:store-complain:update')")
//public CommonResult<Boolean> updateStoreComplain(@Valid @RequestBody StoreComplainSaveReqVO updateReqVO) {
// storeComplainService.updateStoreComplain(updateReqVO);
// return success(true);
//}
//
//@DeleteMapping("/delete")
//@Operation(summary = "删除投诉")
//@Parameter(name = "id", description = "编号", required = true)
//@PreAuthorize("@ss.hasPermission('member:store-complain:delete')")
//public CommonResult<Boolean> deleteStoreComplain(@RequestParam("id") Long id) {
// storeComplainService.deleteStoreComplain(id);
// return success(true);
//}
//
//@GetMapping("/get")
//@Operation(summary = "获得投诉")
//@Parameter(name = "id", description = "编号", required = true, example = "1024")
//@PreAuthorize("@ss.hasPermission('member:store-complain:query')")
//public CommonResult<StoreComplainRespVO> getStoreComplain(@RequestParam("id") Long id) {
// StoreComplainDO storeComplain = storeComplainService.getStoreComplain(id);
// return success(BeanUtils.toBean(storeComplain, StoreComplainRespVO.class));
//}
//
//@GetMapping("/page")
//@Operation(summary = "获得投诉分页")
//@PreAuthorize("@ss.hasPermission('member:store-complain:query')")
//public CommonResult<PageResult<StoreComplainRespVO>> getStoreComplainPage(@Valid StoreComplainPageReqVO pageReqVO) {
// PageResult<StoreComplainDO> pageResult = storeComplainService.getStoreComplainPage(pageReqVO);
// return success(BeanUtils.toBean(pageResult, StoreComplainRespVO.class));
//}
//
//@GetMapping("/export-excel")
//@Operation(summary = "导出投诉 Excel")
//@PreAuthorize("@ss.hasPermission('member:store-complain:export')")
//@OperateLog(type = EXPORT)
//public void exportStoreComplainExcel(@Valid StoreComplainPageReqVO pageReqVO,
// HttpServletResponse response) throws IOException {
// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
// List<StoreComplainDO> list = storeComplainService.getStoreComplainPage(pageReqVO).getList();
// // 导出 Excel
// ExcelUtils.write(response, "投诉.xls", "数据", StoreComplainRespVO.class,
// BeanUtils.toBean(list, StoreComplainRespVO.class));
//}
}

View File

@ -0,0 +1,34 @@
package cn.iocoder.yudao.module.member.controller.app.storecomplain.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 投诉新增/修改 Request VO")
@Data
public class AppStoreComplainSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21372")
private Long id;
@Schema(description = "用户ID", example = "14476")
private Long userId;
@Schema(description = "门店Id", example = "18179")
private Long storeId;
@Schema(description = "门店名", example = "芋艿")
private String storeName;
@Schema(description = "主题")
private String topic;
@Schema(description = "描述")
private String describe;
@Schema(description = "上传照片")
private String url;
@Schema(description = "电话")
private String phone;
}

View File

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.member.controller.app.storeevaluate;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.member.controller.app.storeevaluate.vo.AppStoreEvaluateSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.storeevaluate.StoreEvaluateDO;
import cn.iocoder.yudao.module.member.service.storeevaluate.StoreEvaluateService;
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.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "用户 App - 店铺评价")
@RestController
@RequestMapping("/member/store-evaluate")
@Validated
public class AppStoreEvaluateController {
@Resource
private StoreEvaluateService storeEvaluateService;
//
//@PostMapping("/create")
//@Operation(summary = "创建店铺评价")
//@PreAuthorize("@ss.hasPermission('member:store-evaluate:create')")
//public CommonResult<Long> createStoreEvaluate(@Valid @RequestBody StoreEvaluateSaveReqVO createReqVO) {
// return success(storeEvaluateService.createStoreEvaluate(createReqVO));
//}
//
//@PutMapping("/update")
//@Operation(summary = "更新店铺评价")
//@PreAuthorize("@ss.hasPermission('member:store-evaluate:update')")
//public CommonResult<Boolean> updateStoreEvaluate(@Valid @RequestBody StoreEvaluateSaveReqVO updateReqVO) {
// storeEvaluateService.updateStoreEvaluate(updateReqVO);
// return success(true);
//}
//
//@DeleteMapping("/delete")
//@Operation(summary = "删除店铺评价")
//@Parameter(name = "id", description = "编号", required = true)
//@PreAuthorize("@ss.hasPermission('member:store-evaluate:delete')")
//public CommonResult<Boolean> deleteStoreEvaluate(@RequestParam("id") Long id) {
// storeEvaluateService.deleteStoreEvaluate(id);
// return success(true);
//}
//
//@GetMapping("/get")
//@Operation(summary = "获得店铺评价")
//@Parameter(name = "id", description = "编号", required = true, example = "1024")
//@PreAuthorize("@ss.hasPermission('member:store-evaluate:query')")
//public CommonResult<StoreEvaluateRespVO> getStoreEvaluate(@RequestParam("id") Long id) {
// StoreEvaluateDO storeEvaluate = storeEvaluateService.getStoreEvaluate(id);
// return success(BeanUtils.toBean(storeEvaluate, StoreEvaluateRespVO.class));
//}
//
//@GetMapping("/page")
//@Operation(summary = "获得店铺评价分页")
//@PreAuthorize("@ss.hasPermission('member:store-evaluate:query')")
//public CommonResult<PageResult<StoreEvaluateRespVO>> getStoreEvaluatePage(@Valid StoreEvaluatePageReqVO pageReqVO) {
// PageResult<StoreEvaluateDO> pageResult = storeEvaluateService.getStoreEvaluatePage(pageReqVO);
// return success(BeanUtils.toBean(pageResult, StoreEvaluateRespVO.class));
//}
//
//@GetMapping("/export-excel")
//@Operation(summary = "导出店铺评价 Excel")
//@PreAuthorize("@ss.hasPermission('member:store-evaluate:export')")
//@OperateLog(type = EXPORT)
//public void exportStoreEvaluateExcel(@Valid StoreEvaluatePageReqVO pageReqVO,
// HttpServletResponse response) throws IOException {
// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
// List<StoreEvaluateDO> list = storeEvaluateService.getStoreEvaluatePage(pageReqVO).getList();
// // 导出 Excel
// ExcelUtils.write(response, "店铺评价.xls", "数据", StoreEvaluateRespVO.class,
// BeanUtils.toBean(list, StoreEvaluateRespVO.class));
//}
@PostMapping("/saveOrUpdate")
@Operation(summary = "创建或更新店铺评价")
public CommonResult<Boolean> saveOrUpdate(@Valid @RequestBody AppStoreEvaluateSaveReqVO createReqVO) {
return success(storeEvaluateService.saveOrUpdate(createReqVO));
}
@GetMapping("/get")
@Operation(summary = "创建或更新店铺评价")
public CommonResult<StoreEvaluateDO> saveOrUpdate(Long storeId) {
return success(storeEvaluateService.selectByUserId(storeId));
}
}

View File

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.member.controller.app.storeevaluate.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 店铺评价新增/修改 Request VO")
@Data
public class AppStoreEvaluateSaveReqVO {
@Schema(description = "用户ID", example = "15939")
private Long userId;
@Schema(description = "门店Id", example = "5445")
private Long storeId;
@Schema(description = "门店名", example = "赵六")
private String storeName;
@Schema(description = "评价")
private String evaluate;
@Schema(description = "菜品评价")
private String dishEvaluate;
@Schema(description = "服务评价")
private String serEvaluate;
@Schema(description = "环境评价")
private String envEvaluate;
@Schema(description = "文字评价", example = "随便")
private String remark;
@Schema(description = "上传照片", example = "https://www.iocoder.cn")
private String url;
}

View File

@ -9,6 +9,8 @@ import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdate
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateMobileReqVO; import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateMobileReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdatePasswordReqVO; import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdatePasswordReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO; import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppNutritionDayVo;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppNutritionWeekVO;
import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert; import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
@ -28,6 +30,8 @@ import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@ -97,16 +101,24 @@ public class AppMemberUserController {
return success(userService.bindCard(vo.getCardId())); return success(userService.bindCard(vo.getCardId()));
} }
@GetMapping("/checkCard")
@Operation(summary = "判定有无绑卡")
public CommonResult<Boolean> checkCard(Long userId){
return success(userService.checkCard(userId));
}
@GetMapping("/nutritionDay") @GetMapping("/nutritionDay")
@Operation(summary = "营养日报") @Operation(summary = "营养日报")
public CommonResult<Boolean> nutritionDay(String time){ public CommonResult<List<AppNutritionDayVo>> nutritionDay(String time){
return success(true); List<AppNutritionDayVo> appNutritionDayVos = userService.nutritionDay(time);
return success(appNutritionDayVos);
} }
@GetMapping("/NutritionWeek") @GetMapping("/NutritionWeek")
@Operation(summary = "营养周报") @Operation(summary = "营养周报")
public CommonResult<Boolean> NutritionWeek(@Valid @RequestBody AppBindCardVO vo){ public CommonResult<List<AppNutritionWeekVO>> NutritionWeek(String start, String end){
return success(userService.bindCard(vo.getCardId())); List<AppNutritionWeekVO> appNutritionWeekVOS = userService.NutritionWeek(start, end);
return success(appNutritionWeekVOS);
} }
@GetMapping("/heat") @GetMapping("/heat")
@Operation(summary = "获得会员热量分析") @Operation(summary = "获得会员热量分析")

View File

@ -18,7 +18,7 @@ public class AppNutritionWeekVO {
private String time; private String time;
@Schema(description = "摄入量") @Schema(description = "摄入量")
private Double intake; private Double intake = 0D;
@Schema(description = "菜品") @Schema(description = "菜品")
private List<OrderDetailDO> detailList; private List<OrderDetailDO> detailList;

View File

@ -1,18 +1,35 @@
package cn.iocoder.yudao.module.member.controller.app.userpreference; package cn.iocoder.yudao.module.member.controller.app.userpreference;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.app.userpreference.vo.AppUserPreferenceRespVO;
import cn.iocoder.yudao.module.member.controller.app.userpreference.vo.AppUserPreferenceSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.userpreference.UserPreferenceDO;
import cn.iocoder.yudao.module.member.service.userpreference.UserPreferenceService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "用户 APP - 用户偏好") @Tag(name = "用户 APP - 用户偏好")
@RestController @RestController
@RequestMapping("/member/user-preference") @RequestMapping("/member/user-preference")
@Validated @Validated
public class AppUserPreferenceController { public class AppUserPreferenceController {
//@Resource @Resource
//private UserPreferenceService userPreferenceService; private UserPreferenceService userPreferenceService;
// //
//@PostMapping("/create") //@PostMapping("/create")
//@Operation(summary = "创建用户偏好") //@Operation(summary = "创建用户偏好")
@ -38,14 +55,13 @@ public class AppUserPreferenceController {
// return success(true); // return success(true);
//} //}
// //
//@GetMapping("/get") @GetMapping("/get")
//@Operation(summary = "获得用户偏好") @Operation(summary = "获得用户偏好")
//@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "userId", description = "用户Id", required = true, example = "1024")
//@PreAuthorize("@ss.hasPermission('member:user-preference:query')") public CommonResult<AppUserPreferenceRespVO> getUserPreference(@RequestParam("userId") Long userId) {
//public CommonResult<UserPreferenceRespVO> getUserPreference(@RequestParam("id") Long id) { UserPreferenceDO userPreference = userPreferenceService.getUserPreferenceByUserId(userId);
// UserPreferenceDO userPreference = userPreferenceService.getUserPreference(id); return success(BeanUtils.toBean(userPreference, AppUserPreferenceRespVO.class));
// return success(BeanUtils.toBean(userPreference, UserPreferenceRespVO.class)); }
//}
// //
//@GetMapping("/page") //@GetMapping("/page")
//@Operation(summary = "获得用户偏好分页") //@Operation(summary = "获得用户偏好分页")
@ -67,5 +83,12 @@ public class AppUserPreferenceController {
// ExcelUtils.write(response, "用户偏好.xls", "数据", UserPreferenceRespVO.class, // ExcelUtils.write(response, "用户偏好.xls", "数据", UserPreferenceRespVO.class,
// BeanUtils.toBean(list, UserPreferenceRespVO.class)); // BeanUtils.toBean(list, UserPreferenceRespVO.class));
//} //}
@PutMapping("/saveOrUpdate")
@Operation(summary = "设置用户偏好")
public CommonResult<Boolean> updateUserPreference(@Valid @RequestBody AppUserPreferenceSaveReqVO updateReqVO) {
return success( userPreferenceService.saveOrUpdate(updateReqVO));
}
} }

View File

@ -1,17 +1,12 @@
package cn.iocoder.yudao.module.member.controller.app.userpreference.vo; package cn.iocoder.yudao.module.member.controller.app.userpreference.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.Data;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 用户偏好新增/修改 Request VO") @Schema(description = "管理后台 - 用户偏好新增/修改 Request VO")
@Data @Data
public class AppUserPreferenceSaveReqVO { public class AppUserPreferenceSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "14844")
private Long id;
@Schema(description = "用户ID", example = "11807") @Schema(description = "用户ID", example = "11807")
private Long userId; private Long userId;

View File

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.member.dal.dataobject.alloc;
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.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* 配置 DO
*
* @author 开发账号
*/
@TableName("member_alloc")
@KeySequence("member_alloc_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AllocDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 所属模块
*/
private Long moudle;
/**
* 配置名
*/
private Long allocName;
/**
* 配置值
*/
private String allocValue;
}

View File

@ -0,0 +1,63 @@
package cn.iocoder.yudao.module.member.dal.dataobject.storecomplain;
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.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* 投诉 DO
*
* @author 开发账号
*/
@TableName("member_store_complain")
@KeySequence("member_store_complain_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StoreComplainDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 用户ID
*/
private Long userId;
/**
* 门店Id
*/
private Long storeId;
/**
* 门店名
*/
private String storeName;
/**
* 主题
*/
private String topic;
/**
* 描述
*/
private String describe;
/**
* 上传照片
*/
private String url;
/**
* 电话
*/
private String phone;
}

View File

@ -0,0 +1,71 @@
package cn.iocoder.yudao.module.member.dal.dataobject.storeevaluate;
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.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* 店铺评价 DO
*
* @author 开发账号
*/
@TableName("member_store_evaluate")
@KeySequence("member_store_evaluate_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StoreEvaluateDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 用户ID
*/
private Long userId;
/**
* 门店Id
*/
private Long storeId;
/**
* 门店名
*/
private String storeName;
/**
* 评价
*/
private String evaluate;
/**
* 菜品评价
*/
private String dishEvaluate;
/**
* 服务评价
*/
private String serEvaluate;
/**
* 环境评价
*/
private String envEvaluate;
/**
* 文字评价
*/
private String remark;
/**
* 上传照片
*/
private String url;
}

View File

@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.member.dal.mysql.alloc;
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.alloc.vo.AllocPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.alloc.AllocDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 配置 Mapper
*
* @author 开发账号
*/
@Mapper
public interface AllocMapper extends BaseMapperX<AllocDO> {
default PageResult<AllocDO> selectPage(AllocPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<AllocDO>()
.eqIfPresent(AllocDO::getMoudle, reqVO.getMoudle())
.likeIfPresent(AllocDO::getAllocName, reqVO.getAllocName())
.eqIfPresent(AllocDO::getAllocValue, reqVO.getAllocValue())
.betweenIfPresent(AllocDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(AllocDO::getId));
}
}

View File

@ -4,9 +4,14 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardPageReqVO;
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardMonthVO;
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO; import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.time.LocalDateTime;
/** /**
* 余额变动明细 Mapper * 余额变动明细 Mapper
@ -35,4 +40,7 @@ public interface CardMapper extends BaseMapperX<CardDO> {
.betweenIfPresent(CardDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(CardDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(CardDO::getId)); .orderByDesc(CardDO::getId));
} }
@Select("select IFNULL(sum(money),0) as money,count(*) as count FROM member_card where user_id = #{userId} and flag = #{flag} and create_time BETWEEN #{startTime} and #{endTime}")
AppCardMonthVO selectMonth(@Param("userId") Long userId,@Param("flag") String flag, @Param("startTime") LocalDateTime startTime, @Param("endTime")LocalDateTime endTime);
} }

View File

@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.member.dal.mysql.storecomplain;
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.storecomplain.vo.StoreComplainPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.storecomplain.StoreComplainDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 投诉 Mapper
*
* @author 开发账号
*/
@Mapper
public interface StoreComplainMapper extends BaseMapperX<StoreComplainDO> {
default PageResult<StoreComplainDO> selectPage(StoreComplainPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<StoreComplainDO>()
.eqIfPresent(StoreComplainDO::getUserId, reqVO.getUserId())
.eqIfPresent(StoreComplainDO::getStoreId, reqVO.getStoreId())
.likeIfPresent(StoreComplainDO::getStoreName, reqVO.getStoreName())
.eqIfPresent(StoreComplainDO::getTopic, reqVO.getTopic())
.eqIfPresent(StoreComplainDO::getDescribe, reqVO.getDescribe())
.eqIfPresent(StoreComplainDO::getUrl, reqVO.getUrl())
.eqIfPresent(StoreComplainDO::getPhone, reqVO.getPhone())
.betweenIfPresent(StoreComplainDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(StoreComplainDO::getId));
}
}

View File

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.member.dal.mysql.storeevaluate;
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.storeevaluate.vo.StoreEvaluatePageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.storeevaluate.StoreEvaluateDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 店铺评价 Mapper
*
* @author 开发账号
*/
@Mapper
public interface StoreEvaluateMapper extends BaseMapperX<StoreEvaluateDO> {
default PageResult<StoreEvaluateDO> selectPage(StoreEvaluatePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<StoreEvaluateDO>()
.eqIfPresent(StoreEvaluateDO::getUserId, reqVO.getUserId())
.eqIfPresent(StoreEvaluateDO::getStoreId, reqVO.getStoreId())
.likeIfPresent(StoreEvaluateDO::getStoreName, reqVO.getStoreName())
.eqIfPresent(StoreEvaluateDO::getEvaluate, reqVO.getEvaluate())
.eqIfPresent(StoreEvaluateDO::getDishEvaluate, reqVO.getDishEvaluate())
.eqIfPresent(StoreEvaluateDO::getSerEvaluate, reqVO.getSerEvaluate())
.eqIfPresent(StoreEvaluateDO::getEnvEvaluate, reqVO.getEnvEvaluate())
.eqIfPresent(StoreEvaluateDO::getRemark, reqVO.getRemark())
.eqIfPresent(StoreEvaluateDO::getUrl, reqVO.getUrl())
.betweenIfPresent(StoreEvaluateDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(StoreEvaluateDO::getId));
}
}

View File

@ -0,0 +1,57 @@
package cn.iocoder.yudao.module.member.service.alloc;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.alloc.vo.AllocPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.alloc.vo.AllocSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.alloc.AllocDO;
import javax.validation.Valid;
import java.util.List;
/**
* 配置 Service 接口
*
* @author 开发账号
*/
public interface AllocService {
/**
* 创建配置
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createAlloc(@Valid AllocSaveReqVO createReqVO);
/**
* 更新配置
*
* @param updateReqVO 更新信息
*/
void updateAlloc(@Valid AllocSaveReqVO updateReqVO);
/**
* 删除配置
*
* @param id 编号
*/
void deleteAlloc(Long id);
/**
* 获得配置
*
* @param id 编号
* @return 配置
*/
AllocDO getAlloc(Long id);
/**
* 获得配置分页
*
* @param pageReqVO 分页查询
* @return 配置分页
*/
PageResult<AllocDO> getAllocPage(AllocPageReqVO pageReqVO);
List<AllocDO> getAllocList();
}

View File

@ -0,0 +1,78 @@
package cn.iocoder.yudao.module.member.service.alloc;
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.alloc.vo.AllocPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.alloc.vo.AllocSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.alloc.AllocDO;
import cn.iocoder.yudao.module.member.dal.mysql.alloc.AllocMapper;
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.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ALLOC_NOT_EXISTS;
/**
* 配置 Service 实现类
*
* @author 开发账号
*/
@Service
@Validated
public class AllocServiceImpl implements AllocService {
@Resource
private AllocMapper allocMapper;
@Override
public Long createAlloc(AllocSaveReqVO createReqVO) {
// 插入
AllocDO alloc = BeanUtils.toBean(createReqVO, AllocDO.class);
allocMapper.insert(alloc);
// 返回
return alloc.getId();
}
@Override
public void updateAlloc(AllocSaveReqVO updateReqVO) {
// 校验存在
validateAllocExists(updateReqVO.getId());
// 更新
AllocDO updateObj = BeanUtils.toBean(updateReqVO, AllocDO.class);
allocMapper.updateById(updateObj);
}
@Override
public void deleteAlloc(Long id) {
// 校验存在
validateAllocExists(id);
// 删除
allocMapper.deleteById(id);
}
private void validateAllocExists(Long id) {
if (allocMapper.selectById(id) == null) {
throw exception(ALLOC_NOT_EXISTS);
}
}
@Override
public AllocDO getAlloc(Long id) {
return allocMapper.selectById(id);
}
@Override
public PageResult<AllocDO> getAllocPage(AllocPageReqVO pageReqVO) {
return allocMapper.selectPage(pageReqVO);
}
@Override
public List<AllocDO> getAllocList() {
List<AllocDO> allocDOS = allocMapper.selectList(Wrappers.<AllocDO>lambdaQuery().eq(AllocDO::getMoudle, "1"));
return allocDOS;
}
}

View File

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.member.service.card;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardSaveReqVO; import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardMonthVO;
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO; import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
@ -83,4 +84,6 @@ public interface CardService {
*/ */
void insertBatch(List<CardDO> list); void insertBatch(List<CardDO> list);
AppCardMonthVO getMonthMoney(Long userId,String flag, String time);
} }

View File

@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardSaveReqVO; import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardMonthVO;
import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO; import cn.iocoder.yudao.module.member.controller.app.card.vo.AppCardPageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper; import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper;
@ -17,6 +18,11 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -138,4 +144,29 @@ public class CardServiceImpl implements CardService {
public void insertBatch(List<CardDO> list) { public void insertBatch(List<CardDO> list) {
cardMapper.insertBatch(list); cardMapper.insertBatch(list);
} }
@Override
public AppCardMonthVO getMonthMoney(Long userId,String flag, String time) {
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate parse = LocalDate.parse(time, dateFormatter);
// 获取指定日期所在月份的第一天
LocalDate firstDayOfMonth = parse.withDayOfMonth(1);
// 获取指定日期所在月份的最后一天
YearMonth yearMonth = YearMonth.from(parse);
LocalDate lastDayOfMonth = yearMonth.atEndOfMonth();
// 获取所在月份的第一天的开始时间
LocalDateTime firstDayOfMonthStart = firstDayOfMonth.atStartOfDay();
// 获取所在月份的最后一天的结束时间
LocalDateTime lastDayOfMonthEnd = lastDayOfMonth.atTime(LocalTime.MAX);
AppCardMonthVO appCardMonthVO = cardMapper.selectMonth(userId, flag, firstDayOfMonthStart, lastDayOfMonthEnd);
return appCardMonthVO;
}
} }

View File

@ -20,6 +20,7 @@ import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum; import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -51,6 +52,14 @@ public class OrderServiceImpl implements OrderService {
private OrderDetailService orderDetailService; private OrderDetailService orderDetailService;
@Resource @Resource
private MemberUserMapper memberUserMapper; private MemberUserMapper memberUserMapper;
@Value("${propose.morning}")
private Double proposeMorning;
@Value("${propose.noon}")
private Double proposeNoon;
@Value("${propose.night}")
private Double proposeNight;
@Override @Override
public Long createOrder(AppOrderSaveReqVO createReqVO) { public Long createOrder(AppOrderSaveReqVO createReqVO) {
// 插入 // 插入
@ -96,6 +105,18 @@ public class OrderServiceImpl implements OrderService {
AppOrderRespVO appOrderRespVO = BeanUtils.toBean(order, AppOrderRespVO.class); AppOrderRespVO appOrderRespVO = BeanUtils.toBean(order, AppOrderRespVO.class);
List<AppOrderDetailRespVO> appOrderDetailRespVOS = orderDetailService.selectListByOrderId(id); List<AppOrderDetailRespVO> appOrderDetailRespVOS = orderDetailService.selectListByOrderId(id);
appOrderRespVO.setDetailList(appOrderDetailRespVOS); appOrderRespVO.setDetailList(appOrderDetailRespVOS);
Double reduce = appOrderDetailRespVOS.stream().map(AppOrderDetailRespVO::getHeat).reduce(0d, Double::sum);
appOrderRespVO.setIntake(reduce);
//判断时间
int hour = order.getCreateTime().getHour();
if(TimePeriodEnum.MORNING.getStartInt()<=hour && hour<=TimePeriodEnum.MORNING.getEndInt()){
appOrderRespVO.setProposeIntake(proposeMorning);
} else if (TimePeriodEnum.MIDDAY.getStartInt()<=hour && hour<=TimePeriodEnum.MIDDAY.getEndInt()){
appOrderRespVO.setProposeIntake(proposeNoon);
}else{
appOrderRespVO.setProposeIntake(proposeNight);
}
appOrderRespVO.setDifference(reduce-appOrderRespVO.getProposeIntake());
return appOrderRespVO; return appOrderRespVO;
} }
@ -187,6 +208,7 @@ public class OrderServiceImpl implements OrderService {
@Override @Override
public List<DishOrderDO> getDishOrderByTime(LocalDateTime startTime, LocalDateTime endTime) { public List<DishOrderDO> getDishOrderByTime(LocalDateTime startTime, LocalDateTime endTime) {
List<DishOrderDO> dishOrderDOS = dishOrderMapper.selectList(Wrappers.<DishOrderDO>lambdaQuery() List<DishOrderDO> dishOrderDOS = dishOrderMapper.selectList(Wrappers.<DishOrderDO>lambdaQuery()
.eq(DishOrderDO::getUserId,SecurityFrameworkUtils.getLoginUserId())
.between(DishOrderDO::getCreateTime, startTime, endTime)); .between(DishOrderDO::getCreateTime, startTime, endTime));
return dishOrderDOS; return dishOrderDOS;
} }

View File

@ -0,0 +1,66 @@
package cn.iocoder.yudao.module.member.service.storecomplain;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.storecomplain.vo.StoreComplainPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.storecomplain.vo.StoreComplainSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.storecomplain.vo.AppStoreComplainSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.storecomplain.StoreComplainDO;
import javax.validation.Valid;
/**
* 投诉 Service 接口
*
* @author 开发账号
*/
public interface StoreComplainService {
/**
* 创建投诉
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createStoreComplain(@Valid StoreComplainSaveReqVO createReqVO);
/**
* 更新投诉
*
* @param updateReqVO 更新信息
*/
void updateStoreComplain(@Valid StoreComplainSaveReqVO updateReqVO);
/**
* 删除投诉
*
* @param id 编号
*/
void deleteStoreComplain(Long id);
/**
* 获得投诉
*
* @param id 编号
* @return 投诉
*/
StoreComplainDO getStoreComplain(Long id);
/**
* 获得投诉分页
*
* @param pageReqVO 分页查询
* @return 投诉分页
*/
PageResult<StoreComplainDO> getStoreComplainPage(StoreComplainPageReqVO pageReqVO);
/**
* 创建投诉
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createStoreComplainApp(@Valid AppStoreComplainSaveReqVO createReqVO);
}

View File

@ -0,0 +1,81 @@
package cn.iocoder.yudao.module.member.service.storecomplain;
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.storecomplain.vo.StoreComplainPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.storecomplain.vo.StoreComplainSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.storecomplain.vo.AppStoreComplainSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.storecomplain.StoreComplainDO;
import cn.iocoder.yudao.module.member.dal.mysql.storecomplain.StoreComplainMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.Valid;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_COMPLAIN_NOT_EXISTS;
/**
* 投诉 Service 实现类
*
* @author 开发账号
*/
@Service
@Validated
public class StoreComplainServiceImpl implements StoreComplainService {
@Resource
private StoreComplainMapper storeComplainMapper;
@Override
public Long createStoreComplain(StoreComplainSaveReqVO createReqVO) {
// 插入
StoreComplainDO storeComplain = BeanUtils.toBean(createReqVO, StoreComplainDO.class);
storeComplainMapper.insert(storeComplain);
// 返回
return storeComplain.getId();
}
@Override
public void updateStoreComplain(StoreComplainSaveReqVO updateReqVO) {
// 校验存在
validateStoreComplainExists(updateReqVO.getId());
// 更新
StoreComplainDO updateObj = BeanUtils.toBean(updateReqVO, StoreComplainDO.class);
storeComplainMapper.updateById(updateObj);
}
@Override
public void deleteStoreComplain(Long id) {
// 校验存在
validateStoreComplainExists(id);
// 删除
storeComplainMapper.deleteById(id);
}
private void validateStoreComplainExists(Long id) {
if (storeComplainMapper.selectById(id) == null) {
throw exception(STORE_COMPLAIN_NOT_EXISTS);
}
}
@Override
public StoreComplainDO getStoreComplain(Long id) {
return storeComplainMapper.selectById(id);
}
@Override
public PageResult<StoreComplainDO> getStoreComplainPage(StoreComplainPageReqVO pageReqVO) {
return storeComplainMapper.selectPage(pageReqVO);
}
@Override
public Long createStoreComplainApp(@Valid AppStoreComplainSaveReqVO createReqVO) {
// 插入
StoreComplainDO storeComplain = BeanUtils.toBean(createReqVO, StoreComplainDO.class);
storeComplainMapper.insert(storeComplain);
// 返回
return storeComplain.getId();
}
}

View File

@ -0,0 +1,61 @@
package cn.iocoder.yudao.module.member.service.storeevaluate;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.storeevaluate.vo.StoreEvaluatePageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.storeevaluate.vo.StoreEvaluateSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.storeevaluate.vo.AppStoreEvaluateSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.storeevaluate.StoreEvaluateDO;
import javax.validation.Valid;
/**
* 店铺评价 Service 接口
*
* @author 开发账号
*/
public interface StoreEvaluateService {
/**
* 创建店铺评价
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createStoreEvaluate(@Valid StoreEvaluateSaveReqVO createReqVO);
/**
* 更新店铺评价
*
* @param updateReqVO 更新信息
*/
void updateStoreEvaluate(@Valid StoreEvaluateSaveReqVO updateReqVO);
/**
* 删除店铺评价
*
* @param id 编号
*/
void deleteStoreEvaluate(Long id);
/**
* 获得店铺评价
*
* @param id 编号
* @return 店铺评价
*/
StoreEvaluateDO getStoreEvaluate(Long id);
/**
* 获得店铺评价分页
*
* @param pageReqVO 分页查询
* @return 店铺评价分页
*/
PageResult<StoreEvaluateDO> getStoreEvaluatePage(StoreEvaluatePageReqVO pageReqVO);
Boolean saveOrUpdate(AppStoreEvaluateSaveReqVO createReqVO);
StoreEvaluateDO selectByUserId(Long storeId);
}

View File

@ -0,0 +1,104 @@
package cn.iocoder.yudao.module.member.service.storeevaluate;
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.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.member.controller.admin.storeevaluate.vo.StoreEvaluatePageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.storeevaluate.vo.StoreEvaluateSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.storeevaluate.vo.AppStoreEvaluateSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.storeevaluate.StoreEvaluateDO;
import cn.iocoder.yudao.module.member.dal.mysql.storeevaluate.StoreEvaluateMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_EVALUATE_NOT_EXISTS;
/**
* 店铺评价 Service 实现类
*
* @author 开发账号
*/
@Service
@Validated
public class StoreEvaluateServiceImpl implements StoreEvaluateService {
@Resource
private StoreEvaluateMapper storeEvaluateMapper;
@Override
public Long createStoreEvaluate(StoreEvaluateSaveReqVO createReqVO) {
// 插入
StoreEvaluateDO storeEvaluate = BeanUtils.toBean(createReqVO, StoreEvaluateDO.class);
storeEvaluateMapper.insert(storeEvaluate);
// 返回
return storeEvaluate.getId();
}
@Override
public void updateStoreEvaluate(StoreEvaluateSaveReqVO updateReqVO) {
// 校验存在
validateStoreEvaluateExists(updateReqVO.getId());
// 更新
StoreEvaluateDO updateObj = BeanUtils.toBean(updateReqVO, StoreEvaluateDO.class);
storeEvaluateMapper.updateById(updateObj);
}
@Override
public void deleteStoreEvaluate(Long id) {
// 校验存在
validateStoreEvaluateExists(id);
// 删除
storeEvaluateMapper.deleteById(id);
}
private void validateStoreEvaluateExists(Long id) {
if (storeEvaluateMapper.selectById(id) == null) {
throw exception(STORE_EVALUATE_NOT_EXISTS);
}
}
@Override
public StoreEvaluateDO getStoreEvaluate(Long id) {
return storeEvaluateMapper.selectById(id);
}
@Override
public PageResult<StoreEvaluateDO> getStoreEvaluatePage(StoreEvaluatePageReqVO pageReqVO) {
return storeEvaluateMapper.selectPage(pageReqVO);
}
@Override
public Boolean saveOrUpdate(AppStoreEvaluateSaveReqVO createReqVO) {
StoreEvaluateDO storeEvaluateDO = storeEvaluateMapper.selectOne(Wrappers.<StoreEvaluateDO>lambdaQuery()
.eq(StoreEvaluateDO::getUserId, createReqVO.getUserId())
.eq(createReqVO.getStoreId() != null,StoreEvaluateDO::getStoreId,createReqVO.getStoreId())
.last("limit 1"));
if(storeEvaluateDO == null){
StoreEvaluateDO add = new StoreEvaluateDO();
BeanUtil.copyProperties(createReqVO,add);
return storeEvaluateMapper.insert(add)>0;
}else {
BeanUtil.copyProperties(createReqVO,storeEvaluateDO);
return storeEvaluateMapper.updateById(storeEvaluateDO)>0;
}
}
@Override
public StoreEvaluateDO selectByUserId(Long storeId) {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
if(loginUserId == null ){
return new StoreEvaluateDO();
}
StoreEvaluateDO storeEvaluateDO = storeEvaluateMapper.selectOne(Wrappers.<StoreEvaluateDO>lambdaQuery()
.eq(StoreEvaluateDO::getUserId, loginUserId)
.eq(storeId != null,StoreEvaluateDO::getStoreId,storeId)
.last("limit 1"));
return storeEvaluateDO;
}
}

View File

@ -198,8 +198,12 @@ public interface MemberUserService {
/** /**
* 用户绑卡 * 用户绑卡
*/ */
boolean bindCard(String cardId); Boolean bindCard(String cardId);
/**
* 判定绑卡
*/
Boolean checkCard(Long userId);
/** /**
* 营养日报 * 营养日报
*/ */

View File

@ -4,15 +4,16 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.map.MapBuilder;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.*; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.common.exception.ServerException;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
@ -39,6 +40,7 @@ import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
import cn.iocoder.yudao.module.member.mq.producer.user.MemberUserProducer; import cn.iocoder.yudao.module.member.mq.producer.user.MemberUserProducer;
import cn.iocoder.yudao.module.member.service.order.OrderService; import cn.iocoder.yudao.module.member.service.order.OrderService;
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
import cn.iocoder.yudao.module.member.service.userexpand.UserExpandService;
import cn.iocoder.yudao.module.system.api.dishesnutrition.DishesNutritionApi; import cn.iocoder.yudao.module.system.api.dishesnutrition.DishesNutritionApi;
import cn.iocoder.yudao.module.system.api.dishesnutrition.dto.DishesNutritionRespDTO; import cn.iocoder.yudao.module.system.api.dishesnutrition.dto.DishesNutritionRespDTO;
import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi; import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi;
@ -46,6 +48,7 @@ import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
import cn.iocoder.yudao.module.system.api.social.SocialClientApi; import cn.iocoder.yudao.module.system.api.social.SocialClientApi;
import cn.iocoder.yudao.module.system.api.social.dto.SocialWxPhoneNumberInfoRespDTO; import cn.iocoder.yudao.module.system.api.social.dto.SocialWxPhoneNumberInfoRespDTO;
import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum; import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -58,11 +61,15 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.DayOfWeek;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit; import java.time.temporal.WeekFields;
import java.util.*; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -108,6 +115,8 @@ public class MemberUserServiceImpl implements MemberUserService {
@Resource @Resource
private OrderDetailService orderDetailService; private OrderDetailService orderDetailService;
@Resource
private UserExpandService userExpandService;
@Value("${propose.morning}") @Value("${propose.morning}")
private Double proposeMorning; private Double proposeMorning;
@ -194,9 +203,16 @@ public class MemberUserServiceImpl implements MemberUserService {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateUser(Long userId, AppMemberUserUpdateReqVO reqVO) { public void updateUser(Long userId, AppMemberUserUpdateReqVO reqVO) {
// 校验存在
validateUserExists(userId);
// 校验手机唯一
validateMobileUnique(userId, reqVO.getMobile());
MemberUserDO updateObj = BeanUtils.toBean(reqVO, MemberUserDO.class).setId(userId); MemberUserDO updateObj = BeanUtils.toBean(reqVO, MemberUserDO.class).setId(userId);
memberUserMapper.updateById(updateObj); memberUserMapper.updateById(updateObj);
userExpandService.updateUserExpandByuserId(userId,reqVO);
} }
@Override @Override
@ -368,19 +384,29 @@ public class MemberUserServiceImpl implements MemberUserService {
} }
@Override @Override
public boolean bindCard(String cardId) { public Boolean bindCard(String cardId) {
List<MemberUserDO> memberUserDOS = memberUserMapper.selectList(Wrappers.<MemberUserDO>lambdaQuery().eq(MemberUserDO::getCardId, cardId));
if(memberUserDOS.size()>0){
throw new ServerException(600,"卡号已绑定");
}
MemberUserDO memberUserDO = memberUserMapper.selectById(SecurityFrameworkUtils.getLoginUserId()); MemberUserDO memberUserDO = memberUserMapper.selectById(SecurityFrameworkUtils.getLoginUserId());
memberUserDO.setCardId(cardId); memberUserDO.setCardId(cardId);
return memberUserMapper.updateById(memberUserDO) > 0; return memberUserMapper.updateById(memberUserDO) > 0;
} }
@Override
public Boolean checkCard(Long userId) {
MemberUserDO memberUserDO = memberUserMapper.selectById(userId);
return StrUtil.isNotBlank(memberUserDO.getCardId());
}
@Override @Override
public List<AppNutritionDayVo> nutritionDay(String time) { public List<AppNutritionDayVo> nutritionDay(String time) {
List<AppNutritionDayVo> result = new ArrayList<>(); List<AppNutritionDayVo> result = new ArrayList<>();
//获取日期的订单 //获取日期的订单
String start = time+"00:00:00"; String start = time+" 00:00:00";
String end = time+"23:59:59"; String end = time+" 23:59:59";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime startTime = LocalDateTime.parse(start, formatter); LocalDateTime startTime = LocalDateTime.parse(start, formatter);
LocalDateTime endTime = LocalDateTime.parse(end, formatter); LocalDateTime endTime = LocalDateTime.parse(end, formatter);
@ -436,110 +462,29 @@ public class MemberUserServiceImpl implements MemberUserService {
public List<AppNutritionWeekVO> NutritionWeek(String start, String end) { public List<AppNutritionWeekVO> NutritionWeek(String start, String end) {
List<AppNutritionWeekVO> result = new ArrayList<>(); List<AppNutritionWeekVO> result = new ArrayList<>();
//获取日期的订单 //获取日期的订单
String newStart = start+"00:00:00"; String newStart = start + " 00:00:00";
String newEnd = end+"23:59:59"; String newEnd = end + " 23:59:59";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDateTime startTime = LocalDateTime.parse(newStart, formatter); LocalDateTime startTime = LocalDateTime.parse(newStart, formatter);
LocalDateTime endTime = LocalDateTime.parse(newEnd, formatter); LocalDateTime endTime = LocalDateTime.parse(newEnd, formatter);
List<DishOrderDO> dishOrderDOS = orderService.getDishOrderByTime(startTime, endTime); List<DishOrderDO> dishOrderDOS = orderService.getDishOrderByTime(startTime, endTime);
//周一
LocalDateTime monday = startTime.with(DayOfWeek.MONDAY);
String mondayString = monday.format(formatter1);
List<DishOrderDO> mondayCollect = dishOrderDOS.stream().filter(orderDO -> mondayString.equals(orderDO.getCreateTime().format(formatter1)))
.collect(Collectors.toList());
//获取当天的点的所有菜品
List<Long> mondayOrderIds = mondayCollect.stream().map(DishOrderDO::getId).collect(Collectors.toList());
List<OrderDetailDO> mondayOrderDetailDOS = orderDetailService.selectListByOrderIds(mondayOrderIds);
AppNutritionWeekVO mondayVO = new AppNutritionWeekVO();
mondayVO.setDetailList(mondayOrderDetailDOS);
mondayVO.setIntake(mondayOrderDetailDOS.stream().map(OrderDetailDO::getHeat).reduce(0d,Double::sum));
mondayVO.setTime(mondayString);
result.add(mondayVO);
//周二 WeekFields weekFields = WeekFields.ISO;
LocalDateTime tuesday = startTime.with(DayOfWeek.TUESDAY); for (Long i = 1L; i <= 7; i++) {
String tuesdayString = tuesday.format(formatter1); LocalDateTime mondayDate = startTime.with(weekFields.dayOfWeek(), i);
List<DishOrderDO> tuesdayCollect = dishOrderDOS.stream().filter(orderDO -> tuesdayString.equals(orderDO.getCreateTime().format(formatter1))) String format = mondayDate.format(formatter1);
.collect(Collectors.toList()); List<Long> ids = dishOrderDOS.stream().filter(orderDO -> format.equals(orderDO.getCreateTime().format(formatter1)))
//获取当天的点的所有菜品 .map(DishOrderDO::getId).collect(Collectors.toList());
List<Long> tuesdayOrderIds = tuesdayCollect.stream().map(DishOrderDO::getId).collect(Collectors.toList()); AppNutritionWeekVO mondayVO = new AppNutritionWeekVO();
List<OrderDetailDO> tuesdayOrderDetailDOS = orderDetailService.selectListByOrderIds(tuesdayOrderIds); mondayVO.setTime(format);
AppNutritionWeekVO tuesdayVO = new AppNutritionWeekVO(); if (CollectionUtil.isNotEmpty(ids)) {
tuesdayVO.setDetailList(tuesdayOrderDetailDOS); List<OrderDetailDO> orderDetailDOS = orderDetailService.selectListByOrderIds(ids);
tuesdayVO.setIntake(tuesdayOrderDetailDOS.stream().map(OrderDetailDO::getHeat).reduce(0d,Double::sum)); mondayVO.setDetailList(orderDetailDOS);
tuesdayVO.setTime(tuesdayString); mondayVO.setIntake(orderDetailDOS.stream().map(OrderDetailDO::getHeat).reduce(0d, Double::sum));
result.add(tuesdayVO); }
result.add(mondayVO);
//周三 }
LocalDateTime wednesday = startTime.with(DayOfWeek.WEDNESDAY);
String wednesdayString = wednesday.format(formatter1);
List<DishOrderDO> wednesdayCollect = dishOrderDOS.stream().filter(orderDO -> wednesdayString.equals(orderDO.getCreateTime().format(formatter1)))
.collect(Collectors.toList());
//获取当天的点的所有菜品
List<Long> wednesdayOrderIds = wednesdayCollect.stream().map(DishOrderDO::getId).collect(Collectors.toList());
List<OrderDetailDO> wednesdayOrderDetailDOS = orderDetailService.selectListByOrderIds(wednesdayOrderIds);
AppNutritionWeekVO wednesdayVO = new AppNutritionWeekVO();
wednesdayVO.setDetailList(wednesdayOrderDetailDOS);
wednesdayVO.setIntake(wednesdayOrderDetailDOS.stream().map(OrderDetailDO::getHeat).reduce(0d,Double::sum));
wednesdayVO.setTime(wednesdayString);
result.add(wednesdayVO);
//周四
LocalDateTime thursday = startTime.with(DayOfWeek.THURSDAY);
String thursdayString = thursday.format(formatter1);
List<DishOrderDO> thursdayCollect = dishOrderDOS.stream().filter(orderDO -> thursdayString.equals(orderDO.getCreateTime().format(formatter1)))
.collect(Collectors.toList());
//获取当天的点的所有菜品
List<Long> thursdayOrderIds = thursdayCollect.stream().map(DishOrderDO::getId).collect(Collectors.toList());
List<OrderDetailDO> thursdayOrderDetailDOS = orderDetailService.selectListByOrderIds(thursdayOrderIds);
AppNutritionWeekVO thursdayVO = new AppNutritionWeekVO();
thursdayVO.setDetailList(thursdayOrderDetailDOS);
thursdayVO.setIntake(thursdayOrderDetailDOS.stream().map(OrderDetailDO::getHeat).reduce(0d,Double::sum));
thursdayVO.setTime(thursdayString);
result.add(thursdayVO);
//周五
LocalDateTime friday = startTime.with(DayOfWeek.FRIDAY);
String fridayString = friday.format(formatter1);
List<DishOrderDO> fridayCollect = dishOrderDOS.stream().filter(orderDO -> fridayString.equals(orderDO.getCreateTime().format(formatter1)))
.collect(Collectors.toList());
//获取当天的点的所有菜品
List<Long> fridayOrderIds = fridayCollect.stream().map(DishOrderDO::getId).collect(Collectors.toList());
List<OrderDetailDO> fridayOrderDetailDOS = orderDetailService.selectListByOrderIds(fridayOrderIds);
AppNutritionWeekVO fridayVO = new AppNutritionWeekVO();
fridayVO.setDetailList(fridayOrderDetailDOS);
fridayVO.setIntake(fridayOrderDetailDOS.stream().map(OrderDetailDO::getHeat).reduce(0d,Double::sum));
fridayVO.setTime(fridayString);
result.add(fridayVO);
//周六
LocalDateTime saturday = startTime.with(DayOfWeek.SATURDAY);
String saturdayString = saturday.format(formatter1);
List<DishOrderDO> saturdayCollect = dishOrderDOS.stream().filter(orderDO -> saturdayString.equals(orderDO.getCreateTime().format(formatter1)))
.collect(Collectors.toList());
//获取当天的点的所有菜品
List<Long> saturdayOrderIds = saturdayCollect.stream().map(DishOrderDO::getId).collect(Collectors.toList());
List<OrderDetailDO> saturdayOrderDetailDOS = orderDetailService.selectListByOrderIds(saturdayOrderIds);
AppNutritionWeekVO saturdayVO = new AppNutritionWeekVO();
saturdayVO.setDetailList(saturdayOrderDetailDOS);
saturdayVO.setIntake(saturdayOrderDetailDOS.stream().map(OrderDetailDO::getHeat).reduce(0d,Double::sum));
saturdayVO.setTime(saturdayString);
result.add(saturdayVO);
//周日
LocalDateTime sunday = startTime.with(DayOfWeek.SUNDAY);
String sundayString = sunday.format(formatter1);
List<DishOrderDO> sundayCollect = dishOrderDOS.stream().filter(orderDO -> sundayString.equals(orderDO.getCreateTime().format(formatter1)))
.collect(Collectors.toList());
//获取当天的点的所有菜品
List<Long> sundayOrderIds = sundayCollect.stream().map(DishOrderDO::getId).collect(Collectors.toList());
List<OrderDetailDO> sundayOrderDetailDOS = orderDetailService.selectListByOrderIds(sundayOrderIds);
AppNutritionWeekVO sundayVO = new AppNutritionWeekVO();
sundayVO.setDetailList(sundayOrderDetailDOS);
sundayVO.setIntake(sundayOrderDetailDOS.stream().map(OrderDetailDO::getHeat).reduce(0d,Double::sum));
sundayVO.setTime(sundayString);
result.add(sundayVO);
return result; return result;
} }

View File

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.member.service.userexpand;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.userexpand.vo.UserExpandPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.userexpand.vo.UserExpandPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.userexpand.vo.UserExpandSaveReqVO; import cn.iocoder.yudao.module.member.controller.admin.userexpand.vo.UserExpandSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.userexpand.UserExpandDO; import cn.iocoder.yudao.module.member.dal.dataobject.userexpand.UserExpandDO;
import javax.validation.Valid; import javax.validation.Valid;
@ -52,4 +53,6 @@ public interface UserExpandService {
*/ */
PageResult<UserExpandDO> getUserExpandPage(UserExpandPageReqVO pageReqVO); PageResult<UserExpandDO> getUserExpandPage(UserExpandPageReqVO pageReqVO);
void updateUserExpandByuserId(Long userId, AppMemberUserUpdateReqVO reqVO);
} }

View File

@ -1,21 +1,21 @@
package cn.iocoder.yudao.module.member.service.userexpand; package cn.iocoder.yudao.module.member.service.userexpand;
import org.springframework.stereotype.Service; import cn.hutool.core.bean.BeanUtil;
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.userexpand.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.userexpand.UserExpandDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.userexpand.vo.UserExpandPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.userexpand.vo.UserExpandSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.userexpand.UserExpandDO;
import cn.iocoder.yudao.module.member.dal.mysql.userexpand.UserExpandMapper; import cn.iocoder.yudao.module.member.dal.mysql.userexpand.UserExpandMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.USER_EXPAND_NOT_EXISTS;
/** /**
* 用户拓展属性 Service 实现类 * 用户拓展属性 Service 实现类
@ -71,4 +71,19 @@ public class UserExpandServiceImpl implements UserExpandService {
return userExpandMapper.selectPage(pageReqVO); return userExpandMapper.selectPage(pageReqVO);
} }
@Override
public void updateUserExpandByuserId(Long userId, AppMemberUserUpdateReqVO reqVO) {
UserExpandDO userExpandDO = userExpandMapper.selectOne(Wrappers.<UserExpandDO>lambdaQuery()
.eq(UserExpandDO::getUserId, userId)
.last("limit 1"));
if(userExpandDO == null){
UserExpandDO add = new UserExpandDO();
BeanUtil.copyProperties(reqVO,add);
add.setUserId(userId);
userExpandMapper.insert(add);
}else {
BeanUtil.copyProperties(reqVO,userExpandDO);
userExpandMapper.updateById(userExpandDO);
}
}
} }

View File

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.member.service.userpreference;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.userpreference.vo.UserPreferencePageReqVO; import cn.iocoder.yudao.module.member.controller.admin.userpreference.vo.UserPreferencePageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.userpreference.vo.UserPreferenceSaveReqVO; import cn.iocoder.yudao.module.member.controller.admin.userpreference.vo.UserPreferenceSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.userpreference.vo.AppUserPreferenceSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.userpreference.UserPreferenceDO; import cn.iocoder.yudao.module.member.dal.dataobject.userpreference.UserPreferenceDO;
import javax.validation.Valid; import javax.validation.Valid;
@ -52,4 +53,15 @@ public interface UserPreferenceService {
*/ */
PageResult<UserPreferenceDO> getUserPreferencePage(UserPreferencePageReqVO pageReqVO); PageResult<UserPreferenceDO> getUserPreferencePage(UserPreferencePageReqVO pageReqVO);
/**
* 设置用户偏好
*/
Boolean saveOrUpdate(AppUserPreferenceSaveReqVO updateReqVO);
UserPreferenceDO getUserPreferenceByUserId(Long userId);
} }

View File

@ -1,21 +1,21 @@
package cn.iocoder.yudao.module.member.service.userpreference; package cn.iocoder.yudao.module.member.service.userpreference;
import org.springframework.stereotype.Service; import cn.hutool.core.bean.BeanUtil;
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.userpreference.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.userpreference.UserPreferenceDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.userpreference.vo.UserPreferencePageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.userpreference.vo.UserPreferenceSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.userpreference.vo.AppUserPreferenceSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.userpreference.UserPreferenceDO;
import cn.iocoder.yudao.module.member.dal.mysql.userpreference.UserPreferenceMapper; import cn.iocoder.yudao.module.member.dal.mysql.userpreference.UserPreferenceMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.USER_PREFERENCE_NOT_EXISTS;
/** /**
* 用户偏好 Service 实现类 * 用户偏好 Service 实现类
@ -71,4 +71,29 @@ public class UserPreferenceServiceImpl implements UserPreferenceService {
return userPreferenceMapper.selectPage(pageReqVO); return userPreferenceMapper.selectPage(pageReqVO);
} }
@Override
public Boolean saveOrUpdate(AppUserPreferenceSaveReqVO updateReqVO) {
UserPreferenceDO userPreferenceDO = userPreferenceMapper.selectOne(Wrappers.<UserPreferenceDO>lambdaQuery()
.eq(UserPreferenceDO::getUserId, updateReqVO.getUserId())
.last("limit 1"));
Boolean result = true;
if(userPreferenceDO == null){
UserPreferenceDO add = new UserPreferenceDO();
BeanUtil.copyProperties(updateReqVO,add);
result = userPreferenceMapper.insert(add)>0;
}else {
BeanUtil.copyProperties(updateReqVO,userPreferenceDO);
result = userPreferenceMapper.updateById(userPreferenceDO)>0;
}
return result;
}
@Override
public UserPreferenceDO getUserPreferenceByUserId(Long userId) {
UserPreferenceDO userPreferenceDO = userPreferenceMapper.selectOne(Wrappers.<UserPreferenceDO>lambdaQuery()
.eq(UserPreferenceDO::getUserId, userId)
.last("limit 1"));
return userPreferenceDO;
}
} }