diff --git a/src/main/java/com/gxwebsoft/booking/controller/UserCardController.java b/src/main/java/com/gxwebsoft/booking/controller/UserCardController.java index c074f98..2aa579b 100644 --- a/src/main/java/com/gxwebsoft/booking/controller/UserCardController.java +++ b/src/main/java/com/gxwebsoft/booking/controller/UserCardController.java @@ -46,14 +46,12 @@ public class UserCardController extends BaseController { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(UserCard::getUserId, loginUser.getUserId()) - .like(UserCard::getSid, param.getSid()) .eq(UserCard::getPayStatus,1) - .gt(UserCard::getExpirationTime, DateUtil.date()) + .like(UserCard::getSid, param.getSid()) + .lt(UserCard::getExpirationTime, DateUtil.now()) .last("limit 1"); - - final UserCard userCard = userCardService.getOne(wrapper); - - return success(userCard); + System.out.println("wrapper = " + wrapper); + return success(userCardService.getOne(wrapper)); } @ApiOperation("分页查询会员卡") diff --git a/src/main/java/com/gxwebsoft/booking/controller/UserCardLogController.java b/src/main/java/com/gxwebsoft/booking/controller/UserCardLogController.java index 28b1a13..16f0fa0 100644 --- a/src/main/java/com/gxwebsoft/booking/controller/UserCardLogController.java +++ b/src/main/java/com/gxwebsoft/booking/controller/UserCardLogController.java @@ -22,7 +22,7 @@ import java.util.List; * 明细表控制器 * * @author 科技小王子 - * @since 2024-05-31 17:15:10 + * @since 2024-06-01 12:59:38 */ @Api(tags = "明细表管理") @RestController diff --git a/src/main/java/com/gxwebsoft/booking/entity/UserCardLog.java b/src/main/java/com/gxwebsoft/booking/entity/UserCardLog.java index a591750..88c6760 100644 --- a/src/main/java/com/gxwebsoft/booking/entity/UserCardLog.java +++ b/src/main/java/com/gxwebsoft/booking/entity/UserCardLog.java @@ -1,11 +1,10 @@ package com.gxwebsoft.booking.entity; import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.*; + import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.TableLogic; import java.io.Serializable; import java.util.Date; @@ -18,7 +17,7 @@ import lombok.EqualsAndHashCode; * 明细表 * * @author 科技小王子 - * @since 2024-05-31 17:15:10 + * @since 2024-06-01 12:59:38 */ @Data @EqualsAndHashCode(callSuper = false) @@ -34,6 +33,12 @@ public class UserCardLog implements Serializable { @ApiModelProperty(value = "用户ID") private Integer userId; + @ApiModelProperty(value = "会员卡ID") + private Integer userCardId; + + @ApiModelProperty(value = "会员卡卡号") + private String cardNum; + @ApiModelProperty(value = "IC卡类型:1年卡,2次卡,3月卡,4会员IC卡,5充值卡 ") private Integer type; @@ -43,7 +48,7 @@ public class UserCardLog implements Serializable { @ApiModelProperty(value = "变动后余额") private BigDecimal balance; - @ApiModelProperty(value = "剩余使用次数") + @ApiModelProperty(value = "剩余次数") private Integer num; @ApiModelProperty(value = "管理员备注") @@ -83,4 +88,8 @@ public class UserCardLog implements Serializable { @ApiModelProperty(value = "修改时间") private Date updateTime; + @ApiModelProperty(value = "会员卡名称") + @TableField(exist = false) + private String cardName; + } diff --git a/src/main/java/com/gxwebsoft/booking/mapper/UserCardLogMapper.java b/src/main/java/com/gxwebsoft/booking/mapper/UserCardLogMapper.java index f0948cf..9a00618 100644 --- a/src/main/java/com/gxwebsoft/booking/mapper/UserCardLogMapper.java +++ b/src/main/java/com/gxwebsoft/booking/mapper/UserCardLogMapper.java @@ -12,7 +12,7 @@ import java.util.List; * 明细表Mapper * * @author 科技小王子 - * @since 2024-05-31 17:15:10 + * @since 2024-06-01 12:59:38 */ public interface UserCardLogMapper extends BaseMapper { diff --git a/src/main/java/com/gxwebsoft/booking/mapper/xml/UserCardLogMapper.xml b/src/main/java/com/gxwebsoft/booking/mapper/xml/UserCardLogMapper.xml index e3ebcf8..a3d33c6 100644 --- a/src/main/java/com/gxwebsoft/booking/mapper/xml/UserCardLogMapper.xml +++ b/src/main/java/com/gxwebsoft/booking/mapper/xml/UserCardLogMapper.xml @@ -13,6 +13,12 @@ AND a.user_id = #{param.userId} + + AND a.user_card_id = #{param.userCardId} + + + AND a.card_num LIKE CONCAT('%', #{param.cardNum}, '%') + AND a.type = #{param.type} @@ -22,6 +28,9 @@ AND a.balance = #{param.balance} + + AND a.num = #{param.num} + AND a.remark LIKE CONCAT('%', #{param.remark}, '%') diff --git a/src/main/java/com/gxwebsoft/booking/mapper/xml/UserCardMapper.xml b/src/main/java/com/gxwebsoft/booking/mapper/xml/UserCardMapper.xml index d6d79fe..c1534a7 100644 --- a/src/main/java/com/gxwebsoft/booking/mapper/xml/UserCardMapper.xml +++ b/src/main/java/com/gxwebsoft/booking/mapper/xml/UserCardMapper.xml @@ -44,6 +44,9 @@ AND a.price = #{param.price} + + AND a.pay_status = #{param.payStatus} + AND a.card_desc LIKE CONCAT('%', #{param.cardDesc}, '%') diff --git a/src/main/java/com/gxwebsoft/booking/param/UserCardLogParam.java b/src/main/java/com/gxwebsoft/booking/param/UserCardLogParam.java index 15527d0..15d8db8 100644 --- a/src/main/java/com/gxwebsoft/booking/param/UserCardLogParam.java +++ b/src/main/java/com/gxwebsoft/booking/param/UserCardLogParam.java @@ -14,7 +14,7 @@ import lombok.EqualsAndHashCode; * 明细表查询参数 * * @author 科技小王子 - * @since 2024-05-31 17:15:09 + * @since 2024-06-01 12:59:38 */ @Data @EqualsAndHashCode(callSuper = false) @@ -31,6 +31,13 @@ public class UserCardLogParam extends BaseParam { @QueryField(type = QueryType.EQ) private Integer userId; + @ApiModelProperty(value = "会员卡ID") + @QueryField(type = QueryType.EQ) + private Integer userCardId; + + @ApiModelProperty(value = "会员卡卡号") + private String cardNum; + @ApiModelProperty(value = "IC卡类型:1年卡,2次卡,3月卡,4会员IC卡,5充值卡 ") @QueryField(type = QueryType.EQ) private Integer type; @@ -43,6 +50,10 @@ public class UserCardLogParam extends BaseParam { @QueryField(type = QueryType.EQ) private BigDecimal balance; + @ApiModelProperty(value = "剩余次数") + @QueryField(type = QueryType.EQ) + private Integer num; + @ApiModelProperty(value = "管理员备注") private String remark; diff --git a/src/main/java/com/gxwebsoft/booking/service/UserCardLogService.java b/src/main/java/com/gxwebsoft/booking/service/UserCardLogService.java index dbf61f6..1ac5ffa 100644 --- a/src/main/java/com/gxwebsoft/booking/service/UserCardLogService.java +++ b/src/main/java/com/gxwebsoft/booking/service/UserCardLogService.java @@ -11,7 +11,7 @@ import java.util.List; * 明细表Service * * @author 科技小王子 - * @since 2024-05-31 17:15:10 + * @since 2024-06-01 12:59:38 */ public interface UserCardLogService extends IService { diff --git a/src/main/java/com/gxwebsoft/booking/service/impl/CardServiceImpl.java b/src/main/java/com/gxwebsoft/booking/service/impl/CardServiceImpl.java index 558404f..2a13be6 100644 --- a/src/main/java/com/gxwebsoft/booking/service/impl/CardServiceImpl.java +++ b/src/main/java/com/gxwebsoft/booking/service/impl/CardServiceImpl.java @@ -1,5 +1,6 @@ package com.gxwebsoft.booking.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gxwebsoft.booking.entity.UserCard; @@ -11,6 +12,7 @@ import com.gxwebsoft.booking.service.UserCardService; import com.gxwebsoft.common.core.web.PageParam; import com.gxwebsoft.common.core.web.PageResult; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.List; @@ -37,7 +39,9 @@ public class CardServiceImpl extends ServiceImpl implements Ca if(param.getSceneType() != null && param.getSceneType().equals("showCanBuyVipCard")){ final List userCardList = userCardService.list(new LambdaUpdateWrapper().eq(UserCard::getUserId, param.getBuyUserId())); final Set collect = userCardList.stream().map(UserCard::getCardId).collect(Collectors.toSet()); - param.setCardIds(collect); + if (!CollectionUtils.isEmpty(collect)) { + param.setCardIds(collect); + } } List list = baseMapper.selectPageRel(page, param); diff --git a/src/main/java/com/gxwebsoft/booking/service/impl/UserCardLogServiceImpl.java b/src/main/java/com/gxwebsoft/booking/service/impl/UserCardLogServiceImpl.java index 15350ed..01da743 100644 --- a/src/main/java/com/gxwebsoft/booking/service/impl/UserCardLogServiceImpl.java +++ b/src/main/java/com/gxwebsoft/booking/service/impl/UserCardLogServiceImpl.java @@ -8,6 +8,7 @@ import com.gxwebsoft.booking.param.UserCardLogParam; import com.gxwebsoft.common.core.web.PageParam; import com.gxwebsoft.common.core.web.PageResult; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.List; @@ -15,7 +16,7 @@ import java.util.List; * 明细表Service实现 * * @author 科技小王子 - * @since 2024-05-31 17:15:10 + * @since 2024-06-01 12:59:38 */ @Service public class UserCardLogServiceImpl extends ServiceImpl implements UserCardLogService { diff --git a/src/main/java/com/gxwebsoft/shop/controller/OrderController.java b/src/main/java/com/gxwebsoft/shop/controller/OrderController.java index d3f37a9..5408a22 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/OrderController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderController.java @@ -193,22 +193,23 @@ public class OrderController extends BaseController { userCard.setTenantId(card.getTenantId()); userCard.setExpirationTime(DateUtil.offset(DateUtil.date(), DateField.MONTH, card.getMonth())); userCardService.save(userCard); + order.setCardId(userCard.getId()); } - // 余额支付 + // TODO 余额支付 if (order.getPayType().equals(0)) { order.setAccessToken(access_token); order.setLoginUser(loginUser); return success("下单成功", orderService.payByBalance(order)); } - // 微信统一下单接口 + // TODO 微信统一下单接口 if (order.getPayType().equals(1)) { return success("下单成功", orderService.createWxOrder(order)); } - // 会员卡支付 - if(order.getPayType().equals(7)){ + // TODO 会员卡支付 + if(order.getPayType().equals(2)){ order.setAccessToken(access_token); order.setLoginUser(loginUser); return success("下单成功", orderService.payByUserCard(order)); diff --git a/src/main/java/com/gxwebsoft/shop/controller/WxPayNotifyController.java b/src/main/java/com/gxwebsoft/shop/controller/WxPayNotifyController.java index 8705bb3..4ad8425 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/WxPayNotifyController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/WxPayNotifyController.java @@ -6,6 +6,8 @@ import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.booking.entity.UserCard; +import com.gxwebsoft.booking.service.UserCardService; import com.gxwebsoft.common.core.config.ConfigProperties; import com.gxwebsoft.common.core.utils.RedisUtil; import com.gxwebsoft.common.core.web.BaseController; @@ -46,6 +48,8 @@ public class WxPayNotifyController extends BaseController { @Resource private OrderInfoService orderInfoService; @Resource + private UserCardService userCardService; + @Resource private RedisUtil redisUtil; @Resource private ConfigProperties conf; @@ -124,6 +128,12 @@ public class WxPayNotifyController extends BaseController { orderService.updateByOutTradeNo(order); // 6. TODO 同步更新订单明细的支付状态 orderInfoService.updateByOutTradeNo(order); + // 7.同步会员卡状态 + if(order.getType().equals(2)){ + final UserCard userCard = userCardService.getById(order.getCardId()); + userCard.setPayStatus(1); + userCardService.updateById(userCard); + } return "SUCCESS"; } } diff --git a/src/main/java/com/gxwebsoft/shop/entity/Order.java b/src/main/java/com/gxwebsoft/shop/entity/Order.java index a426724..5a9d8a1 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/Order.java +++ b/src/main/java/com/gxwebsoft/shop/entity/Order.java @@ -33,7 +33,7 @@ public class Order implements Serializable { @TableId(value = "order_id", type = IdType.AUTO) private Integer orderId; - @ApiModelProperty(value = "订单类型,0商城订单 1客户预定 2俱乐部训练场 3活动订场") + @ApiModelProperty(value = "订单类型,0商城订单 1预定订单 2会员卡") private Integer type; @ApiModelProperty(value = "下单渠道,0普通预定 1俱乐部训练场 3活动订场") @@ -65,7 +65,7 @@ public class Order implements Serializable { private Integer couponId; @ApiModelProperty(value = "使用的会员卡id") - private String cardId; + private Integer cardId; @ApiModelProperty(value = "关联管理员id") private Integer adminId; diff --git a/src/main/java/com/gxwebsoft/shop/param/OrderParam.java b/src/main/java/com/gxwebsoft/shop/param/OrderParam.java index 94171b0..4074ce1 100644 --- a/src/main/java/com/gxwebsoft/shop/param/OrderParam.java +++ b/src/main/java/com/gxwebsoft/shop/param/OrderParam.java @@ -63,8 +63,13 @@ public class OrderParam extends BaseParam { private Integer couponId; @ApiModelProperty(value = "使用的会员卡id") + @QueryField(type = QueryType.EQ) private String cardId; + @ApiModelProperty(value = "用户会员卡ID") + @QueryField(type = QueryType.EQ) + private Integer userCardId; + @ApiModelProperty(value = "关联管理员id") @QueryField(type = QueryType.EQ) private Integer adminId; diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java index 8a30626..6ba5198 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java @@ -292,6 +292,12 @@ public class OrderServiceImpl extends ServiceImpl implements order.setPayTime(DateUtil.date()); order.setExpirationTime(DateUtil.offset(DateUtil.date(), DateField.YEAR, 10)); orderService.updateById(order); + // 更新会员卡状态 + if(order.getType().equals(2)){ + final UserCard userCard = userCardService.getById(order.getCardId()); + userCard.setPayStatus(1); + userCardService.updateById(userCard); + } return true; } return false; @@ -329,6 +335,9 @@ public class OrderServiceImpl extends ServiceImpl implements // 记录明细 userCardLog.setUserId(order.getUserId()); + userCardLog.setUserCardId(userCard.getId()); + userCardLog.setCardNum(userCard.getCardNum()); + userCardLog.setComments(order.getComments()); userCardLog.setType(userCard.getType()); userCardLog.setMoney(order.getPayPrice()); userCardLog.setOrderNo(order.getOrderNo());