diff --git a/cash-api/account-server/src/main/java/com/czg/controller/user/UserAuthorizationController.java b/cash-api/account-server/src/main/java/com/czg/controller/user/UserAuthorizationController.java index 5d80688b0..df4b284df 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/user/UserAuthorizationController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/user/UserAuthorizationController.java @@ -37,6 +37,13 @@ public class UserAuthorizationController { return CzgResult.success(userAuthorizationService.login(userAuthorizationLoginDTO)); } + @PostMapping("/test") + public CzgResult test() { + StpKit.USER.login(15114L, "or1l867go4WD5DYBT1iejr1DqGIw", null, null, null, MyStpLogic.LoginType.USER, false, "userMini"); + + return CzgResult.success(StpKit.USER.getTokenValue()); + } + /** * 获取手机号 * @param getPhoneDTO 获取手机号信息 diff --git a/cash-api/order-server/src/main/java/com/czg/controller/user/UserOrderController.java b/cash-api/order-server/src/main/java/com/czg/controller/user/UserOrderController.java index 718315415..e445b6d45 100644 --- a/cash-api/order-server/src/main/java/com/czg/controller/user/UserOrderController.java +++ b/cash-api/order-server/src/main/java/com/czg/controller/user/UserOrderController.java @@ -84,7 +84,6 @@ public class UserOrderController { public CzgResult createMemberOrder(@Validated @RequestBody MemberOrderDTO orderDTO) { orderDTO.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType")); orderDTO.setUserId(StpKit.USER.getLoginIdAsLong()); - orderDTO.setShopId(StpKit.USER.getShopId()); orderDTO.setOrderType("miniapp"); return CzgResult.success(memberOrderService.createMemberOrder(orderDTO)); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopuser/ShopUserAddDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopuser/ShopUserAddDTO.java index b47d9c021..789d3175f 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopuser/ShopUserAddDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopuser/ShopUserAddDTO.java @@ -3,14 +3,17 @@ package com.czg.account.dto.shopuser; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; +import lombok.experimental.Accessors; +import java.io.Serializable; import java.math.BigDecimal; /** * @author Administrator */ @Data -public class ShopUserAddDTO { +@Accessors(chain = true) +public class ShopUserAddDTO implements Serializable { /** * 用户头像 diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopUser.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopUser.java index 39a772888..2a45aa829 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopUser.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopUser.java @@ -7,6 +7,7 @@ import com.mybatisflex.annotation.Table; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; import java.io.Serial; import java.io.Serializable; @@ -24,6 +25,7 @@ import java.time.LocalDateTime; @NoArgsConstructor @AllArgsConstructor @Table("tb_shop_user") +@Accessors(chain = true) public class ShopUser implements Serializable { @Serial diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/UserInfoService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/UserInfoService.java index 07814ba15..e5a344a4d 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/service/UserInfoService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/UserInfoService.java @@ -16,6 +16,7 @@ public interface UserInfoService extends IService { UserInfoDTO getInfo(long userInfoId); + Boolean updateInfo(long shopId, long userId, UserInfoEditDTO userInfoEditDTO); Boolean updatePwd(long userId, UserInfoPwdEditDTO userInfoPwdEditDTO); diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MemberOrderDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MemberOrderDTO.java index 2b32b171d..31bd57375 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MemberOrderDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MemberOrderDTO.java @@ -3,6 +3,7 @@ package com.czg.market.dto; import java.io.Serializable; +import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; @@ -33,17 +34,20 @@ public class MemberOrderDTO implements Serializable { /** * 名称 */ - @NotBlank(message = "方案名称不为空") + private String name; /** * 数量 */ - @NotNull(message = "数量不为空") + @Min(1) private Integer num; private String platformType; private Long userId; private String orderType; + private Integer sex; + private String birthDay; + private String nickName; } diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java index 4636a3beb..87f4b0274 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java @@ -27,6 +27,7 @@ import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; import jakarta.annotation.Resource; import org.apache.dubbo.config.annotation.DubboReference; +import org.apache.dubbo.config.annotation.DubboService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -39,7 +40,7 @@ import java.math.BigDecimal; * @author Administrator * @since 2025-02-08 */ -@Service +@DubboService public class AShopUserServiceImpl implements AShopUserService { @Resource private ShopUserService shopUserService; diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/UShopUserServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/UShopUserServiceImpl.java index 072c80a11..5f29e6e1b 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/UShopUserServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/UShopUserServiceImpl.java @@ -29,9 +29,11 @@ import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; import jakarta.annotation.Resource; import org.apache.dubbo.config.annotation.DubboReference; +import org.apache.dubbo.config.annotation.DubboService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.List; @@ -41,7 +43,7 @@ import java.util.List; * @author Administrator * @since 2025-02-08 */ -@Service +@DubboService public class UShopUserServiceImpl implements UShopUserService { @Resource private ShopUserService shopUserService; @@ -180,19 +182,18 @@ public class UShopUserServiceImpl implements UShopUserService { BeanUtil.copyProperties(shopUserAddDTO, shopUser, "accountPoints", "amount"); BeanUtil.copyProperties(shopUserAddDTO, userInfo); userInfoService.updateById(userInfo); - - if ((shopUser.getIsVip() == null || shopUser.getIsVip() != 1) && shopUser.getId() != null) { + if (StrUtil.isBlank(shopUser.getCode())) { + shopUser.setCode(generateCode(shopId)); + } + if (shopUser.getId() != null) { shopUser.setIsVip(1); - if (StrUtil.isBlank(shopUser.getCode())) { - shopUser.setCode(generateCode(shopId)); - } - shopUser.setJoinTime(DateUtil.date().toLocalDateTime()); shopUser.setUserId(null); shopUser.setSourceShopId(shopId); shopUser.setMainShopId(mainId); } + shopUser.setJoinTime(shopUser.getJoinTime() == null ? DateUtil.date().toLocalDateTime() : shopUser.getJoinTime()); + - memberConfigService.joinMember(shopId, userId, null); return shopUserService.saveOrUpdate(shopUser); } diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/UserInfoServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/UserInfoServiceImpl.java index f6b6ee371..c37eb5465 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/UserInfoServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/UserInfoServiceImpl.java @@ -23,6 +23,8 @@ import jakarta.annotation.Resource; import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboService; +import java.math.BigDecimal; + /** * 服务层实现。 * @@ -51,7 +53,6 @@ public class UserInfoServiceImpl extends ServiceImpl i userInfoDTO.setAssetsSummary(assetsSummaryDTO); return userInfoDTO; } - @Override public Boolean updateInfo(long shopId, long userId, UserInfoEditDTO userInfoEditDTO) { UserInfo userInfo = getById(userId); diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MemberOrderServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MemberOrderServiceImpl.java index 0a02367de..075967bde 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MemberOrderServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MemberOrderServiceImpl.java @@ -3,14 +3,13 @@ package com.czg.service.market.service.impl; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONObject; +import com.czg.account.dto.shopuser.ShopUserAddDTO; import com.czg.account.entity.ShopUser; +import com.czg.account.service.*; import com.czg.market.dto.MemberConfigDTO; import com.czg.account.entity.ShopInfo; import com.czg.account.entity.UserInfo; -import com.czg.account.service.ShopInfoService; -import com.czg.account.service.ShopUserService; import com.czg.market.service.TbMemberConfigService; -import com.czg.account.service.UserInfoService; import com.czg.market.vo.MemberConfigVO; import com.czg.exception.CzgException; import com.czg.market.dto.MemberOrderDTO; @@ -45,6 +44,8 @@ public class MemberOrderServiceImpl extends ServiceImpl item.getName().equals(orderDTO.getName())) - .findFirst() - .orElseThrow(() -> new CzgException("会员开通方案未配置,请联系店铺")); if ("PAY".equals(memberConfigVO.getOpenType())){ + if(memberConfigVO.getConfigList() == null || memberConfigVO.getConfigList().isEmpty()) { + throw new CzgException("会员开通方案未配置,请联系店铺"); + } + AssertUtil.isBlank(orderDTO.getName(), "方案名称不能为空"); + AssertUtil.isNull(orderDTO.getNum(), "开通周期数不为空"); + + MemberConfigDTO.ConfigList configItem = memberConfigVO.getConfigList().stream() + .filter(item -> item.getName().equals(orderDTO.getName())) + .findFirst() + .orElseThrow(() -> new CzgException("会员开通方案未配置,请联系店铺")); + //生成订单 MemberOrder orderInfo = new MemberOrder(); - orderInfo.setOrderNo(orderDTO.getPlatformType() + IdUtil.getSnowflakeNextId()); + orderInfo.setOrderNo(orderDTO.getPlatformType() + "ME" + IdUtil.getSnowflakeNextId()); orderInfo.setShopId(orderDTO.getShopId()); orderInfo.setPayAmount(BigDecimal.ZERO); orderInfo.setStatus(OrderStatusEnums.UNPAID.getCode()); diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/TbMemberConfigServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/TbMemberConfigServiceImpl.java index 60250f60f..7a270b415 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/TbMemberConfigServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/TbMemberConfigServiceImpl.java @@ -317,10 +317,6 @@ public class TbMemberConfigServiceImpl extends ServiceImpl StrUtil.isNotBlank(shopUser.getPhone()); case "ORDER" -> orderInfoService.count(new QueryWrapper().eq(OrderInfo::getShopId, shopUser.getSourceShopId()).eq(OrderInfo::getUserId, shopUser.getUserId()) - .notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode())) > Integer.parseInt(item.getValue()); + .notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode())) >= Integer.parseInt(item.getValue()); case "COST_AMOUNT" -> orderInfoService.list(new QueryWrapper().eq(OrderInfo::getShopId, shopUser.getSourceShopId()).eq(OrderInfo::getUserId, shopUser.getUserId()) .notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode())) - .stream().map(OrderInfo::getPayAmount).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(new BigDecimal(item.getValue())) > 0; + .stream().map(OrderInfo::getPayAmount).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(new BigDecimal(item.getValue())) >= 0; case "RECHARGE_AMOUNT" -> paymentService.list(new QueryWrapper().eq(OrderPayment::getShopId, shopUser.getSourceShopId()) .eq(OrderPayment::getSourceId, shopUser.getId()).isNotNull(OrderPayment::getTradeNumber)) - .stream().map(OrderPayment::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(new BigDecimal(item.getValue())) > 0; + .stream().map(OrderPayment::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(new BigDecimal(item.getValue())) >= 0; default -> throw new CzgException("会员开通条件类型错误"); }; if (!canOpen) { @@ -344,15 +340,18 @@ public class TbMemberConfigServiceImpl extends ServiceImpl