This commit is contained in:
zengtao01
2024-04-25 09:53:52 +08:00
parent 3da4d002c3
commit ae0ee43b58
9 changed files with 147 additions and 35 deletions

View File

@ -1,33 +1,38 @@
package cn.iocoder.yudao.module.member.controller.admin.dishstatistics;
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.CommonResult;
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.dishstatistics.vo.*;
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.DishStatisticsSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.dishstatistics.DishStatisticsDO;
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 = "管理后台 - 菜品统计")
@RestController
@ -65,7 +70,7 @@ public class DishStatisticsController {
@GetMapping("/get")
@Operation(summary = "获得菜品统计")
@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) {
DishStatisticsDO dishStatistics = dishStatisticsService.getDishStatistics(id);
return success(BeanUtils.toBean(dishStatistics, DishStatisticsRespVO.class));
@ -73,7 +78,7 @@ public class DishStatisticsController {
@GetMapping("/page")
@Operation(summary = "获得菜品统计分页")
@PreAuthorize("@ss.hasPermission('member:dish-statistics:query')")
//@PreAuthorize("@ss.hasPermission('member:dish-statistics:query')")
public CommonResult<PageResult<DishStatisticsRespVO>> getDishStatisticsPage(@Valid DishStatisticsPageReqVO pageReqVO) {
PageResult<DishStatisticsDO> pageResult = dishStatisticsService.getDishStatisticsPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DishStatisticsRespVO.class));

View File

@ -1,13 +1,12 @@
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 lombok.*;
import java.util.*;
import java.util.*;
import lombok.Data;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 菜品统计 Response VO")
@Data
@ -38,6 +37,10 @@ public class DishStatisticsRespVO {
@ExcelProperty("重量")
private BigDecimal weight;
@Schema(description = "价钱")
@ExcelProperty("价钱")
private BigDecimal money;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;

View File

@ -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.DishVO;
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.CustomerTrafficDetailDO;
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.orderdetail.OrderDetailService;
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.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
@ -53,6 +55,8 @@ public class ScreenController {
private OrderDetailService orderDetailService;
@Resource
private DeviceWarnService deviceWarnService;
@Resource
private UserPreferenceService preferenceService;
@GetMapping("/getEvaluate")
@Operation(summary = "获得店铺评价,1-好评2-差评")
@ -134,4 +138,12 @@ public class ScreenController {
return success(orderService.getCarTeenInfo());
}
@GetMapping("/getPreference")
@Operation(summary = "获取偏好")
@PermitAll
public CommonResult<List<UserPreferencePercentVO>> getPercent() {
return success(preferenceService.getPercent());
}
}

View File

@ -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;
}

View File

@ -30,4 +30,6 @@ public interface UserPreferenceMapper extends BaseMapperX<UserPreferenceDO> {
.orderByDesc(UserPreferenceDO::getId));
}
Integer selectCountByType(String Type);
}

View File

@ -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;
}

View File

@ -2,11 +2,13 @@ package cn.iocoder.yudao.module.member.service.userpreference;
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.UserPreferencePercentVO;
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 javax.validation.Valid;
import java.util.List;
/**
* 用户偏好 Service 接口
@ -62,6 +64,6 @@ public interface UserPreferenceService {
UserPreferenceDO getUserPreferenceByUserId(Long userId);
List<UserPreferencePercentVO> getPercent();
}

View File

@ -4,16 +4,21 @@ import cn.hutool.core.bean.BeanUtil;
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.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.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.enums.TastePreferencesEnum;
import cn.iocoder.yudao.module.member.util.MemberConstants;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
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.module.member.enums.ErrorCodeConstants.USER_PREFERENCE_NOT_EXISTS;
@ -78,13 +83,13 @@ public class UserPreferenceServiceImpl implements UserPreferenceService {
.eq(UserPreferenceDO::getUserId, updateReqVO.getUserId())
.last(MemberConstants.LIMIT_ONE));
Boolean result = true;
if(userPreferenceDO == null){
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;
BeanUtil.copyProperties(updateReqVO, add);
result = userPreferenceMapper.insert(add) > 0;
} else {
BeanUtil.copyProperties(updateReqVO, userPreferenceDO);
result = userPreferenceMapper.updateById(userPreferenceDO) > 0;
}
return result;
@ -97,4 +102,27 @@ public class UserPreferenceServiceImpl implements UserPreferenceService {
.last(MemberConstants.LIMIT_ONE));
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;
}
}

View File

@ -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>