ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java
@@ -104,6 +104,11 @@ public void vipUpgrade(Long appUserId) { R.fail("检查会员等级变更失败:" + cause.getMessage()); } @Override public void demotionDetection() { R.fail("用户降级检测失败:" + cause.getMessage()); } }; } } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -90,4 +90,11 @@ */ @PostMapping("/app-user/vipUpgrade") void vipUpgrade(@RequestParam("appUserId") Long appUserId); /** * 用户降级检测 */ @PostMapping("/app-user/demotionDetection") void demotionDetection(); } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
@@ -227,6 +227,10 @@ @ApiModelProperty(value = "可用积分") @TableField("available_point") private Integer availablePoint; @ApiModelProperty(value = "可用总积分数") @TableField("total_available_point") private Integer totalAvailablePoint; @ApiModelProperty(value = "可转增积分") @TableField("transferable_point") @@ -307,7 +311,7 @@ @TableField(exist = false) private Set<Integer> shopIds; @ApiModelProperty(value = "降级预警") @ApiModelProperty(value = "降级预警(0=否,1=是)") @TableField("is_danger") private Integer isDanger; ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/VerifiableShopVo.java
@@ -17,4 +17,9 @@ private String name; @ApiModelProperty("距离") private Long distance; @ApiModelProperty("地址") private String address; @ApiModelProperty("图片") private String homePicture; } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopPoint.java
@@ -40,9 +40,9 @@ @TableField("shop_id") private Integer shopId; @ApiModelProperty(value = "变动类型(1=门店业绩,2=门店返佣,3=下级门店返佣,4=门店服务返佣)") @ApiModelProperty(value = "变动类型(1=门店业绩,2=门店返佣,3=下级门店返佣)") @TableField("type") @Excel(name = "变动类型", readConverterExp = "1=门店业绩,2=门店返佣,3=下级门店返佣,4=门店服务返佣") @Excel(name = "变动类型", readConverterExp = "1=门店服务返佣,2=门店返佣,3=下级门店返佣") private Integer type; @ApiModelProperty(value = "历史余额") ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -751,5 +751,14 @@ public void vipUpgrade(@RequestParam("appUserId") Long appUserId){ appUserService.vipUpgrade(appUserId); } /** * 用户降级检测 */ @PostMapping("/demotionDetection") public void demotionDetection(){ appUserService.demotionDetection(); } } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShareController.java
@@ -71,6 +71,7 @@ appUser.setTotalPoint(appUser.getTotalPoint() + everySharePoint); appUser.setLavePoint(appUser.getLavePoint() + everySharePoint); appUser.setAvailablePoint(appUser.getAvailablePoint() + everySharePoint1); appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + everySharePoint1); if(null != pointSetting && 1 == pointSetting.getWorkPointGift()){ appUser.setTransferablePoint(appUser.getTransferablePoint() + everySharePoint1); } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserSignRecordController.java
@@ -79,6 +79,7 @@ appUser.setTotalPoint(appUser.getTotalPoint() + signPoint); appUser.setLavePoint(appUser.getLavePoint() + signPoint); appUser.setAvailablePoint(appUser.getAvailablePoint() + signPoint1); appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + signPoint1); if(null != pointSetting && 1 == pointSetting.getWorkPointGift()){ appUser.setTransferablePoint(appUser.getTransferablePoint() + signPoint1); } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java
@@ -89,4 +89,10 @@ * @param appUserId */ void vipUpgrade(Long appUserId); /** * 降级检测 */ void demotionDetection(); } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -330,6 +330,7 @@ } appUser.setLavePoint(regisPoint); appUser.setAvailablePoint(regisPoint1); appUser.setTotalAvailablePoint(regisPoint1); if(null != pointSetting && 1 == pointSetting.getGetRegisPointGift()){ appUser.setTransferablePoint(regisPoint1); } @@ -379,6 +380,7 @@ } appUser2.setLavePoint(appUser2.getLavePoint() + newPoint); appUser2.setAvailablePoint(appUser2.getAvailablePoint() + newPoint1); appUser2.setTotalAvailablePoint(appUser2.getTotalAvailablePoint() + newPoint1); if(null != pointSetting && 1 == pointSetting.getGetNewPointGift()){ appUser2.setTransferablePoint(appUser2.getTransferablePoint() + newPoint1); } @@ -402,6 +404,7 @@ AppUser appUser3 = this.getById(appUser2.getInviteUserId()); appUser3.setLavePoint(appUser3.getLavePoint() + newPoint); appUser3.setAvailablePoint(appUser3.getAvailablePoint() + newPoint1); appUser3.setTotalAvailablePoint(appUser3.getTotalAvailablePoint() + newPoint1); if(null != pointSetting && 1 == pointSetting.getGetRegisPointGift()){ appUser3.setTransferablePoint(appUser3.getTransferablePoint() + newPoint1); } @@ -755,6 +758,7 @@ appUser.setTotalPoint(appUser.getTotalPoint() + hourPoint); appUser.setLavePoint(appUser.getLavePoint() + hourPoint); appUser.setAvailablePoint(appUser.getAvailablePoint() + hourPoint1); appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + hourPoint1); if(null != pointSetting && 1 == pointSetting.getWorkPointGift()){ appUser.setTransferablePoint(appUser.getTransferablePoint() + hourPoint1); } @@ -796,4 +800,110 @@ return appUserMapper.getAppuserPage1(new Page<>(pageNum, pageSize), appUser,objectId,userIds); } /** * 降级检测 */ @Override public void demotionDetection() { //代理 List<AppUser> appUserList = new ArrayList<>(); VipSetting vipSetting = vipSettingClient.getVipSetting(5).getData(); List<AppUser> list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 5).eq(AppUser::getStatus, 1).eq(AppUser::getDelFlag, 0).eq(AppUser::getIsDanger, 0)); for (AppUser appUser : list) { //消费积分 List<UserPoint> list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 1).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepBuyDay() + " DAY) >= create_time")); int sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); if(sum < vipSetting.getKeepBuyPoint()){ appUser.setIsDanger(1); appUserList.add(appUser); continue; } //返佣积分 list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 2).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepShareDay() + " DAY) >= create_time")); sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); if(sum < vipSetting.getKeepSharePoint()){ appUser.setIsDanger(1); appUserList.add(appUser); continue; } //门店业绩 list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 8).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepShopDay() + " DAY) >= create_time")); sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); if(sum < vipSetting.getKeepShopPoint()){ appUser.setIsDanger(1); appUserList.add(appUser); } } if(appUserList.size() > 0){ this.updateBatchById(appUserList); } //总代 appUserList = new ArrayList<>(); vipSetting = vipSettingClient.getVipSetting(6).getData(); list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 6).eq(AppUser::getStatus, 1).eq(AppUser::getDelFlag, 0).eq(AppUser::getIsDanger, 0)); for (AppUser appUser : list) { //消费积分 List<UserPoint> list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 1).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepBuyDay() + " DAY) >= create_time")); int sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); if(sum < vipSetting.getKeepBuyPoint()){ appUser.setIsDanger(1); appUserList.add(appUser); continue; } //返佣积分 list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 2).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepShareDay() + " DAY) >= create_time")); sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); if(sum < vipSetting.getKeepSharePoint()){ appUser.setIsDanger(1); appUserList.add(appUser); continue; } //门店业绩 list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 8).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepShopDay() + " DAY) >= create_time")); sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); if(sum < vipSetting.getKeepShopPoint()){ appUser.setIsDanger(1); appUserList.add(appUser); } } if(appUserList.size() > 0){ this.updateBatchById(appUserList); } //合伙人 appUserList = new ArrayList<>(); vipSetting = vipSettingClient.getVipSetting(7).getData(); list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 7).eq(AppUser::getStatus, 1).eq(AppUser::getDelFlag, 0).eq(AppUser::getIsDanger, 0)); for (AppUser appUser : list) { //消费积分 List<UserPoint> list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 1).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepBuyDay() + " DAY) >= create_time")); int sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); if(sum < vipSetting.getKeepBuyPoint()){ appUser.setIsDanger(1); appUserList.add(appUser); continue; } //返佣积分 list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 2).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepShareDay() + " DAY) >= create_time")); sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); if(sum < vipSetting.getKeepSharePoint()){ appUser.setIsDanger(1); appUserList.add(appUser); continue; } //门店业绩 list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 8).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepShopDay() + " DAY) >= create_time")); sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); if(sum < vipSetting.getKeepShopPoint()){ appUser.setIsDanger(1); appUserList.add(appUser); } } if(appUserList.size() > 0){ this.updateBatchById(appUserList); } } } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java
@@ -39,7 +39,6 @@ /** * 获取支付页面的优惠券列表数据 * @param userId * @param orderMoney * @return */ @Override ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/TaskUtil.java
@@ -30,6 +30,8 @@ public void sendVipCoupon(){ //解绑推广人 appUserService.unbindThePromoter(); //降级检测 appUserService.demotionDetection(); } /** ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
@@ -162,6 +162,7 @@ inviteUser.setSharePoint(inviteUser.getSharePoint() + ztsj_point); inviteUser.setLavePoint(inviteUser.getLavePoint() + ztsj_point); inviteUser.setAvailablePoint(inviteUser.getAvailablePoint() + earnPoint1); inviteUser.setTotalAvailablePoint(inviteUser.getTotalAvailablePoint() + earnPoint1); if(null != pointSetting && 1 == pointSetting.getSharePointGift()){ inviteUser.setTransferablePoint(inviteUser.getTransferablePoint() + earnPoint1); } @@ -217,6 +218,7 @@ superiorLeader.setSharePoint(superiorLeader.getSharePoint() + zbsj_point); superiorLeader.setLavePoint(superiorLeader.getLavePoint() + zbsj_point); superiorLeader.setAvailablePoint(superiorLeader.getAvailablePoint() + earnPoint1); superiorLeader.setTotalAvailablePoint(superiorLeader.getTotalAvailablePoint() + earnPoint1); if(null != pointSetting && 1 == pointSetting.getSharePointGift()){ superiorLeader.setTransferablePoint(superiorLeader.getTransferablePoint() + earnPoint1); } @@ -276,6 +278,7 @@ } shopAppUser.setLavePoint(shopAppUser.getLavePoint() + hxmd_point); shopAppUser.setAvailablePoint(shopAppUser.getAvailablePoint() + earnPoint1); shopAppUser.setTotalAvailablePoint(shopAppUser.getTotalAvailablePoint() + earnPoint1); if(null != pointSetting && 1 == pointSetting.getShopPointGift()){ shopAppUser.setTransferablePoint(shopAppUser.getTransferablePoint() + earnPoint1); } @@ -321,7 +324,7 @@ if(!shop.getLavePoint().equals(shopLavePoint)){ ShopPoint shopPoint = new ShopPoint(); shopPoint.setShopId(shop.getId()); shopPoint.setType(4); shopPoint.setType(1); shopPoint.setHistoricalPoint(shopLavePoint); shopPoint.setVariablePoint(hxmd_point); shopPoint.setBalance(shop.getLavePoint()); @@ -348,6 +351,7 @@ } technicianAppUser.setLavePoint(technicianAppUser.getLavePoint() + js_point); technicianAppUser.setAvailablePoint(technicianAppUser.getAvailablePoint() + earnPoint1); technicianAppUser.setTotalAvailablePoint(technicianAppUser.getTotalAvailablePoint() + earnPoint1); if(null != pointSetting && 1 == pointSetting.getPersonPointGift()){ technicianAppUser.setTransferablePoint(technicianAppUser.getTransferablePoint() + earnPoint1); } @@ -397,6 +401,7 @@ } bdShopAppUser.setLavePoint(bdShopAppUser.getLavePoint() + bdmd_point); bdShopAppUser.setAvailablePoint(bdShopAppUser.getAvailablePoint() + earnPoint1); bdShopAppUser.setTotalAvailablePoint(bdShopAppUser.getTotalAvailablePoint() + earnPoint1); if(null != pointSetting && 1 == pointSetting.getShopSharePointGift()){ bdShopAppUser.setTransferablePoint(bdShopAppUser.getTransferablePoint() + earnPoint1); } @@ -480,6 +485,7 @@ } sjShopAppUser.setLavePoint(sjShopAppUser.getLavePoint() + bdmdsj_point); sjShopAppUser.setAvailablePoint(sjShopAppUser.getAvailablePoint() + earnPoint1); sjShopAppUser.setTotalAvailablePoint(sjShopAppUser.getTotalAvailablePoint() + earnPoint1); if(null != pointSetting && 1 == pointSetting.getShopSharePointGift()){ sjShopAppUser.setTransferablePoint(sjShopAppUser.getTransferablePoint() + earnPoint1); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -937,6 +937,7 @@ appUser.setLavePoint(appUser.getLavePoint() + earnPoint); appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint); appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1); appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + earnPoint1); if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){ appUser.setTransferablePoint(appUser.getTransferablePoint() + earnPoint1); } @@ -1009,6 +1010,7 @@ appUser.setShopPoint(appUser.getShopPoint() + earnPoint); appUser.setLavePoint(appUser.getLavePoint() + earnPoint); appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1); appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + earnPoint1); if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){ appUser.setTransferablePoint(appUser.getTransferablePoint() + earnPoint1); } @@ -1141,6 +1143,7 @@ appUser.setLavePoint(appUser.getLavePoint() + earnPoint); appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint); appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1); appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + earnPoint1); UserPoint userPoint = new UserPoint(); userPoint.setType(1); @@ -1203,6 +1206,7 @@ appUser.setShopPoint(appUser.getShopPoint() + earnPoint); appUser.setLavePoint(appUser.getLavePoint() + earnPoint); appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1); appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + earnPoint1); appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint); appUser.setLastShopTime(LocalDateTime.now()); appUserClient.editAppUserById(appUser); ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -12,9 +12,13 @@ import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.vo.VerifiableShopVo; import com.ruoyi.other.api.domain.Goods; import com.ruoyi.other.api.domain.GoodsShop; import com.ruoyi.other.api.domain.Shop; import com.ruoyi.other.api.domain.ShopScore; import com.ruoyi.other.mapper.ShopMapper; import com.ruoyi.other.service.GoodsService; import com.ruoyi.other.service.GoodsShopService; import com.ruoyi.other.service.ShopScoreService; import com.ruoyi.other.service.ShopService; import com.ruoyi.other.util.GeodesyUtil; @@ -69,6 +73,10 @@ private UserShopClient userShopClient; @Resource private AppUserShopClient appUserShopClient; @Resource private GoodsService goodsService; @Resource private GoodsShopService goodsShopService; @@ -466,15 +474,27 @@ @ResponseBody @GetMapping("/getVerifiableShop") @ApiOperation(value = "获取可核销门店列表", tags = {"购物车-小程序"}) public R<List<VerifiableShopVo>> getVerifiableShop(String longitude, String latitude){ public R<List<VerifiableShopVo>> getVerifiableShop(String longitude, String latitude, Integer goodsId){ String city = TencentMapUtil.inverseGeographicalAnalysis(longitude, latitude, false); city = city.substring(0, 4) + "00"; List<Shop> list = shopService.list(new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag, 0).eq(Shop::getCityCode, city)); LambdaQueryWrapper<Shop> wrapper = new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag, 0).eq(Shop::getCityCode, city); if(null != goodsId){ Goods goods = goodsService.getById(goodsId); if(1 == goods.getType() && 1 == goods.getAppointStore()){ List<Integer> collect = goodsShopService.list(new LambdaQueryWrapper<GoodsShop>().eq(GoodsShop::getGoodsId, goods)).stream().map(GoodsShop::getShopId).collect(Collectors.toList()); if(collect.size() > 0){ wrapper.in(Shop::getId, collect); } } } List<Shop> list = shopService.list(wrapper); List<VerifiableShopVo> verifiableShopVoList = new ArrayList<>(); for (Shop shop : list) { VerifiableShopVo vo = new VerifiableShopVo(); vo.setId(shop.getId()); vo.setName(shop.getName()); vo.setAddress(shop.getAddress()); vo.setHomePicture(shop.getHomePicture()); Double wgs84 = GeodesyUtil.getDistance(longitude + "," + latitude, shop.getLongitude() + "," + shop.getLatitude()).get("WGS84"); vo.setDistance(wgs84.longValue()); verifiableShopVoList.add(vo); ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/VipSettingController.java
@@ -207,6 +207,8 @@ @ApiOperation(value = "设置", tags = {"后台-会员等级设置"}) public R<Void> managelevelset(@RequestBody SetDto setDto) { vipSettingService.updateBatchById(setDto.getVipSettingList()); //会员降级检测 appUserClient.demotionDetection(); return R.ok(); } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java
@@ -65,6 +65,8 @@ Integer goodsId = seckillActivityDetailVO.getGoodsId(); Goods goods = goodsService.getById(goodsId); seckillActivityDetailVO.setGoodsName(goods.getName()); seckillActivityDetailVO.setGoodsType(goods.getType()); List<Shop> shops; if(goods.getAppointStore() == 1){ List<Integer> shopIdList = goodsShopMapper.selectList(new LambdaQueryWrapper<GoodsShop>() ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/SeckillActivityVO.java
@@ -24,7 +24,7 @@ private String introduction; @ApiModelProperty(value = "商品类型") private String goodsType; private Integer goodsType; @ApiModelProperty(value = "商品分类名称") private String goodsCategoryName;