diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ShopUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ShopUserService.java index 24d41ca..1629292 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ShopUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ShopUserService.java @@ -8,4 +8,11 @@ public interface ShopUserService { ShopUser login(ShopUserResq shopUser); ShopUser modifyUser(ShopUser shopUser); + + /** + * 更新用户vip时间 + * @param userId 用户id + * @param type 1 - 月 2-季 3-半年 4-年 + */ + ShopUser updateShopUserVipTime(Long userId, String type); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CShopUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CShopUserServiceImpl.java index 714d303..9fda842 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CShopUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CShopUserServiceImpl.java @@ -9,6 +9,7 @@ import com.ruoyi.common.core.domain.entity.ShopUser; import com.ruoyi.common.core.domain.entity.ShopUserResq; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.MusicUtil; +import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.config.UmengConfig; import com.ruoyi.system.mapper.ActivityInfoMapper; @@ -18,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Calendar; import java.util.Date; @Transactional @@ -129,6 +131,80 @@ public class CShopUserServiceImpl implements ShopUserService { return shopUser; } + @Override + public ShopUser updateShopUserVipTime(Long userId, String type) { + // 更新用户vip时间 + // * @param userId 用户id + // * @param type 1 - 月 2-季 3-半年 4-年 + + // 根据type计算天数 + int days = 0; + switch (type) { + case "1": + days = 30; // 月 + break; + case "2": + days = 90; // 季 + break; + case "3": + days = 180; // 半年 + break; + case "4": + days = 365; // 年 + break; + default: + ShopUser errorMsg = new ShopUser(); + errorMsg.setMsg("VIP类型参数错误"); + return errorMsg; + } + + // 查询用户信息 + ShopUser shopUser = shopUserMapper.selectShopUserByUserId(userId); + if (shopUser == null) { + ShopUser errorMsg = new ShopUser(); + errorMsg.setMsg("用户不存在"); + return errorMsg; + } + + // 判断是否需要续期(如果VIP未过期,从结束时间开始续期) + Date startTime; + Date endTime; + Date currentDate = new Date(); + + if (shopUser.getVip() != null && shopUser.getVip() == 1L + && shopUser.getVipEndTime() != null + && shopUser.getVipEndTime().after(currentDate)) { + // VIP未过期,从结束时间开始续期 + // 保持原有开始时间,如果为空则使用当前时间 + startTime = (shopUser.getVipStartTime() != null) + ? shopUser.getVipStartTime() + : currentDate; + Calendar calendar = Calendar.getInstance(); + calendar.setTime(shopUser.getVipEndTime()); + calendar.add(Calendar.DAY_OF_YEAR, days); + endTime = calendar.getTime(); + } else { + // VIP已过期或不是VIP,从当前时间开始计算 + startTime = currentDate; + endTime = MusicUtil.getDateAfterNDays(days); + } + + // 更新VIP信息 + shopUser.setVip(1L); + shopUser.setVipStartTime(startTime); + shopUser.setVipEndTime(endTime); + + // 更新到数据库 + int updateCount = shopUserMapper.updateShopUser(shopUser); + if (updateCount > 0) { + return shopUser; + } else { + ShopUser errorMsg = new ShopUser(); + errorMsg.setMsg("VIP时间更新失败"); + return errorMsg; + } + } + public ShopUser loginAndRegis(ShopUserResq shopUser) { ShopUser member = shopUserMapper.selectShopUserByPhone(shopUser.getPhone()); if (shopUser.getPhone() != null && StringUtils.isNull(member)) {