From d2982d352857de19593f391d76bcf4d1ed6755af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Thu, 24 Oct 2024 16:41:03 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=BC=9A=E5=91=98=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/member/MemberController.java | 33 +++++++ .../mybatis/service/MemberService.java | 13 +++ .../service/impl/MemberServiceImpl.java | 99 +++++++++++++++++++ 3 files changed, 145 insertions(+) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/controller/member/MemberController.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MemberService.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MemberServiceImpl.java diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/member/MemberController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/member/MemberController.java new file mode 100644 index 00000000..cc2197fb --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/member/MemberController.java @@ -0,0 +1,33 @@ +package cn.ysk.cashier.controller.member; + +import cn.ysk.cashier.mybatis.service.MemberService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * @author tankaikai + * @since 2024-10-24 16:13 + */ +@RestController +@RequestMapping("/api/member") +@Api(tags="会员管理") +public class MemberController { + + @Resource + private MemberService memberService; + + @PostMapping + @ApiOperation("保存") + public ResponseEntity save(@RequestBody Map map) { + memberService.createMember(map); + return ResponseEntity.ok().build(); + } +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MemberService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MemberService.java new file mode 100644 index 00000000..9f5146d0 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MemberService.java @@ -0,0 +1,13 @@ +package cn.ysk.cashier.mybatis.service; + +import java.util.Map; + +/** + * 会员管理 + * @author tankaikai + * @since 2024-10-24 16:15 + */ +public interface MemberService { + + void createMember(Map map); +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MemberServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MemberServiceImpl.java new file mode 100644 index 00000000..5452bdf9 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MemberServiceImpl.java @@ -0,0 +1,99 @@ +package cn.ysk.cashier.mybatis.service.impl; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import cn.ysk.cashier.exception.BadRequestException; +import cn.ysk.cashier.mybatis.mapper.MpUserInfoMapper; +import cn.ysk.cashier.mybatis.mapper.ShopUserMapper; +import cn.ysk.cashier.mybatis.service.MemberService; +import cn.ysk.cashier.pojo.TbUserInfo; +import cn.ysk.cashier.pojo.shop.TbShopUser; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.List; +import java.util.Map; + +/** + * 会员管理 + * + * @author tankaikai + * @since 2024-10-24 16:16 + */ +@Service +public class MemberServiceImpl implements MemberService { + + @Resource + private ShopUserMapper shopUserMapper; + @Resource + private MpUserInfoMapper mpUserInfoMapper; + + @Override + public void createMember(Map map) { + if (ObjectUtil.isEmpty(map) || !map.containsKey("shopId") || ObjectUtil.isEmpty(map.get("shopId")) + || !map.containsKey("phone") || ObjectUtil.isEmpty(map.get("phone")) + || !map.containsKey("nickName") || ObjectUtil.isEmpty(map.get("nickName")) + || !map.containsKey("sex") || ObjectUtil.isEmpty(map.get("sex")) + || !map.containsKey("level") || ObjectUtil.isEmpty(map.get("level")) || + !map.containsKey("birthDay") || ObjectUtil.isEmpty(map.get("birthDay")) + ) { + throw new BadRequestException("请求参数不允许为空"); + } + String phone = String.valueOf(map.get("phone")); + + String shopId = String.valueOf(map.get("shopId")); + + List tbShopUsers = shopUserMapper.selectList(Wrappers.lambdaQuery().eq(TbShopUser::getShopId, shopId).eq(TbShopUser::getTelephone, phone)); + + if (ObjectUtil.isNotEmpty(tbShopUsers) && tbShopUsers.stream().filter(it -> "1".equals(it.getIsVip().toString())).count() > 0) { + throw new BadRequestException("会员已存在"); + } + + Long count = mpUserInfoMapper.selectCount(Wrappers.lambdaQuery().eq(TbUserInfo::getTelephone, phone)); + if (count > 1) { + throw new BadRequestException("相同的手机号已存在多个记录"); + } + + if (ObjectUtil.isNotNull(tbShopUsers) && ObjectUtil.isNotEmpty(tbShopUsers)) { + TbShopUser tbShopUser = tbShopUsers.get(0); + tbShopUser.setTelephone(phone); + tbShopUser.setBirthDay(String.valueOf(map.get("birthDay"))); + tbShopUser.setName(String.valueOf(map.get("nickName"))); + tbShopUser.setSex(Convert.toInt(map.get("sex"))); + tbShopUser.setLevel(Convert.toInt(map.get("level"))); + tbShopUser.setIsVip(1); + tbShopUser.setUpdatedAt(System.currentTimeMillis()); + tbShopUser.setJoinTime(new Timestamp(System.currentTimeMillis())); + shopUserMapper.updateById(tbShopUser); + return; + } + + TbShopUser tbShopUser = new TbShopUser(); + TbUserInfo tbUserInfo = mpUserInfoMapper.selectOne(Wrappers.lambdaQuery().eq(TbUserInfo::getTelephone, phone)); + if (tbUserInfo != null) { + tbShopUser.setUserId(tbUserInfo.getId().toString()); + } + tbShopUser.setAmount(BigDecimal.ZERO); + tbShopUser.setCreditAmount(BigDecimal.ZERO); + tbShopUser.setConsumeAmount(BigDecimal.ZERO); + tbShopUser.setConsumeNumber(0); + tbShopUser.setLevelConsume(BigDecimal.ZERO); + tbShopUser.setStatus(1); + tbShopUser.setShopId(shopId); + tbShopUser.setTelephone(phone); + tbShopUser.setBirthDay(String.valueOf(map.get("birthDay"))); + tbShopUser.setName(String.valueOf(map.get("nickName"))); + tbShopUser.setSex(Convert.toInt((map.get("sex")))); + tbShopUser.setLevel(Convert.toInt(map.get("level"))); + String code = RandomUtil.randomNumbers(8); + tbShopUser.setCode(code); + tbShopUser.setIsVip(1); + tbShopUser.setCreatedAt(System.currentTimeMillis()); + tbShopUser.setJoinTime(new Timestamp(System.currentTimeMillis())); + shopUserMapper.insert(tbShopUser); + } +} From 17cbff42288016674b05dd30cf4ddd8174529d3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 29 Oct 2024 15:16:34 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BC=9A=E5=91=98=E4=BD=99=E9=A2=9D?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E7=BC=BA=E9=99=B7=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 82b93771..114b5cf7 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -2,6 +2,7 @@ package cn.ysk.cashier.service.impl.shopimpl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.ObjectUtil; @@ -55,7 +56,6 @@ import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.persistence.criteria.Order; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; @@ -1636,6 +1636,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfo.setDiscountRatio(BigDecimal.valueOf(payDTO.getDiscount())); orderInfo.setDiscountAmount(orderInfo.getAmount().subtract(finalAmount)); } + orderInfo.setMemberId(Convert.toStr(payDTO.getVipUserId())); orderInfoMapper.updateById(orderInfo); //更新购物车状态 From d5b0813c46abee6605fc84908f532b8acba3ebf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 29 Oct 2024 15:47:09 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BC=9A=E5=91=98=E4=BD=99=E9=A2=9D?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E7=BC=BA=E9=99=B7=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 114b5cf7..138aebaa 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -661,7 +661,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { } - if (cashierCart.getOrderId() == null) { throw new BadRequestException("此商品还未下单,无需退单"); } @@ -1381,7 +1380,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { } if (shopEatTypeInfoDTO.isIncrMaterId() && "pending".equals(orderInfo.getStatus())) { - String key = RedisConstant.getMasterIdKey(createOrderDTO.getShopId(), cn.ysk.cashier.utils.DateUtils.getDay(), orderInfo.getTableId());; + String key = RedisConstant.getMasterIdKey(createOrderDTO.getShopId(), cn.ysk.cashier.utils.DateUtils.getDay(), orderInfo.getTableId()); + ; redisTemplate.delete(key); } } @@ -1636,7 +1636,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfo.setDiscountRatio(BigDecimal.valueOf(payDTO.getDiscount())); orderInfo.setDiscountAmount(orderInfo.getAmount().subtract(finalAmount)); } - orderInfo.setMemberId(Convert.toStr(payDTO.getVipUserId())); + if (StrUtil.isEmpty(orderInfo.getMemberId())) { + orderInfo.setMemberId(Convert.toStr(payDTO.getVipUserId())); + } orderInfoMapper.updateById(orderInfo); //更新购物车状态 @@ -1653,7 +1655,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { .eq(TbOrderDetail::getOrderId, orderInfo.getId()) .eq(TbOrderDetail::getUseType, orderInfo.getUseType()) .eq(TbOrderDetail::getStatus, "unpaid") - .setSql(StrUtil.format("price_amount=price*num*{}", payDTO.getDiscount() == null ? 1: payDTO.getDiscount())) + .setSql(StrUtil.format("price_amount=price*num*{}", payDTO.getDiscount() == null ? 1 : payDTO.getDiscount())) .set(TbOrderDetail::getStatus, "closed")); JSONObject jsonObject = new JSONObject();