修改
This commit is contained in:
@ -1,33 +1,38 @@
|
|||||||
package cn.iocoder.yudao.module.member.controller.admin.dishstatistics;
|
package cn.iocoder.yudao.module.member.controller.admin.dishstatistics;
|
||||||
|
|
||||||
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.dishstatistics.vo.DishStatisticsPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.dishstatistics.vo.DishStatisticsRespVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.dishstatistics.vo.*;
|
import cn.iocoder.yudao.module.member.controller.admin.dishstatistics.vo.DishStatisticsSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.dishstatistics.DishStatisticsDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.dishstatistics.DishStatisticsDO;
|
||||||
import cn.iocoder.yudao.module.member.service.dishstatistics.DishStatisticsService;
|
import cn.iocoder.yudao.module.member.service.dishstatistics.DishStatisticsService;
|
||||||
|
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
|
||||||
@ -65,7 +70,7 @@ public class DishStatisticsController {
|
|||||||
@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:dish-statistics:query')")
|
//@PreAuthorize("@ss.hasPermission('member:dish-statistics:query')")
|
||||||
public CommonResult<DishStatisticsRespVO> getDishStatistics(@RequestParam("id") Long id) {
|
public CommonResult<DishStatisticsRespVO> getDishStatistics(@RequestParam("id") Long id) {
|
||||||
DishStatisticsDO dishStatistics = dishStatisticsService.getDishStatistics(id);
|
DishStatisticsDO dishStatistics = dishStatisticsService.getDishStatistics(id);
|
||||||
return success(BeanUtils.toBean(dishStatistics, DishStatisticsRespVO.class));
|
return success(BeanUtils.toBean(dishStatistics, DishStatisticsRespVO.class));
|
||||||
@ -73,7 +78,7 @@ public class DishStatisticsController {
|
|||||||
|
|
||||||
@GetMapping("/page")
|
@GetMapping("/page")
|
||||||
@Operation(summary = "获得菜品统计分页")
|
@Operation(summary = "获得菜品统计分页")
|
||||||
@PreAuthorize("@ss.hasPermission('member:dish-statistics:query')")
|
//@PreAuthorize("@ss.hasPermission('member:dish-statistics:query')")
|
||||||
public CommonResult<PageResult<DishStatisticsRespVO>> getDishStatisticsPage(@Valid DishStatisticsPageReqVO pageReqVO) {
|
public CommonResult<PageResult<DishStatisticsRespVO>> getDishStatisticsPage(@Valid DishStatisticsPageReqVO pageReqVO) {
|
||||||
PageResult<DishStatisticsDO> pageResult = dishStatisticsService.getDishStatisticsPage(pageReqVO);
|
PageResult<DishStatisticsDO> pageResult = dishStatisticsService.getDishStatisticsPage(pageReqVO);
|
||||||
return success(BeanUtils.toBean(pageResult, DishStatisticsRespVO.class));
|
return success(BeanUtils.toBean(pageResult, DishStatisticsRespVO.class));
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package cn.iocoder.yudao.module.member.controller.admin.dishstatistics.vo;
|
package cn.iocoder.yudao.module.member.controller.admin.dishstatistics.vo;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
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 java.util.*;
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import com.alibaba.excel.annotation.*;
|
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 菜品统计 Response VO")
|
@Schema(description = "管理后台 - 菜品统计 Response VO")
|
||||||
@Data
|
@Data
|
||||||
@ -38,6 +37,10 @@ public class DishStatisticsRespVO {
|
|||||||
@ExcelProperty("重量")
|
@ExcelProperty("重量")
|
||||||
private BigDecimal weight;
|
private BigDecimal weight;
|
||||||
|
|
||||||
|
@Schema(description = "价钱")
|
||||||
|
@ExcelProperty("价钱")
|
||||||
|
private BigDecimal money;
|
||||||
|
|
||||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@ExcelProperty("创建时间")
|
@ExcelProperty("创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.Custom
|
|||||||
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.CarTeenInfoVO;
|
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.CarTeenInfoVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVO;
|
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.StoreEvaluateVO;
|
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.StoreEvaluateVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.userpreference.vo.UserPreferencePercentVO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDetailDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDetailDO;
|
||||||
import cn.iocoder.yudao.module.member.service.customertraffic.CustomerTrafficService;
|
import cn.iocoder.yudao.module.member.service.customertraffic.CustomerTrafficService;
|
||||||
@ -15,6 +16,7 @@ import cn.iocoder.yudao.module.member.service.devicewarn.DeviceWarnService;
|
|||||||
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.storeevaluate.StoreEvaluateService;
|
import cn.iocoder.yudao.module.member.service.storeevaluate.StoreEvaluateService;
|
||||||
|
import cn.iocoder.yudao.module.member.service.userpreference.UserPreferenceService;
|
||||||
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.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.Parameters;
|
import io.swagger.v3.oas.annotations.Parameters;
|
||||||
@ -53,6 +55,8 @@ public class ScreenController {
|
|||||||
private OrderDetailService orderDetailService;
|
private OrderDetailService orderDetailService;
|
||||||
@Resource
|
@Resource
|
||||||
private DeviceWarnService deviceWarnService;
|
private DeviceWarnService deviceWarnService;
|
||||||
|
@Resource
|
||||||
|
private UserPreferenceService preferenceService;
|
||||||
|
|
||||||
@GetMapping("/getEvaluate")
|
@GetMapping("/getEvaluate")
|
||||||
@Operation(summary = "获得店铺评价,1-好评,2-差评")
|
@Operation(summary = "获得店铺评价,1-好评,2-差评")
|
||||||
@ -134,4 +138,12 @@ public class ScreenController {
|
|||||||
return success(orderService.getCarTeenInfo());
|
return success(orderService.getCarTeenInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/getPreference")
|
||||||
|
@Operation(summary = "获取偏好")
|
||||||
|
@PermitAll
|
||||||
|
public CommonResult<List<UserPreferencePercentVO>> getPercent() {
|
||||||
|
return success(preferenceService.getPercent());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.controller.admin.userpreference.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author zt
|
||||||
|
* @description <description class purpose>
|
||||||
|
* @since 2024/4/24
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class UserPreferencePercentVO {
|
||||||
|
|
||||||
|
@Schema(description = "类型名")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Schema(description = "所占百分比")
|
||||||
|
private String percent;
|
||||||
|
}
|
@ -30,4 +30,6 @@ public interface UserPreferenceMapper extends BaseMapperX<UserPreferenceDO> {
|
|||||||
.orderByDesc(UserPreferenceDO::getId));
|
.orderByDesc(UserPreferenceDO::getId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Integer selectCountByType(String Type);
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author zt
|
||||||
|
* @description <description class purpose>
|
||||||
|
* @since 2024/4/24
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public enum TastePreferencesEnum {
|
||||||
|
|
||||||
|
VEGETARIAN("1","素食"),
|
||||||
|
SEAFOOD("2","海鲜"),
|
||||||
|
MEAT("3","肉类"),
|
||||||
|
DAIRY_PRODUCTS("4","乳制品"),
|
||||||
|
SNACKS("5","零食类"),
|
||||||
|
BEANS("6","豆类")
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
private String code;
|
||||||
|
private String name;
|
||||||
|
}
|
@ -2,11 +2,13 @@ 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.UserPreferencePercentVO;
|
||||||
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.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;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户偏好 Service 接口
|
* 用户偏好 Service 接口
|
||||||
@ -62,6 +64,6 @@ public interface UserPreferenceService {
|
|||||||
|
|
||||||
UserPreferenceDO getUserPreferenceByUserId(Long userId);
|
UserPreferenceDO getUserPreferenceByUserId(Long userId);
|
||||||
|
|
||||||
|
List<UserPreferencePercentVO> getPercent();
|
||||||
|
|
||||||
}
|
}
|
@ -4,16 +4,21 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
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.userpreference.vo.UserPreferencePageReqVO;
|
import cn.iocoder.yudao.module.member.controller.admin.userpreference.vo.UserPreferencePageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.userpreference.vo.UserPreferencePercentVO;
|
||||||
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.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 cn.iocoder.yudao.module.member.dal.mysql.userpreference.UserPreferenceMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.userpreference.UserPreferenceMapper;
|
||||||
|
import cn.iocoder.yudao.module.member.enums.TastePreferencesEnum;
|
||||||
import cn.iocoder.yudao.module.member.util.MemberConstants;
|
import cn.iocoder.yudao.module.member.util.MemberConstants;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
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;
|
||||||
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.USER_PREFERENCE_NOT_EXISTS;
|
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.USER_PREFERENCE_NOT_EXISTS;
|
||||||
@ -97,4 +102,27 @@ public class UserPreferenceServiceImpl implements UserPreferenceService {
|
|||||||
.last(MemberConstants.LIMIT_ONE));
|
.last(MemberConstants.LIMIT_ONE));
|
||||||
return userPreferenceDO;
|
return userPreferenceDO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<UserPreferencePercentVO> getPercent() {
|
||||||
|
List<UserPreferencePercentVO> list = new ArrayList<>();
|
||||||
|
Long count = userPreferenceMapper.selectCount();
|
||||||
|
if (count != null && count != 0) {
|
||||||
|
BigDecimal total = new BigDecimal(count);
|
||||||
|
for (TastePreferencesEnum preferencesEnum : TastePreferencesEnum.values()) {
|
||||||
|
Integer i = userPreferenceMapper.selectCountByType(preferencesEnum.getName());
|
||||||
|
BigDecimal divide = new BigDecimal(i).divide(total,2,BigDecimal.ROUND_HALF_UP)
|
||||||
|
.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP);
|
||||||
|
UserPreferencePercentVO userPreferencePercentVO = new UserPreferencePercentVO();
|
||||||
|
userPreferencePercentVO.setName(preferencesEnum.getName()).setPercent(divide + "%");
|
||||||
|
list.add(userPreferencePercentVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="cn.iocoder.yudao.module.member.dal.mysql.userpreference.UserPreferenceMapper">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||||
|
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||||||
|
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||||
|
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||||
|
-->
|
||||||
|
<select id="selectCountByType" resultType="integer">
|
||||||
|
select count(1) from member_user_preference where find_in_set(#{type},food_type)
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</mapper>
|
Reference in New Issue
Block a user