diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopUserController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopUserController.java index b5533af56..da094974e 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopUserController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopUserController.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*; /** * 店铺用户管理 + * * @author Administrator */ @RestController @@ -28,6 +29,7 @@ public class ShopUserController { /** * 获取店铺用户概述信息 + * * @param isVip 0 非vip 1 vip * @return 概述信息 */ @@ -39,7 +41,8 @@ public class ShopUserController { /** * 获取店铺用户列表 - * @param key 昵称或手机号 + * + * @param key 昵称或手机号 * @param isVip 0 非vip 1 vip * @return 用户列表 */ @@ -51,6 +54,7 @@ public class ShopUserController { /** * 店铺用户信息添加 + * * @return 是否成功 */ @SaAdminCheckPermission("shopUser:add") @@ -61,6 +65,7 @@ public class ShopUserController { /** * 店铺用户信息修改 + * * @return 是否成功 */ @SaAdminCheckPermission("shopUser:edit") @@ -71,13 +76,14 @@ public class ShopUserController { /** * 店铺用户余额修改 + * * @return 是否成功 */ @SaAdminCheckPermission("shopUser:editFlow") @PutMapping("/money") public CzgResult editMoney(@RequestBody @Validated ShopUserMoneyEditDTO shopUserMoneyEditDTO) { shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.ADMIN_IN); - return CzgResult.success(shopUserService.updateMoney(StpKit.USER.getShopId(), shopUserMoneyEditDTO)); + return CzgResult.success(shopUserService.updateMoney(StpKit.USER.getShopId(), shopUserMoneyEditDTO) > 0L); } } diff --git a/cash-api/account-server/src/main/java/com/czg/controller/user/UserShopActivateController.java b/cash-api/account-server/src/main/java/com/czg/controller/user/UserShopActivateController.java index 513ebf3ef..1a2ae03ab 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/user/UserShopActivateController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/user/UserShopActivateController.java @@ -11,7 +11,8 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; /** - * 店铺充值活动管理 + * 用户店铺充值活动管理 + * * @author ww */ @RestController diff --git a/cash-api/order-server/src/main/java/com/czg/controller/VipPayController.java b/cash-api/order-server/src/main/java/com/czg/controller/VipPayController.java index eb2195d25..e5319b763 100644 --- a/cash-api/order-server/src/main/java/com/czg/controller/VipPayController.java +++ b/cash-api/order-server/src/main/java/com/czg/controller/VipPayController.java @@ -27,6 +27,15 @@ public class VipPayController { @Resource private PayService payService; + /** + * 现金充值 + */ + @PostMapping("cashPayVip") + public CzgResult cashPayVip(@Validated @RequestBody VipPayParamDTO payParam) { + payParam.setUserId(StpKit.USER.getLoginIdAsLong()); + payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType")); + return payService.cashPayVip(payParam); + } /** * js支付 @@ -36,7 +45,7 @@ public class VipPayController { @PostMapping("jsPayVip") public CzgResult> jsPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) { payParam.setUserId(StpKit.USER.getLoginIdAsLong()); - payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(),"platformType")); + payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType")); return payService.jsPayVip(ServletUtil.getClientIPByHeader(request), payParam); } @@ -48,7 +57,7 @@ public class VipPayController { @PostMapping("ltPayVip") public CzgResult> ltPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) { payParam.setUserId(StpKit.USER.getLoginIdAsLong()); - payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(),"platformType")); + payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType")); return payService.ltPayVip(ServletUtil.getClientIPByHeader(request), payParam); } @@ -58,7 +67,7 @@ public class VipPayController { @PostMapping("scanPayVip") public CzgResult> scanPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) { payParam.setUserId(StpKit.USER.getLoginIdAsLong()); - payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(),"platformType")); + payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType")); return payService.scanPayVip(ServletUtil.getClientIPByHeader(request), payParam); } @@ -69,7 +78,7 @@ public class VipPayController { @PostMapping("microPayVip") public CzgResult> microPayVip(@Validated @RequestBody VipPayParamDTO payParam) { payParam.setUserId(StpKit.USER.getLoginIdAsLong()); - payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(),"platformType")); + payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType")); return payService.microPayVip(payParam); } } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopActivateDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopActivateDTO.java index 436881d0b..9cd1a369c 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopActivateDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopActivateDTO.java @@ -12,6 +12,7 @@ import lombok.NoArgsConstructor; import java.io.Serial; import java.io.Serializable; +import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -39,12 +40,12 @@ public class ShopActivateDTO implements Serializable { * 充值金额 */ @NotNull(message = "充值金额不能为空", groups = {InsertGroup.class, UpdateGroup.class}) - private Integer amount; + private BigDecimal amount; /** * 赠送金额 */ - private Integer giftAmount; + private BigDecimal giftAmount; /** * 赠送积分 diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopCouponDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopCouponDTO.java index ffff1ed30..021112f1a 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopCouponDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopCouponDTO.java @@ -1,17 +1,18 @@ package com.czg.account.dto; -import java.io.Serializable; -import java.math.BigDecimal; -import java.sql.Time; -import java.time.LocalDateTime; import com.alibaba.fastjson2.annotation.JSONField; -import java.io.Serial; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Time; +import java.time.LocalDateTime; + /** * 优惠券 实体类。 * @@ -37,18 +38,12 @@ public class ShopCouponDTO implements Serializable { */ private Integer status; - @JSONField(format = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime createTime; - - @JSONField(format = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime updateTime; - /** * 名称(无意义) */ private String title; - private String shopId; + private Long shopId; /** * 已使用数量 @@ -139,4 +134,11 @@ public class ShopCouponDTO implements Serializable { */ private String editor; + + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopCouponProductDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopCouponProductDTO.java new file mode 100644 index 000000000..c163a498a --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopCouponProductDTO.java @@ -0,0 +1,52 @@ + +package com.czg.account.dto; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 活动赠送商品表 实体类。 + * + * @author ww + * @since 2025-02-18 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ShopCouponProductDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long id; + + /** + * 活动Id + */ + private Long couponId; + + /** + * 商品id + */ + private Long productId; + + /** + * 数量 + */ + private Integer num; + + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopActivate.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopActivate.java index f2d6e3eda..c2e185074 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopActivate.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopActivate.java @@ -4,16 +4,16 @@ import com.mybatisflex.annotation.Column; import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.KeyType; import com.mybatisflex.annotation.Table; -import java.io.Serializable; -import java.time.LocalDateTime; - -import java.io.Serial; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + /** * 活动 实体类。 * @@ -38,12 +38,12 @@ public class ShopActivate implements Serializable { /** * 充值金额 */ - private Integer amount; + private BigDecimal amount; /** * 赠送金额 */ - private Integer giftAmount; + private BigDecimal giftAmount; /** * 赠送积分 diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopCoupon.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopCoupon.java index d60118288..32b6cc642 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopCoupon.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopCoupon.java @@ -1,22 +1,20 @@ package com.czg.account.entity; -import com.alibaba.fastjson2.annotation.JSONField; import com.mybatisflex.annotation.Column; import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.KeyType; import com.mybatisflex.annotation.Table; -import java.io.Serializable; -import java.math.BigDecimal; -import java.sql.Time; -import java.time.LocalDateTime; - -import java.io.Serial; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Time; +import java.time.LocalDateTime; + /** * 优惠券 实体类。 * @@ -44,18 +42,12 @@ public class ShopCoupon implements Serializable { */ private Integer status; - @Column(onInsertValue = "now()") - private LocalDateTime createTime; - - @Column(onInsertValue = "now()", onUpdateValue = "now()") - private LocalDateTime updateTime; - /** * 名称(无意义) */ private String title; - private String shopId; + private Long shopId; /** * 已使用数量 @@ -80,7 +72,7 @@ public class ShopCoupon implements Serializable { /** * 有效天数 */ - private Integer validDays; + private Long validDays; /** * 隔多少天生效 @@ -142,4 +134,10 @@ public class ShopCoupon implements Serializable { */ private String editor; + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + + @Column(onInsertValue = "now()", onUpdateValue = "now()") + private LocalDateTime updateTime; + } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopCouponProduct.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopCouponProduct.java new file mode 100644 index 000000000..56041b985 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopCouponProduct.java @@ -0,0 +1,56 @@ +package com.czg.account.entity; + +import com.mybatisflex.annotation.Column; +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 活动赠送商品表 实体类。 + * + * @author ww + * @since 2025-02-18 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_shop_coupon_product") +public class ShopCouponProduct implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Long id; + + /** + * 活动Id + */ + private Long couponId; + + /** + * 商品id + */ + private Long productId; + + /** + * 数量 + */ + private Integer num; + + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + + @Column(onInsertValue = "now()", onUpdateValue = "now()") + private LocalDateTime updateTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopActivateService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopActivateService.java index 714eea038..a5d6194d6 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopActivateService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopActivateService.java @@ -4,6 +4,7 @@ import com.czg.account.dto.ShopActivateDTO; import com.czg.account.entity.ShopActivate; import com.mybatisflex.core.service.IService; +import java.math.BigDecimal; import java.util.List; /** @@ -20,5 +21,13 @@ public interface ShopActivateService extends IService { Boolean edit(ShopActivateDTO activateDTO); + /** + * @param memAmount 充值金额 + * @param relationId 关联Id + * 霸王餐时 订单id + * 充值奖励 的关联id 是tb_shop_user_flow的充值 记录id + * 支付/退款 tb_order_payment.id + */ + void giveActivate(Long shopId, Long vipId, BigDecimal memAmount, Long relationId); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopCouponProductService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopCouponProductService.java new file mode 100644 index 000000000..cd8f71f9e --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopCouponProductService.java @@ -0,0 +1,14 @@ +package com.czg.account.service; + +import com.czg.account.entity.ShopCouponProduct; +import com.mybatisflex.core.service.IService; + +/** + * 活动赠送商品表 服务层。 + * + * @author ww + * @since 2025-02-18 + */ +public interface ShopCouponProductService extends IService { + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopUserService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopUserService.java index 1dc513c0d..b39aa1e17 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopUserService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopUserService.java @@ -17,7 +17,10 @@ public interface ShopUserService extends IService { Boolean updateInfo(Long shopId, ShopUserEditDTO shopUserEditDTO); - Boolean updateMoney(Long shopId, ShopUserMoneyEditDTO shopUserEditDTO); + /** + * 返回流水Id + */ + Long updateMoney(Long shopId, ShopUserMoneyEditDTO shopUserEditDTO); ShopUserSummaryDTO getSummary(Long shopId, Integer isVip); diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/CouponProductVo.java b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/CouponProductVo.java new file mode 100644 index 000000000..f638267a0 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/CouponProductVo.java @@ -0,0 +1,20 @@ +package com.czg.account.vo; + + +import lombok.Data; + +/** + * @author ww + * @description + */ +@Data +public class CouponProductVo { + /** + * 商品id + */ + private Long productId; + /** + * 数量 + */ + private Integer num; +} diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/enums/ShopUserFlowBizEnum.java b/cash-common/cash-common-tools/src/main/java/com/czg/enums/ShopUserFlowBizEnum.java index 74c8023dd..166d15a23 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/enums/ShopUserFlowBizEnum.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/enums/ShopUserFlowBizEnum.java @@ -23,7 +23,13 @@ public enum ShopUserFlowBizEnum { // 充值退款 RECHARGE_REFUND("rechargeRefund"), // 管理员手动增减余额 - ADMIN_IN("adminIn"); + ADMIN_IN("adminIn"), + //管理员退款充值 + ADMIN_REFUND("adminRefund"), + //adminOut + ADMIN_OUT("adminOut"), + //adminInOut + ADMIN_IN_OUT("adminInOut"),; private final String code; ShopUserFlowBizEnum(String code) { diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopCouponProductMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopCouponProductMapper.java new file mode 100644 index 000000000..0b445616c --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopCouponProductMapper.java @@ -0,0 +1,14 @@ +package com.czg.service.account.mapper; + +import com.czg.account.entity.ShopCouponProduct; +import com.mybatisflex.core.BaseMapper; + +/** + * 活动赠送商品表 映射层。 + * + * @author ww + * @since 2025-02-18 + */ +public interface ShopCouponProductMapper extends BaseMapper { + +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopActivateServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopActivateServiceImpl.java index d869d401b..e73beab76 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopActivateServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopActivateServiceImpl.java @@ -1,15 +1,29 @@ package com.czg.service.account.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson2.JSONObject; import com.czg.account.dto.ShopActivateDTO; +import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO; import com.czg.account.entity.ShopActivate; -import com.czg.account.service.ShopActivateService; +import com.czg.account.entity.ShopActivateInRecord; +import com.czg.account.entity.ShopCoupon; +import com.czg.account.entity.ShopCouponProduct; +import com.czg.account.service.*; +import com.czg.account.vo.CouponProductVo; +import com.czg.enums.ShopUserFlowBizEnum; import com.czg.sa.StpKit; import com.czg.service.account.mapper.ShopActivateMapper; import com.mybatisflex.spring.service.impl.ServiceImpl; +import jakarta.annotation.Resource; import org.apache.dubbo.config.annotation.DubboService; -import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; import java.util.List; /** @@ -21,6 +35,15 @@ import java.util.List; @DubboService public class ShopActivateServiceImpl extends ServiceImpl implements ShopActivateService { + @Resource + private ShopCouponService couponService; + @Resource + private ShopActivateInRecordService inRecordService; + @Resource + private ShopCouponProductService couProductService; + @Resource + private ShopUserService shopUserService; + @Override public List getList() { return queryChain().select() @@ -42,4 +65,106 @@ public class ShopActivateServiceImpl extends ServiceImpl activate.getNum()) { + LocalDateTime start = LocalDateTime.now().with(LocalTime.MIN); + LocalDateTime end = null; + if ("fixed".equals(shopCoupon.getValidityType())) { + //固定时间 + end = LocalDateTimeUtil.offset(start, shopCoupon.getValidDays(), ChronoUnit.DAYS).with(LocalTime.MAX); + } else if ("custom".equals(shopCoupon.getValidityType())) { + //自定义时间 + start = shopCoupon.getValidStartTime(); + end = shopCoupon.getValidEndTime(); + } + List actGiveRecords = new ArrayList<>(); + if (shopCoupon.getType() == 1) { + //满减 + ShopActivateInRecord record = new ShopActivateInRecord(); + record.setVipUserId(vipId); + record.setCouponId(shopCoupon.getId()); + record.setName("满" + shopCoupon.getFullAmount() + "减" + shopCoupon.getDiscountAmount()); + record.setFullAmount(shopCoupon.getFullAmount()); + record.setDiscountAmount(shopCoupon.getDiscountAmount()); + record.setType(1); + record.setNum(activate.getNum()); + record.setOverNum(activate.getNum()); + record.setShopId(shopId); + record.setSourceActId(activate.getId()); + record.setSourceFlowId(relationId); + record.setUseStartTime(start); + record.setUseEndTime(end); + record.setSource("activate"); + record.setCouponJson(getCouponJson(activate, shopCoupon, null)); + actGiveRecords.add(record); + } else if (shopCoupon.getType() == 2) { + List couponProducts = couProductService.queryChain() + .select(ShopCouponProduct::getProductId, ShopCouponProduct::getNum) + .eq(ShopCouponProduct::getCouponId, shopCoupon.getId()) + .listAs(CouponProductVo.class); + //商品券 + for (CouponProductVo actPro : couponProducts) { + ShopActivateInRecord record = new ShopActivateInRecord(); + record.setVipUserId(vipId); + record.setCouponId(shopCoupon.getId()); + record.setName("商品券"); + record.setType(2); + record.setProId(actPro.getProductId()); + record.setNum(actPro.getNum() * activate.getNum()); + record.setOverNum(actPro.getNum() * activate.getNum()); + record.setShopId(shopId); + record.setSourceActId(activate.getId()); + record.setSourceFlowId(relationId); + record.setUseStartTime(start); + record.setUseEndTime(end); + record.setSource("activate"); + record.setCouponJson(getCouponJson(activate, shopCoupon, actPro)); + actGiveRecords.add(record); + } + } + inRecordService.saveBatch(actGiveRecords); + shopCoupon.setLeftNumber(shopCoupon.getLeftNumber() - activate.getNum()); + couponService.updateChain() + .set(ShopCoupon::getLeftNumber, shopCoupon.getLeftNumber() - activate.getNum()) + .eq(ShopCoupon::getId, shopCoupon.getId()) + .update(); + } + } + //赠送金额 + if (activate.getGiftAmount() != null && activate.getGiftAmount().compareTo(BigDecimal.ZERO) > 0) { + ShopUserMoneyEditDTO shopUserMoneyEditDTO = ShopUserMoneyEditDTO.builder() + .id(vipId) + .money(activate.getGiftAmount()) + .type(1) + .remark("充值活动赠送") + .relationId(relationId) + .bizEnum(ShopUserFlowBizEnum.AWARD_IN) + .build(); + //更新会员余额 并生成流水 + shopUserService.updateMoney(shopId, shopUserMoneyEditDTO); + } + } + + + private String getCouponJson(ShopActivate activate, ShopCoupon tbShopCoupon, CouponProductVo couProduct) { + JSONObject result = new JSONObject(); + result.put("activate", JSONObject.toJSONString(activate)); + result.put("coupon", JSONObject.toJSONString(tbShopCoupon)); + if (couProduct != null) { + result.put("couProduct", JSONObject.toJSONString(couProduct)); + } + return result.toJSONString(); + } } diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopCouponProductServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopCouponProductServiceImpl.java new file mode 100644 index 000000000..06b075d06 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopCouponProductServiceImpl.java @@ -0,0 +1,18 @@ +package com.czg.service.account.service.impl; + +import com.czg.account.entity.ShopCouponProduct; +import com.czg.account.service.ShopCouponProductService; +import com.czg.service.account.mapper.ShopCouponProductMapper; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 活动赠送商品表 服务层实现。 + * + * @author ww + * @since 2025-02-18 + */ +@Service +public class ShopCouponProductServiceImpl extends ServiceImpl implements ShopCouponProductService { + +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java index ee3dec88a..362da6656 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java @@ -2,7 +2,6 @@ package com.czg.service.account.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.czg.account.dto.shopuser.*; @@ -13,7 +12,6 @@ import com.czg.account.service.ShopUserFlowService; import com.czg.account.service.ShopUserService; import com.czg.account.service.UserInfoService; import com.czg.config.RedisCst; -import com.czg.enums.ShopUserFlowBizEnum; import com.czg.exception.ApiNotPrintException; import com.czg.sa.StpKit; import com.czg.service.RedisService; @@ -21,12 +19,10 @@ import com.czg.service.account.mapper.ShopUserMapper; import com.czg.utils.AssertUtil; import com.czg.utils.PageUtil; import com.mybatisflex.core.paginate.Page; -import com.mybatisflex.core.query.QueryCondition; import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.spring.service.impl.ServiceImpl; import jakarta.annotation.Resource; import org.apache.dubbo.config.annotation.DubboService; -import org.springframework.stereotype.Service; import java.math.RoundingMode; @@ -47,7 +43,7 @@ public class ShopUserServiceImpl extends ServiceImpl i @Resource private RedisService redisService; - private ShopUser getUserInfo(Long shopUserId, Long shopId) { + private ShopUser getUserInfo(Long shopId, Long shopUserId) { ShopUser shopUser = queryChain().eq(ShopUser::getShopId, shopId).eq(ShopUser::getId, shopUserId).one(); if (shopUser == null) { throw new ApiNotPrintException("用户信息不存在"); @@ -77,12 +73,12 @@ public class ShopUserServiceImpl extends ServiceImpl i } @Override - public Boolean updateMoney(Long shopId, ShopUserMoneyEditDTO shopUserEditDTO) { + public Long updateMoney(Long shopId, ShopUserMoneyEditDTO shopUserEditDTO) { shopUserEditDTO.setMoney(shopUserEditDTO.getMoney().setScale(2, RoundingMode.DOWN)); ShopUser userInfo = getUserInfo(shopId, shopUserEditDTO.getId()); ShopUserFlow userFlow = new ShopUserFlow(); - int flag = 0; + int flag; if (shopUserEditDTO.getType() == 0) { flag = mapper.decrAccount(shopId, shopUserEditDTO.getId(), DateUtil.date().toLocalDateTime(), shopUserEditDTO.getMoney()); } else { @@ -100,7 +96,8 @@ public class ShopUserServiceImpl extends ServiceImpl i userFlow.setType(shopUserEditDTO.getType() == 0 ? "-" : "+"); userFlow.setRemark(shopUserEditDTO.getRemark()); userFlow.setRelationId(shopUserEditDTO.getRelationId()); - return shopUserFlowService.save(userFlow); + shopUserFlowService.save(userFlow); + return userFlow.getId(); } @Override @@ -135,6 +132,7 @@ public class ShopUserServiceImpl extends ServiceImpl i ShopUser shopUser = BeanUtil.copyProperties(shopUserAddDTO, ShopUser.class); shopUser.setShopId(shopId); + shopUser.setUserId(userInfo.getId()); shopUser.setJoinTime(shopUser.getIsVip() != null && shopUser.getIsVip() == 1 ? DateUtil.date().toLocalDateTime() : null); return save(shopUser); } diff --git a/cash-service/account-service/src/main/resources/mapper/ShopCouponProductMapper.xml b/cash-service/account-service/src/main/resources/mapper/ShopCouponProductMapper.xml new file mode 100644 index 000000000..9d598b8bd --- /dev/null +++ b/cash-service/account-service/src/main/resources/mapper/ShopCouponProductMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml b/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml index 4b3630356..4b58704ca 100644 --- a/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml +++ b/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml @@ -44,7 +44,7 @@ where a.id=#{userId}