ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java
@@ -59,6 +59,12 @@ } @Override public R<List<AppUser>> getTopUsers() { log.error("获取用户列表失败:{}", cause.getMessage()); throw new RuntimeException("获取用户列表失败"); } @Override public R<Long> getVipCount(Long userId, Integer vipId) { log.error("获取直推会员数失败:{}", cause.getMessage()); throw new RuntimeException("获取直推会员数失败"); ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -49,7 +49,8 @@ @GetMapping("/appletLogin/getSuperiorLeader") R<AppUser> getSuperiorLeader(@RequestParam("id") Long id); @GetMapping("/app-user/getTopUsers") R<List<AppUser>> getTopUsers(); @PostMapping("/app-user/getVipCount") R<Long> getVipCount(@RequestParam("userId")Long userId, @RequestParam("vipId") Integer vipId ); ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Share.java
@@ -77,6 +77,10 @@ @ApiModelProperty(value = "对象id") @TableField("object_id") private String objectId; @TableField(exist = false) private String authName; @TableField(exist = false) private String authPhone; } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/VipGood.java
@@ -34,8 +34,8 @@ private Integer vipId; @ApiModelProperty(value = "指定购买后升级商品的json快照") @TableField("good_json") private String goodJson; @TableField("good_id") private Integer goodId; } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/VipSetting.java
@@ -10,6 +10,7 @@ import java.io.Serializable; import java.math.BigDecimal; import java.util.List; /** * <p> @@ -135,5 +136,14 @@ @TableField("vip_level_up_proxy_role") private Integer vipLevelUpProxyRole; @ApiModelProperty(value = "指定会员升级商品") @TableField("good_ids") private String goodIds; @ApiModelProperty("指定商品列表") @TableField(exist = false) private List<Goods> goodsList; } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -22,6 +22,7 @@ import javax.annotation.Resource; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; import com.ruoyi.account.vo.*; @@ -92,6 +93,18 @@ } @ResponseBody @PostMapping("/getTopUsers") public R<List<AppUser>> getTopUsers(@RequestBody AppUser appUser) { List<Integer> vipIds = new ArrayList<>(); vipIds.add(5); vipIds.add(6); vipIds.add(7); List<AppUser> list = appUserService.lambdaQuery().in(AppUser::getVipId, vipIds).list(); return R.ok(list); } @ResponseBody @PostMapping("/getCouponCount") public R<Long> getCouponCount(@RequestParam("userId")Long userId, @RequestParam("couponId") Integer couponId ){ Long count = userCouponService.lambdaQuery().eq(UserCoupon::getAppUserId, userId).eq(UserCoupon::getCouponId, couponId).count(); ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java
@@ -102,7 +102,7 @@ @ResponseBody @PostMapping("/getGoodsByIds") public R<List<Goods>> getGoodsByIds(@RequestParam("ids") String [] ids){ List<Goods> goods = goodsService.lambdaQuery().in(Goods::getId, ids).eq(Goods::getStatus, 0).list(); List<Goods> goods = goodsService.lambdaQuery().in(Goods::getId, ids).list(); return R.ok(goods); } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java
@@ -3,11 +3,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.other.api.domain.Share; import com.ruoyi.other.api.domain.Shop; import com.ruoyi.other.api.feignClient.ShopClient; import com.ruoyi.other.enums.ShareAddType; import com.ruoyi.other.enums.ShareAuditStatus; import com.ruoyi.other.service.ShareService; @@ -37,6 +41,10 @@ private ShareService shareService; @Resource private TokenService tokenService; @Resource private AppUserClient appUserClient; @Resource private ShopClient shopClient; /** * 分享列表 @@ -169,8 +177,21 @@ @ApiOperation(value = "列表", tags = {"后台-分享管理-审核"}) @GetMapping("/manage/auth/list") public R<Page<Share>> authmanagelist(String name,Integer addType,@RequestParam Integer PageNum,Integer pageSize){ Page<Share> page = shareService.lambdaQuery().ne(Share::getAuditStatus,1).like(name != null, Share::getName, name).eq(addType != null, Share::getAddType, addType).page(Page.of(pageSize, pageSize)); public R<Page<Share>> authmanagelist(String name,Integer addType,@RequestParam Integer pageNum,Integer pageSize){ Page<Share> page = shareService.lambdaQuery().ne(Share::getAuditStatus,1).like(name != null, Share::getName, name).eq(addType != null, Share::getAddType, addType).page(Page.of(pageNum, pageSize)); for (Share record : page.getRecords()) { if (record.getAddType()==2) { AppUser appUserById = appUserClient.getAppUserById(Long.valueOf(record.getObjectId())); record.setAuthName(appUserById.getName()); record.setAuthPhone(appUserById.getPhone()); } if (record.getAddType()==3) { R<Shop> shopById = shopClient.getShopById(Integer.valueOf(record.getObjectId())); if (shopById.getData()!=null){ record.setAuthName(shopById.getData().getName()); } } } return R.ok(page); } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java
@@ -4,7 +4,13 @@ import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.api.domain.BaseSetting; import com.ruoyi.other.api.domain.Goods; import com.ruoyi.other.api.domain.VipGood; import com.ruoyi.other.api.domain.VipSetting; import com.ruoyi.other.api.feignClient.GoodsClient; import com.ruoyi.other.dto.VipSetDto; import com.ruoyi.other.service.BaseSettingService; import com.ruoyi.other.service.VipGoodService; import com.ruoyi.other.service.VipSettingService; import io.swagger.annotations.ApiOperation; @@ -13,6 +19,8 @@ import io.swagger.annotations.ApiParam; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; /** @@ -35,6 +43,13 @@ private TokenService tokenService; @Resource private VipGoodService vipGoodService; @Resource private BaseSettingService baseSettingService; @Resource private GoodsClient goodsClient; @Resource private VipGoodService getVipGoodService; @GetMapping("/info") @ApiOperation(value = "获取各级会员信息", tags = {"小程序-个人中心首页", "小程序-会员中心"}) @@ -95,6 +110,96 @@ public R<VipSetting> getVipSettingById(@ApiParam(value = "会员id") @RequestParam("id") Integer id) { return R.ok(vipSettingService.getById(id)); } @GetMapping("/manage/info") @ApiOperation(value = "查询", tags = {"后台-会员设置"}) public R<VipSetDto> managesetinfo() { VipSetDto vipSetDto = new VipSetDto(); VipSetting byId1 = vipSettingService.getById(1); vipSetDto.setLevel1Name(byId1.getVipName()); VipSetting byId2 = vipSettingService.getById(2); vipSetDto.setLevel2Name(byId2.getVipName()); VipSetting byId3 = vipSettingService.getById(3); vipSetDto.setLevel3Name(byId3.getVipName()); VipSetting byId4 = vipSettingService.getById(4); vipSetDto.setLevel4Name(byId4.getVipName()); VipSetting byId5 = vipSettingService.getById(5); vipSetDto.setLevel5Name(byId5.getVipName()); VipSetting byId6 = vipSettingService.getById(6); vipSetDto.setLevel6Name(byId6.getVipName()); VipSetting byId7 = vipSettingService.getById(7); vipSetDto.setLevel7Name(byId7.getVipName()); BaseSetting base1 = baseSettingService.getById(1); vipSetDto.setPartPoint(new BigDecimal(base1.getContent())); BaseSetting base2 = baseSettingService.getById(2); vipSetDto.setBottomPartPoint(new BigDecimal(base2.getContent())); return R.ok(vipSetDto); } @PostMapping("/manage/set") @ApiOperation(value = "设置", tags = {"后台-会员设置"}) public R<List<VipSetting>> manageset(@RequestBody VipSetDto vipSetDto) { List<VipSetting> vipSettingList = new ArrayList<>(); VipSetting byId1 = vipSettingService.getById(1); byId1.setVipName(vipSetDto.getLevel1Name()); vipSettingList.add(byId1); VipSetting byId2 = vipSettingService.getById(2); byId2.setVipName(vipSetDto.getLevel2Name()); vipSettingList.add(byId2); VipSetting byId3 = vipSettingService.getById(3); byId3.setVipName(vipSetDto.getLevel3Name()); vipSettingList.add(byId3); VipSetting byId4 = vipSettingService.getById(4); byId4.setVipName(vipSetDto.getLevel4Name()); vipSettingList.add(byId4); VipSetting byId5 = vipSettingService.getById(5); byId5.setVipName(vipSetDto.getLevel5Name()); vipSettingList.add(byId5); VipSetting byId6 = vipSettingService.getById(6); byId6.setVipName(vipSetDto.getLevel6Name()); vipSettingList.add(byId6); VipSetting byId7 = vipSettingService.getById(7); byId7.setVipName(vipSetDto.getLevel7Name()); vipSettingList.add(byId7); vipSettingService.updateBatchById(vipSettingList); BaseSetting base1 = baseSettingService.getById(1); base1.setContent(String.valueOf(vipSetDto.getPartPoint())); baseSettingService.updateById(base1); BaseSetting base2 = baseSettingService.getById(2); base2.setContent(String.valueOf(vipSetDto.getBottomPartPoint())); baseSettingService.updateById(base2); BaseSetting base3 = baseSettingService.getById(3); base3.setContent(vipSetDto.getVipInfo()); baseSettingService.updateById(base3); return R.ok(); } @PostMapping("/manage/level/set") @ApiOperation(value = "设置", tags = {"后台-会员等级设置"}) public R<Void> managelevelset(@RequestBody List<VipSetting> vipSettingList) { vipSettingService.updateBatchById(vipSettingList); return R.ok(); } @GetMapping("/manage/level/info") @ApiOperation(value = "查询", tags = {"后台-会员等级设置"}) public R<List<VipSetting>> managelevelinfo() { List<VipSetting> list = vipSettingService.list(); for (VipSetting vipSetting : list) { if (vipSetting.getGoodIds()!=null){ String[] split = vipSetting.getGoodIds().split(","); R<List<Goods>> goodsById = goodsClient.getGoodsById(split); if (goodsById.getData()!=null){ vipSetting.setGoodsList(goodsById.getData()); } } } return R.ok(list); } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/VipSetDto.java
New file @@ -0,0 +1,23 @@ package com.ruoyi.other.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data public class VipSetDto { private String level1Name; private String level2Name; private String level3Name; private String level4Name; private String level5Name; private String level6Name; private String level7Name; @ApiModelProperty("合伙人积分设置一") private BigDecimal partPoint; @ApiModelProperty("合伙人积分设置二") private BigDecimal bottomPartPoint; @ApiModelProperty("会员说明设置") private String vipInfo; } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/VipSettingService.java
@@ -14,4 +14,6 @@ public interface VipSettingService extends IService<VipSetting> { VipSetting getVipSettingByUserId(Long userId); void downUsers(); } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/VipSettingServiceImpl.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.other.mapper.VipSettingMapper; import com.ruoyi.other.api.domain.VipSetting; @@ -10,6 +11,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** * <p> @@ -32,4 +34,27 @@ } return this.getById(appUser.getVipId()); } @Override public void downUsers() { //查出可能需要降级的人员 R<List<AppUser>> topUsers = appUserClient.getTopUsers(); //循环判断是否要展示 if (topUsers.getData()!=null && topUsers.getData().size()>0){ for (AppUser appUser : topUsers.getData()){ if (appUser.getVipId()==5){ VipSetting vipSetting = this.baseMapper.selectById(5); if (vipSetting.getKeepBuyPoint()!=null){ //如果消费不为空,查找对应天数的消费积分 //如果消费积分小于保级积分,设置用户降级标志并将降级信息 } } } } //然后设置降级提示 } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/task/TaskUtil.java
New file @@ -0,0 +1,42 @@ package com.ruoyi.other.task; import com.ruoyi.other.service.VipSettingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Date; import java.util.List; /** * 定时任务工具类 */ @Component public class TaskUtil { @Resource private VipSettingService vipSettingService; /** * 每天的凌晨执行的任务 */ @Scheduled(cron = "0 0 0 * * *") public void taskDay(){ try { vipSettingService.downUsers(); }catch (Exception e){ e.printStackTrace(); } } }