From 08ea3906a42484a91078b9e83b2e0fce3ca55f67 Mon Sep 17 00:00:00 2001 From: zt Date: Mon, 21 Jul 2025 14:20:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomizeExcelController.java | 10 ++++ .../customizeExcel/vo/OverspendingVO.java | 27 +++++++++++ .../admin/group/vo/MemberGroupBaseVO.java | 2 + .../admin/order/OrderController.java | 2 + .../app/group/AppMemberGroupController.java | 6 +++ .../dal/dataobject/group/MemberGroupDO.java | 3 ++ .../customizeExcel/CustomizeExcelMapper.java | 1 + .../dal/mysql/group/MemberGroupMapper.java | 8 ++-- .../module/member/enums/GroupTypeEnum.java | 1 + .../service/amount/DeductionServiceImpl.java | 2 +- .../customizeExcel/CustomizeExcelService.java | 2 + .../CustomizeExcelServiceImpl.java | 5 ++ .../diningplates/DiningPlatesServiceImpl.java | 14 ++++++ .../service/group/MemberGroupService.java | 5 +- .../service/group/MemberGroupServiceImpl.java | 48 +++++++++++++++++++ .../customizeExcel/CustomizeExcelMapper.xml | 26 +++++++++- 16 files changed, 154 insertions(+), 8 deletions(-) create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/vo/OverspendingVO.java diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/CustomizeExcelController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/CustomizeExcelController.java index 0168aa79..fef85cb4 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/CustomizeExcelController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/CustomizeExcelController.java @@ -234,4 +234,14 @@ public class CustomizeExcelController { ExcelUtils.write(response, "现金充值.xlsx", "数据", ActivityReserveVO.class, orderExcelVOS); } + + @GetMapping("/overspending") + @Operation(summary = "组内每天超过37元的数据") + @OperateLog(type = EXPORT) + public void exportOverspending(String startTime,String endTime,Long groupId,HttpServletResponse response) throws IOException { + List overspendingVOS = excelService.exportOverspending(startTime, endTime, groupId); + // 导出 Excel + ExcelUtils.write(response, "现金充值.xlsx", "数据", OverspendingVO.class, + overspendingVOS); + } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/vo/OverspendingVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/vo/OverspendingVO.java new file mode 100644 index 00000000..a007756a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/vo/OverspendingVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.NumberFormat; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OverspendingVO { + @ExcelProperty("昵称") + private String nickName; + + @ExcelProperty("手机") + private String mobile; + + @ExcelProperty("消费金额(元)") + @NumberFormat("#0.00") + private BigDecimal totalMoney; + + @ExcelProperty("超出金额(元)") + @NumberFormat("#0.00") + private BigDecimal overMoney; + + @ExcelProperty("日期") + private String createTime; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/vo/MemberGroupBaseVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/vo/MemberGroupBaseVO.java index bc9879c3..ba3b06b5 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/vo/MemberGroupBaseVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/vo/MemberGroupBaseVO.java @@ -34,4 +34,6 @@ public class MemberGroupBaseVO { @Schema(description = "类型", example = "1") private Integer type; + + private String bindStore; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java index 82c23f08..20ac4922 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java @@ -4,6 +4,7 @@ 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.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.idempotent.core.annotation.Idempotent; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO; @@ -129,6 +130,7 @@ public class OrderController { @GetMapping("/reduction") @Operation(summary = "减免") + @Idempotent(timeout = 3, message = "正在减免,请勿重复提交") public CommonResult reduction(Long orderId, BigDecimal money){ orderService.reduction(orderId,money); return CommonResult.success(true); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/group/AppMemberGroupController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/group/AppMemberGroupController.java index dc5e8de3..6757c75d 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/group/AppMemberGroupController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/group/AppMemberGroupController.java @@ -133,4 +133,10 @@ public class AppMemberGroupController { } + @GetMapping("/judgeStoreUse") + @Operation(summary = "判断是否被限制超市使用") + public CommonResult judgeStoreUse(Long userId) { + return success(groupService.judgeStoreUse(userId)); + } + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/group/MemberGroupDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/group/MemberGroupDO.java index 1b820809..14ab1f4c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/group/MemberGroupDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/group/MemberGroupDO.java @@ -55,4 +55,7 @@ public class MemberGroupDO extends BaseDO { * 1-行政服务中心,2-区管单位,3-盈创力和,4-私人,5-其他单位 */ private Integer type; + + + private String bindStore; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/customizeExcel/CustomizeExcelMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/customizeExcel/CustomizeExcelMapper.java index a9b54f57..ad0537e1 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/customizeExcel/CustomizeExcelMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/customizeExcel/CustomizeExcelMapper.java @@ -29,5 +29,6 @@ public interface CustomizeExcelMapper { List exportActivityReserve(); + List exportOverspending(@Param("startTime")String startTime, @Param("endTime")String endTime, @Param("groupId")Long groupId); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/group/MemberGroupMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/group/MemberGroupMapper.java index d4379317..5eb4f3d1 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/group/MemberGroupMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/group/MemberGroupMapper.java @@ -8,10 +8,7 @@ import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupPageV import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupUserVo; import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; -import org.apache.ibatis.annotations.Delete; -import org.apache.ibatis.annotations.MapKey; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.*; import java.util.List; import java.util.Map; @@ -66,4 +63,7 @@ public interface MemberGroupMapper extends BaseMapperX { List getCarteenId(Long userId); List getGroupByUserId(Long userId); + + @Select("select group_id from member_group_member where member_id = #{userId}") + List getGroupIdByUserId(Long userId); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/GroupTypeEnum.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/GroupTypeEnum.java index 20f83ad6..26cb791a 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/GroupTypeEnum.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/GroupTypeEnum.java @@ -11,6 +11,7 @@ public enum GroupTypeEnum { YCLH(3, "盈创力和"), PERSON(4, "私人"), OTHER(5, "其他单位"), + SUPERMARKET_LIMIT(6, "限制超市消费"), ; /** diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/DeductionServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/DeductionServiceImpl.java index c20e27c3..193b58db 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/DeductionServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/DeductionServiceImpl.java @@ -703,7 +703,7 @@ public class DeductionServiceImpl implements DeductionService { user.setCashAmount(user.getCashAmount().add(newAmount)); } }else { - user.setCashAmount(user.getCashAmount().add(cashAmount)); + user.setCashAmount(user.getCashAmount().add(money)); } userService.updateById(user); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelService.java index 29273963..28d1aefc 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelService.java @@ -25,4 +25,6 @@ public interface CustomizeExcelService { List exportActivityMx(); List exportActivityReserve(); + + List exportOverspending(String startTime, String endTime, Long groupId); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelServiceImpl.java index 7dff9b7c..f5f3f0fc 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelServiceImpl.java @@ -57,4 +57,9 @@ public class CustomizeExcelServiceImpl implements CustomizeExcelService { public List exportActivityReserve() { return customizeExcelMapper.exportActivityReserve(); } + + @Override + public List exportOverspending(String startTime, String endTime, Long groupId) { + return customizeExcelMapper.exportOverspending(startTime,endTime,groupId); + } } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java index b08cbe64..fa4a1d6c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java @@ -223,6 +223,9 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { //余额验证 BigDecimal money = checkMoney(memberUserDO, storeId,true); + //group验证 + checkGroup(memberUserDO.getId(),storeId); + diningPlatesDO.setUserId(memberUserDO.getId()); //创建初始订单 @@ -276,6 +279,8 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { checkOrder(memberUserDO.getId(),diningPlatesDO.getStoreId()); //余额验证 BigDecimal money = checkMoney(memberUserDO,storeId,false); + //group验证 + checkGroup(memberUserDO.getId(),storeId); diningPlatesDO.setUserId(memberUserDO.getId()); //创建初始订单 @@ -443,6 +448,15 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { } } + public void checkGroup(Long userId,Long canteenId){ + + Boolean b = memberGroupService.judgeGroup(userId, canteenId); + if(b){ + throw exception(new ErrorCode(1_004_099_008, "不能在当前店消费")); + } + } + + public Integer getDiningPlatesByUserId(Long userId,Long storeId){ return diningPlatesMapper.selectCount(Wrappers.lambdaQuery() .eq(DiningPlatesDO::getUserId, userId).eq(DiningPlatesDO::getStoreId,storeId)).intValue(); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupService.java index 5bf79f28..29bfbf4c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupService.java @@ -6,7 +6,6 @@ import cn.iocoder.yudao.module.member.controller.admin.group.vo.*; import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserListVO; import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; -import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Valid; import java.util.Collection; @@ -140,4 +139,8 @@ public interface MemberGroupService { Integer getGroupTypeByUserId(Long userId); List getGroupTypeListByUserId(Long userId); + + Boolean judgeStoreUse(Long userId); + + Boolean judgeGroup(Long userId,Long canteenId); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupServiceImpl.java index 397df9f1..037eeef3 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupServiceImpl.java @@ -222,4 +222,52 @@ public class MemberGroupServiceImpl implements MemberGroupService { } return groupByUserId.stream().map(MemberGroupDO::getType).collect(Collectors.toList()); } + + @Override + public Boolean judgeStoreUse(Long userId) { + List memberGroupDOS = memberGroupMapper.selectList(Wrappers.lambdaQuery() + .eq(MemberGroupDO::getType, GroupTypeEnum.SUPERMARKET_LIMIT.getCode())); + if (CollectionUtil.isEmpty(memberGroupDOS)) { + return false; + } + + List groupIdByUserId = memberGroupMapper.getGroupIdByUserId(userId); + if (CollectionUtil.isEmpty(groupIdByUserId)) { + return false; + } + List ids = memberGroupDOS.stream().map(MemberGroupDO::getId).collect(Collectors.toList()); + + for (Long id : groupIdByUserId) { + if (ids.contains(id)) { + return true; + } + } + return false; + } + + @Override + public Boolean judgeGroup(Long userId, Long canteenId) { + + List groupIdByUserId = memberGroupMapper.getGroupIdByUserId(userId); + if (CollectionUtil.isEmpty(groupIdByUserId)) { + return false; + } + + List memberGroupDOS = memberGroupMapper.selectList(Wrappers.lambdaQuery() + .eq(MemberGroupDO::getBindStore, "1")); + if (CollectionUtil.isEmpty(memberGroupDOS)) { + return false; + } + + Map collect = memberGroupDOS.stream().collect(Collectors.toMap(MemberGroupDO::getId, MemberGroupDO::getCarteenId)); + + for (Long id : groupIdByUserId) { + if(collect.get(id)!=null){ + if(!collect.get(id).equals(canteenId)){ + return true; + } + } + } + return false; + } } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/customizeExcel/CustomizeExcelMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/customizeExcel/CustomizeExcelMapper.xml index 7c022e58..832a616e 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/customizeExcel/CustomizeExcelMapper.xml +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/customizeExcel/CustomizeExcelMapper.xml @@ -78,6 +78,7 @@ o.total_money, o.cash_amount, o.wx_amount, + c.stores_name as storeName, DATE_FORMAT(o.create_time, '%Y-%m-%d %H:%i:%s') as createTime, CASE WHEN HOUR(o.create_time) BETWEEN 0 AND 9 THEN '早上' @@ -91,8 +92,8 @@ ELSE '未知' END AS orderStatus from member_dish_order o left join member_user u on o.user_id = u.id - where o.store_id = #{carteenId} - and o.deleted = false + left join t_carteen c on o.store_id = c.id + where o.deleted = false and o.user_id in (select member_id from member_group_member where group_id = #{groupId}) and DATE_FORMAT(o.create_time, '%Y-%m-%d') BETWEEN #{startTime} AND #{endTime} @@ -202,4 +203,25 @@ GROUP BY m.name ORDER BY m.name + + \ No newline at end of file