diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/UserPageDTO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/UserPageDTO.java new file mode 100644 index 000000000..2efa0087d --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/UserPageDTO.java @@ -0,0 +1,26 @@ +package com.bsd.pjcloud.canteen.dto; + +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.LocalDate; + + +@Schema(description = "管理后台 - 每日菜谱用户订餐喜好分析DTO") +@Data +@ToString(callSuper = true) +public class UserPageDTO{ + + @Schema(description = "开始时间") + @DateTimeFormat(pattern ="yyyy-MM-dd HH:mm:ss") + private LocalDate[] times; + + @Schema(description = "商品 SPU 编号", example = "21292") + private Long spuId; + + @Schema(description = "用户名") + private String userName; + +} \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/LikeFoodVO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/LikeFoodVO.java new file mode 100644 index 000000000..b318437f3 --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/LikeFoodVO.java @@ -0,0 +1,46 @@ +package com.bsd.pjcloud.canteen.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 用户订餐喜好vo + */ +@Data +public class LikeFoodVO { + + + /** + * 总数 + */ + private Integer totalNum; + + /** + * 单价 + */ + private BigDecimal unitPrice; + /** + * 支付总金额 + */ + private BigDecimal totalPrice; + + /** + * 商品id + */ + private Long id; + + private String spuName; + + /** + * 商品封面图 + */ + private String picUrl; + + /** + * 分类名称 + */ + private String categoryName; +} diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/MerchantCollectMoneyCodeDto.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/MerchantCollectMoneyCodeDto.java new file mode 100644 index 000000000..dda1801f3 --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/MerchantCollectMoneyCodeDto.java @@ -0,0 +1,26 @@ +package com.bsd.pjcloud.canteen.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class MerchantCollectMoneyCodeDto { + /** + * 商户Id + */ + private Long id; + /** + * 商户名 + */ + private String name; + /** + * 商户类型 + */ + private String merchantType; + +} diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOrderingPreferencesController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOrderingPreferencesController.java new file mode 100644 index 000000000..4cc543ce6 --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOrderingPreferencesController.java @@ -0,0 +1,57 @@ +package com.bsd.pjcloud.canteen.controller; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.canteen.dto.UserPageDTO; +import com.bsd.pjcloud.canteen.entity.CanteenCategoryEntity; +import com.bsd.pjcloud.canteen.service.CanteenCategoryService; +import com.bsd.pjcloud.canteen.service.OrderingPreferencesService; +import com.bsd.pjcloud.canteen.vo.LikeFoodVO; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; +import com.bsd.pjcloud.common.log.annotation.SysLog; +import com.bsd.pjcloud.common.security.util.SecurityUtils; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 用户订餐喜好分析 + * + * @author zhangjifu + * @date 2024-12-05 17:54:19 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/orderingPreferences" ) +@Tag(description = "orderingPreferences" , name = "订餐喜好分析" ) +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class CanteenOrderingPreferencesController { + + private final OrderingPreferencesService orderingPreferencesService; + + + /** + * @param page + * @return + */ + @GetMapping("/page") + @Operation(summary = "用户订餐喜好分析分页") + public R getPage(@ParameterObject Page page,UserPageDTO userPageDTO) { + + return R.ok(orderingPreferencesService.getPage(page,userPageDTO)); + } + + +} \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java index a6da29476..bc5d3e64b 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java @@ -125,4 +125,5 @@ public class CanteenSpuController { } + } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/MerchantInfoController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/MerchantInfoController.java index ee81e3af9..6dc28df27 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/MerchantInfoController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/MerchantInfoController.java @@ -3,16 +3,22 @@ package com.bsd.pjcloud.canteen.controller; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.qrcode.QrCodeUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.admin.api.entity.SysDept; import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; +import com.bsd.pjcloud.canteen.vo.MerchantCollectMoneyCodeDto; import com.bsd.pjcloud.canteen.vo.MerchantInfoVO; import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.file.core.FileTemplate; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.canteen.entity.MerchantInfoEntity; import com.bsd.pjcloud.canteen.service.MerchantInfoService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -23,6 +29,7 @@ import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.io.ByteArrayInputStream; import java.util.List; import java.util.Map; import java.util.Objects; @@ -45,6 +52,9 @@ public class MerchantInfoController { private final RemoteDeptService remoteDeptService; + @Autowired + private FileTemplate template; + /** * 分页查询 * @param page 分页对象 @@ -87,7 +97,7 @@ public class MerchantInfoController { @SysLog("新增商户管理" ) @PostMapping @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_add')" ) - public R save(@RequestBody MerchantInfoEntity merchantInfo) { + public R save(@RequestBody MerchantInfoEntity merchantInfo) throws Exception { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.eq(MerchantInfoEntity::getName, merchantInfo.getName()); @@ -103,9 +113,29 @@ public class MerchantInfoController { if (isDepartmentAlreadyBound) { return R.failed("部门已被绑定"); } - return R.ok(merchantInfoService.save(merchantInfo)); + merchantInfoService.save(merchantInfo); + // 生成二维码 + MerchantCollectMoneyCodeDto merchantCollectMoneyCodeDto = new MerchantCollectMoneyCodeDto(); + BeanUtils.copyProperties(merchantInfo, merchantCollectMoneyCodeDto); + String collectMoneyCodeImg = this.generateMerchantCollectMoneyCode(merchantCollectMoneyCodeDto); + + MerchantInfoEntity merchantInfoEntity = new MerchantInfoEntity(); + merchantInfoEntity.setCollectMoneyCode(collectMoneyCodeImg); + merchantInfoEntity.setId(merchantInfo.getId()); + merchantInfoService.updateById(merchantInfoEntity); +// /admin/sys-file/oss/file?fileName=76109ebb7ecb4a0ca3a58d7444eebe04.png + + return R.ok(); } + // 生成商户收款码 + private String generateMerchantCollectMoneyCode(MerchantCollectMoneyCodeDto dto) throws Exception { + String fileName = "merchant_collect_money_code" + dto.getId(); + byte[] image = QrCodeUtil.generatePng(JSON.toJSONString(dto), 300, 300); + ByteArrayInputStream inputStream = new ByteArrayInputStream(image); + template.putObject("canteen",fileName + ".png", inputStream); + return "/admin/sys-file/oss/file?fileName=76109ebb7ecb4a0ca3a58d7444eebe04.png"; + } /** * 修改商户管理 * @param merchantInfo 商户管理 diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/OrderingPreferencesMapper.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/OrderingPreferencesMapper.java new file mode 100644 index 000000000..cb9a3a6c6 --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/OrderingPreferencesMapper.java @@ -0,0 +1,19 @@ +package com.bsd.pjcloud.canteen.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.canteen.dto.UserPageDTO; +import com.bsd.pjcloud.canteen.entity.MerchantInfoEntity; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface OrderingPreferencesMapper extends PjcloudBaseMapper { + + + + + IPage getPage(Page page, @Param("query")UserPageDTO userPageDTO, DataScope dataScope); +} \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/OrderingPreferencesService.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/OrderingPreferencesService.java new file mode 100644 index 000000000..4e48cd431 --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/OrderingPreferencesService.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.canteen.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.canteen.dto.UserPageDTO; + +public interface OrderingPreferencesService { + + + IPage getPage(Page page, UserPageDTO userPageDTO); +} diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/MerchantInfoServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/MerchantInfoServiceImpl.java index 83e7dc15c..069b07aee 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/MerchantInfoServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/MerchantInfoServiceImpl.java @@ -25,7 +25,7 @@ public class MerchantInfoServiceImpl extends ServiceImpl selectMerchantList(String type) { LambdaQueryWrapper merchantInfoEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); merchantInfoEntityLambdaQueryWrapper.eq(StrUtil.isNotBlank(type), MerchantInfoEntity::getMerchantType, type); - List result = baseMapper.selectListByScope(merchantInfoEntityLambdaQueryWrapper, new DataScope()); + List result = baseMapper.selectListByScope(merchantInfoEntityLambdaQueryWrapper, DataScope.of()); List voList = result.stream() .map(entity -> { diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/OrderingPreferencesServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/OrderingPreferencesServiceImpl.java new file mode 100644 index 000000000..01990e496 --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/OrderingPreferencesServiceImpl.java @@ -0,0 +1,26 @@ +package com.bsd.pjcloud.canteen.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.canteen.dto.UserPageDTO; +import com.bsd.pjcloud.canteen.mapper.OrderingPreferencesMapper; +import com.bsd.pjcloud.canteen.service.OrderingPreferencesService; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +@Slf4j +public class OrderingPreferencesServiceImpl implements OrderingPreferencesService { + + + private final OrderingPreferencesMapper orderingPreferencesMapper; + + @Override + public IPage getPage(Page page, UserPageDTO userPageDTO) { + return orderingPreferencesMapper.getPage(page,userPageDTO,DataScope.of()); + } +} diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/OrderingPreferencesMapper.xml b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/OrderingPreferencesMapper.xml new file mode 100644 index 000000000..4187ce5c3 --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/OrderingPreferencesMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + \ No newline at end of file