diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/DishStatisticsController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/DishStatisticsController.java index 182c0d60..4513cc3e 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/DishStatisticsController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/DishStatisticsController.java @@ -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 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> getDishStatisticsPage(@Valid DishStatisticsPageReqVO pageReqVO) { PageResult pageResult = dishStatisticsService.getDishStatisticsPage(pageReqVO); return success(BeanUtils.toBean(pageResult, DishStatisticsRespVO.class)); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsRespVO.java index 2a0730a8..80b8c179 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsRespVO.java @@ -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; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/ScreenController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/ScreenController.java index 5ca44c77..0647e49f 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/ScreenController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/ScreenController.java @@ -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> getPercent() { + return success(preferenceService.getPercent()); + } + + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userpreference/vo/UserPreferencePercentVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userpreference/vo/UserPreferencePercentVO.java new file mode 100644 index 00000000..8796b1de --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userpreference/vo/UserPreferencePercentVO.java @@ -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 + * @since 2024/4/24 + */ +@Data +public class UserPreferencePercentVO { + + @Schema(description = "类型名") + private String name; + + @Schema(description = "所占百分比") + private String percent; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/userpreference/UserPreferenceMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/userpreference/UserPreferenceMapper.java index c90bef44..dcd08635 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/userpreference/UserPreferenceMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/userpreference/UserPreferenceMapper.java @@ -30,4 +30,6 @@ public interface UserPreferenceMapper extends BaseMapperX { .orderByDesc(UserPreferenceDO::getId)); } + Integer selectCountByType(String Type); + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/TastePreferencesEnum.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/TastePreferencesEnum.java new file mode 100644 index 00000000..256b6a53 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/TastePreferencesEnum.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.member.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author zt + * @description + * @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; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userpreference/UserPreferenceService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userpreference/UserPreferenceService.java index aa4c4507..bcb537b2 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userpreference/UserPreferenceService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userpreference/UserPreferenceService.java @@ -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 getPercent(); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userpreference/UserPreferenceServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userpreference/UserPreferenceServiceImpl.java index f547afa7..dd0dd80b 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userpreference/UserPreferenceServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userpreference/UserPreferenceServiceImpl.java @@ -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 getPercent() { + List 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; + } + + + + + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/userpreference/UserPreferenceMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/userpreference/UserPreferenceMapper.xml new file mode 100644 index 00000000..93be43a6 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/userpreference/UserPreferenceMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file