From c80c0184b6e560d41d5aa5691874e07b681fa18f Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 17 一月 2025 18:41:24 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 556 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 470 insertions(+), 86 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java index cce7853..83f0fd9 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -15,11 +16,11 @@ import com.ruoyi.account.util.carBrand.CarBrandUtil; import com.ruoyi.account.wx.model.WeixinProperties; import com.ruoyi.common.core.constant.Constants; +import com.ruoyi.common.core.constant.MsgConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.PointChangeDto; import com.ruoyi.common.core.enums.status.AppUserStatusEnum; -import com.ruoyi.common.core.utils.JwtUtils; -import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.*; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.BasePojo; @@ -28,18 +29,25 @@ import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; import com.ruoyi.common.redis.service.RedisService; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.auth.AuthUtil; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.feignClient.ExchangeOrderClient; +import com.ruoyi.order.api.feignClient.OrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TExchangeOrder; +import com.ruoyi.order.api.model.TGrantVip; import com.ruoyi.other.api.domain.*; +import com.ruoyi.other.api.domain.TCoupon; +import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.dto.UnitListQueryDto; import com.ruoyi.other.api.feignClient.IntegralRuleClient; import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.other.api.feignClient.VipClient; +import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUserApplet; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -50,6 +58,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; @@ -75,6 +84,8 @@ private TAppUserService appUserService; @Resource private TAppUserTagService appUserTagService; + @Autowired + private OrderClient orderClient; @Resource private TAppUserVipDetailService tAppUserVipDetailService; @@ -110,6 +121,7 @@ private TAppUserCarService carService; @Resource private IntegralRuleClient integralRuleClient; + @Resource private VipClient vipClient; @@ -154,7 +166,7 @@ } - + @RequiresPermissions(value = {"/company"}, logical = Logical.OR) @ApiOperation(value = "单位管理列表", tags = {"用户管理-单位管理"}) @PostMapping(value = "/unit/page") public R<Page<TCompany>> unitPage(@RequestBody UnitListQueryDto unitListQueryDto) { @@ -167,8 +179,10 @@ } return R.ok(data); } - - + + + + @RequiresPermissions(value = {"/appUser/list", "/appUser/add", "/appUser/update", "/appUser/updateCompany"}, logical = Logical.OR) @ApiOperation(value = "单位下拉框", tags = {"用户管理-单位管理"}) @GetMapping(value = "/unit/select") public R<List<TCompany>> unitSelect() { @@ -180,8 +194,10 @@ return R.ok(pageR.getData().getRecords()); } - - + + + + @RequiresPermissions(value = {"/company/add", "/company/update"}, logical = Logical.OR) @ApiOperation(value = "单位管理添加或编辑", tags = {"用户管理-单位管理"}) @PostMapping(value = "/unit/addOrUpdate") @Log(title = "【单位管理】添加或编辑单位", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @@ -190,14 +206,18 @@ otherClient.unitAddorUpadate(tCompany); return R.ok(); } - - - - + + + + @RequiresPermissions(value = {"/company/del"}, logical = Logical.OR) @ApiOperation(value = "单位管理删除", tags = {"用户管理-单位管理"}) @DeleteMapping(value = "/unit/delete") @Log(title = "【单位管理】删除单位", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) public R add(@RequestParam String ids) { + List<TAppUser> list = appUserService.lambdaQuery().in(TAppUser::getCompanyId, Arrays.asList(ids.split(","))).list(); + if (!list.isEmpty()){ + return R.fail("当前单位已存在用户,无法删除!"); + } String[] split = ids.split(","); for (String s : split) { otherClient.unitDelete(Integer.valueOf(s)); @@ -205,8 +225,9 @@ return R.ok(); } - - + + + @RequiresPermissions(value = {"/appUser/list"}, logical = Logical.OR) @ApiOperation(value = "用户列表", tags = {"用户管理-用户列表"}) @PostMapping(value = "/user/page") public R<Page<TAppUser>> userPage(@RequestBody UserListQueryDto userListQueryDto) { @@ -219,16 +240,18 @@ Page<TAppUser> page = appUserService.lambdaQuery() .like(userListQueryDto.getUserPhone() != null && !"".equals(userListQueryDto.getUserPhone()), TAppUser::getPhone, userListQueryDto.getUserPhone()) .eq(userListQueryDto.getCompanyId() != null, TAppUser::getCompanyId, userListQueryDto.getCompanyId()) + .eq(userListQueryDto.getProvinceCode() != null && !"".equals(userListQueryDto.getProvinceCode()), TAppUser::getProvinceCode, userListQueryDto.getProvinceCode()) .eq(userListQueryDto.getCityCode() != null && !"".equals(userListQueryDto.getCityCode()), TAppUser::getCityCode, userListQueryDto.getCityCode()) .eq(userListQueryDto.getStatus() != null, TAppUser::getStatus, userListQueryDto.getStatus()) .eq(userListQueryDto.getVipTypeId() != null, TAppUser::getVipId, userListQueryDto.getVipTypeId()) .in(!userIds.isEmpty(),TAppUser::getId,userIds) + .orderByDesc(BasePojo::getCreateTime) .page(Page.of(userListQueryDto.getPageCurr(), userListQueryDto.getPageSize())); if (page.getRecords().isEmpty()){ return R.ok(page); } List<Integer> vipIds = new ArrayList<>(); - vipIds = page.getRecords().stream().map(TAppUser::getVipId).collect(Collectors.toList()); +// vipIds = page.getRecords().stream().map(TAppUser::getVipId).collect(Collectors.toList()); //获取会员map R<Map<Integer, String>> vipMap = otherClient.getVipMap(vipIds); //循环处理 @@ -242,12 +265,20 @@ appUser.setTagName(byIdTag.getData().getName()); } } - //匹配vipMap的值 - appUser.setVipName(vipMap.getData().get(appUser.getVipId())); + if (appUser.getVipEndTime()!=null&&appUser.getVipEndTime().isAfter(LocalDateTime.now())) { + //匹配vipMap的值 + appUser.setVipName(vipMap.getData().get(appUser.getVipId())); + } //累计充电次数 R<Long> useOrderCount = chargingOrderClient.useOrderCount(appUser.getId()); appUser.setOrderCount(useOrderCount.getData()); appUser.setUid(appUser.getId().toString()); + if (appUser.getCompanyId()!=null){ + TCompany data = otherClient.unitDetail(appUser.getCompanyId()).getData(); + if (data!=null){ + appUser.setCompanyName(data.getName()); + } + } TAppUserCar one1 = appUserCarService.lambdaQuery().eq(TAppUserCar::getAppUserId, appUser.getId()).orderByDesc(BasePojo::getCreateTime).last("limit 1").one(); if (one1!=null){ @@ -260,7 +291,9 @@ } return R.ok(page); } - + + + @RequiresPermissions(value = {"/vipList"}, logical = Logical.OR) @ApiOperation(value = "会员列表", tags = {"用户管理-会员列表"}) @PostMapping(value = "/user/vip/page") public R<Page<TAppUser>> vipPage(@RequestBody UserListQueryDto userListQueryDto) { @@ -269,16 +302,25 @@ if (userListQueryDto.getUserTagId() != null){ userIds = appUserTagService.lambdaQuery().eq(TAppUserTag::getUserTagId, userListQueryDto.getUserTagId()).list().stream().map(TAppUserTag::getAppUserId).collect(Collectors.toList()); } + LocalDateTime end1 = null; + LocalDateTime end2 = null ; + if (userListQueryDto.getVipEndTime1()!=null) { + end1 = LocalDateTime.now().plusDays(userListQueryDto.getVipEndTime1()); + } + if (userListQueryDto.getVipEndTime2()!=null){ + end2 = LocalDateTime.now().plusDays(userListQueryDto.getVipEndTime2()); + } //列表查询 Page<TAppUser> page = appUserService.lambdaQuery() .ge(TAppUser::getVipEndTime, LocalDateTime.now()) .like(userListQueryDto.getUserPhone() != null && !"".equals(userListQueryDto.getUserPhone()), TAppUser::getPhone, userListQueryDto.getUserPhone()) .eq(userListQueryDto.getCompanyId() != null, TAppUser::getCompanyId, userListQueryDto.getCompanyId()) + .eq(userListQueryDto.getProvinceCode() != null && !"".equals(userListQueryDto.getProvinceCode()), TAppUser::getProvinceCode, userListQueryDto.getProvinceCode()) .eq(userListQueryDto.getCityCode() != null && !"".equals(userListQueryDto.getCityCode()), TAppUser::getCityCode, userListQueryDto.getCityCode()) .eq(userListQueryDto.getStatus() != null, TAppUser::getStatus, userListQueryDto.getStatus()) .eq(userListQueryDto.getVipTypeId() != null, TAppUser::getVipId, userListQueryDto.getVipTypeId()) - .ge(userListQueryDto.getVipEndTime1() != null, TAppUser::getVipEndTime, userListQueryDto.getVipEndTime1() == null ? null : LocalDateTime.now().plusDays(userListQueryDto.getVipEndTime1())) - .le(userListQueryDto.getVipEndTime2() != null, TAppUser::getVipEndTime, userListQueryDto.getVipEndTime2() == null ? null : LocalDateTime.now().plusDays(userListQueryDto.getVipEndTime2())) + .ge(userListQueryDto.getVipEndTime1() != null, TAppUser::getVipEndTime, end1 ) + .le(userListQueryDto.getVipEndTime2() != null, TAppUser::getVipEndTime, end2) .in(!userIds.isEmpty(), TAppUser::getId, userIds) .page(Page.of(userListQueryDto.getPageCurr(), userListQueryDto.getPageSize())); if (page.getRecords().isEmpty()){ @@ -307,10 +349,19 @@ appUser.setLastDays( Duration.between(LocalDateTime.now(), appUser.getVipEndTime()).toDays()); appUser.setUid(appUser.getId().toString()); + + TAppUserCar one1 = appUserCarService.lambdaQuery().eq(TAppUserCar::getAppUserId, appUser.getId()).orderByDesc(BasePojo::getCreateTime).last("limit 1").one(); + if (one1!=null){ + CarNumDto carNumDto = CarUtil.carNum(one1.getLicensePlate()); + appUser.setPlace(carNumDto.getProvince()+carNumDto.getCity()); + + } } return R.ok(page); } - + + + @RequiresPermissions(value = {"/coupon/send"}, logical = Logical.OR) @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券发放-选择人员") @PostMapping("/choiceUser") public R<Page<TAppUser>> choiceUser(@RequestBody ChoiceUserListQueryDto userListQueryDto) { @@ -327,7 +378,6 @@ Page<TAppUser> page = appUserService.lambdaQuery() .like(userListQueryDto.getUserPhone() != null && !"".equals(userListQueryDto.getUserPhone()), TAppUser::getPhone, userListQueryDto.getUserPhone()) .eq(userListQueryDto.getCityCode() != null && !"".equals(userListQueryDto.getCityCode()), TAppUser::getCityCode, userListQueryDto.getCityCode()) - .eq(userListQueryDto.getProvinceCode() != null && !"".equals(userListQueryDto.getProvinceCode()), TAppUser::getProvinceCode, userListQueryDto.getProvinceCode()) .in(!userIds.isEmpty(),TAppUser::getId,userIds) .eq(TAppUser::getStatus,1) .page(Page.of(userListQueryDto.getPageCurr(), userListQueryDto.getPageSize())); @@ -340,6 +390,14 @@ R<Map<Integer, String>> vipMap = otherClient.getVipMap(vipIds); //循环处理 for (TAppUser appUser : page.getRecords()) { + if (appUser.getProvinceCode()!=null){ + Region data = otherClient.getRegionBuyCode(appUser.getProvinceCode()).getData(); + appUser.setProvince(data.getName()); + } + if(appUser.getCityCode()!=null){ + Region data = otherClient.getRegionBuyCode(appUser.getCityCode()).getData(); + appUser.setCity(data.getName()); + } //拿到最新的tagId TAppUserTag one = appUserTagService.lambdaQuery().eq(TAppUserTag::getAppUserId, appUser.getId()).orderByDesc(TAppUserTag::getCreateTime).last("limit 1").one(); //设置最新的tagName @@ -359,8 +417,9 @@ } return R.ok(page); } - - + + + @RequiresPermissions(value = {"/appUser/add", "/appUser/update"}, logical = Logical.OR) @ApiOperation(value = "用户添加编辑", tags = {"用户管理-用户列表"}) @PostMapping(value = "/user/addOrUpdate") @Log(title = "【用户列表】添加编辑用户", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @@ -398,21 +457,32 @@ } } + }else { + List<TAppUser> list = appUserService.lambdaQuery().eq(TAppUser::getPhone, tAppUser.getPhone()).list(); + if (!list.isEmpty()){ + return R.fail("该手机号已注册"); + } } appUserService.saveOrUpdate(tAppUser); return R.ok(); } - + + + @RequiresPermissions(value = {"/appUser/select", "/vipList/select"}, logical = Logical.OR) @ApiOperation(value = "用户详情", tags = {"用户管理-用户列表"}) @GetMapping(value = "/user/detail/{id}") public R<UserDetailDto> userDetail(@PathVariable Long id) { TAppUser user = appUserService.getById(id); - UserDetailDto userDetailDto = new UserDetailDto(); - BeanUtils.copyProperties(user,userDetailDto); - if (user.getVipId()!=null) { - R<Map<Integer, String>> vipMap = otherClient.getVipMap(Arrays.asList(user.getVipId())); + R<Map<Integer, String>> vipMap = otherClient.getVipMap(Collections.singletonList(user.getVipId())); + if (user.getVipEndTime()!=null&&user.getVipEndTime().isAfter(LocalDateTime.now())) { + //匹配vipMap的值 user.setVipName(vipMap.getData().get(user.getVipId())); } + + + UserDetailDto userDetailDto = new UserDetailDto(); + BeanUtils.copyProperties(user,userDetailDto); + //获取累计充电数量 R<Long> useOrderCount = chargingOrderClient.useOrderCount(user.getId()); userDetailDto.setOrderCount(useOrderCount.getData()); @@ -428,22 +498,35 @@ userDetailDto.setTagName(tagMap.getData().values() .stream() .collect(Collectors.joining(","))); + + + return R.ok(userDetailDto); } - - @ApiOperation(value = "用户详情积分明细", tags = {"后台-用户管理-用户列表","小程序-个人中心"}) + + @RequiresPermissions(value = {"/appUser/select", "/vipList/select"}, logical = Logical.OR) + @ApiOperation(value = "用户详情积分明细", tags = {"后台-用户管理-用户列表"}) @PostMapping(value = "/user/points/page") public R<Page<TAppUserIntegralChange>> pointsDetail(@RequestBody PointsQueryDto pointsQueryDto) { if (pointsQueryDto.getUserId()==null){ pointsQueryDto.setUserId(tokenService.getLoginUserApplet().getUserId()); } List<Integer> types = new ArrayList<>(); - if (pointsQueryDto.getType()!=null){ + if (pointsQueryDto.getType()==null){ types.add(1); types.add(2); types.add(3); types.add(4); types.add(5); + types.add(6); + }else if (pointsQueryDto.getType()==1){ + types.add(1); + types.add(2); + types.add(3); + types.add(4); + types.add(5); + }else if (pointsQueryDto.getType()==2){ + types.add(6); } Page<TAppUserIntegralChange> page = integralChangeService.lambdaQuery() .eq(TAppUserIntegralChange::getAppUserId, pointsQueryDto.getUserId()) @@ -454,7 +537,7 @@ for (TAppUserIntegralChange record : page.getRecords()) { record.setDateTime(record.getCreateTime()); record.setUid(record.getId().toString()); - if (record.getChangeType()==2){ + if (record.getChangeType()==2||record.getChangeType()==3){ R<TChargingOrder> tChargingOrderR = chargingOrderClient.orderDetail(Long.valueOf(record.getExtension())); if (tChargingOrderR.getData()!=null) { record.setOrderNum(tChargingOrderR.getData().getCode()); @@ -471,14 +554,81 @@ return R.ok(page); } + + + + @ApiOperation(value = "用户详情积分明细", tags = {"小程序-个人中心"}) + @PostMapping(value = "/user/points/page1") + public R<Page<TAppUserIntegralChange>> pointsDetail1(@RequestBody PointsQueryDto pointsQueryDto) { + if (pointsQueryDto.getUserId()==null){ + pointsQueryDto.setUserId(tokenService.getLoginUserApplet().getUserId()); + } + List<Integer> types = new ArrayList<>(); + if (pointsQueryDto.getType()==null){ + types.add(1); + types.add(2); + types.add(3); + types.add(4); + types.add(5); + types.add(6); + }else if (pointsQueryDto.getType()==1){ + types.add(1); + types.add(2); + types.add(3); + types.add(4); + types.add(5); + }else if (pointsQueryDto.getType()==2){ + types.add(6); + } + Page<TAppUserIntegralChange> page = integralChangeService.lambdaQuery() + .eq(TAppUserIntegralChange::getAppUserId, pointsQueryDto.getUserId()) + .orderByDesc(TAppUserIntegralChange::getCreateTime) + .eq(pointsQueryDto.getChangeType() != null, TAppUserIntegralChange::getChangeType, pointsQueryDto.getChangeType()) + .in(!types.isEmpty(), TAppUserIntegralChange::getChangeType, types).page(Page.of(pointsQueryDto.getPageCurr(), pointsQueryDto.getPageSize())); + + for (TAppUserIntegralChange record : page.getRecords()) { + record.setDateTime(record.getCreateTime()); + record.setUid(record.getId().toString()); + if (record.getChangeType()==2||record.getChangeType()==3){ + R<TChargingOrder> tChargingOrderR = chargingOrderClient.orderDetail(Long.valueOf(record.getExtension())); + if (tChargingOrderR.getData()!=null) { + record.setOrderNum(tChargingOrderR.getData().getCode()); + } + } + if (record.getChangeType()==6){ + R<TExchangeOrder> tExchangeOrderR = exchangeOrderClient.orderDetail(Long.valueOf(record.getExtension())); + if (tExchangeOrderR.getData()!=null){ + record.setOrderNum(tExchangeOrderR.getData().getCode()); + } + } + } + + return R.ok(page); + + } + @ApiOperation(value = "积分详情", tags = {"小程序-个人中心"}) @GetMapping(value = "/user/points/detail") public R<TAppUserIntegralChange> pointsDetail(String id) { TAppUserIntegralChange byId = integralChangeService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!byId.getAppUserId().equals(userId)){ + return R.fail("权限不足"); + } + if (byId.getChangeType()==6) { + TExchangeOrder data = exchangeOrderClient.orderDetail(Long.valueOf(byId.getExtension())).getData(); + if (data != null) { + byId.setGoodType(data.getOrderType()); + } + }else if (byId.getChangeType()==4){ + TAppUser byId1 = appUserService.getById(byId.getExtension()); + byId.setExtension(byId1.getPhone()); + } return R.ok(byId); } - + + @RequiresPermissions(value = {"/appUser/freeze"}, logical = Logical.OR) @ApiOperation(value = "冻结解冻用户", tags = {"后台-用户管理-用户列表"}) @PostMapping(value = "/user/status/change") @Log(title = "【用户列表】冻结解冻用户", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @@ -489,7 +639,9 @@ appUserService.updateById(appUser); return R.ok(); } - + + + @RequiresPermissions(value = {"/appUser/updateCompany"}, logical = Logical.OR) @ApiOperation(value = "修改单位", tags = {"后台-用户管理-用户列表"}) @PostMapping(value = "/user/unit/change") @Log(title = "【用户列表】修改用户单位", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @@ -501,7 +653,9 @@ } return R.ok(); } - + + + @RequiresPermissions(value = {"/appUser/del"}, logical = Logical.OR) @ApiOperation(value = "删除用户", tags = {"后台-用户管理-用户列表"}) @DeleteMapping(value = "/user/delete") @Log(title = "【用户列表】删除用户", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @@ -513,6 +667,8 @@ return R.ok(); } + @Resource + private TAppUserVipDetailService appUserVipDetailService; @ApiOperation(value = "个人中心信息", tags = {"小程序-个人中心"}) @GetMapping(value = "/user/info") @@ -521,12 +677,20 @@ TAppUser byId = appUserService.getById(userId); AppUserInfoDto appUserInfoDto = new AppUserInfoDto(); TVip data = vipClient.getVipInfoByType(2).getData(); - appUserInfoDto.setMinPrice(data.getMonthlyCard()); + if(null != data){ + appUserInfoDto.setMinPrice(data.getMonthlyCard()); + } //判断会员 if (byId.getVipEndTime()==null||byId.getVipEndTime().isBefore(LocalDateTime.now())){ appUserInfoDto.setIsVip(0); }else { + TAppUserVipDetail one = appUserVipDetailService.getOne(new LambdaQueryWrapper<TAppUserVipDetail>() + .eq(TAppUserVipDetail::getAppUserId, userId) + .eq(TAppUserVipDetail::getVipId, byId.getVipId()) + .last(" and now() between start_time and end_time")); + Long count = appCouponService.lambdaQuery().eq(TAppCoupon::getDetailId, one.getId()).count(); + appUserInfoDto.setVipCouponNum(count); appUserInfoDto.setIsVip(1); appUserInfoDto.setVipExpireTime(byId.getVipEndTime()); } @@ -534,7 +698,7 @@ Long count = signService.lambdaQuery().eq(TAppUserSign::getAppUserId,userId).eq(TAppUserSign::getSignDay, LocalDate.now()).count(); appUserInfoDto.setIsSign(count>0?1:0); //获取当前拥有的优惠卷数量 - Long coupons = appCouponService.lambdaQuery().eq(TAppCoupon::getAppUserId, userId).eq(TAppCoupon::getStatus, 1).count(); + Long coupons = appCouponService.lambdaQuery().eq(TAppCoupon::getAppUserId, userId).ge(TAppCoupon::getEndTime, LocalDateTime.now()).eq(TAppCoupon::getStatus, 1).count(); appUserInfoDto.setCouponNum(Math.toIntExact(coupons)); //当前绑定的车辆 List<TAppUserCar> list = carService.lambdaQuery().eq(TAppUserCar::getAppUserId, userId).list(); @@ -545,8 +709,17 @@ appUserInfoDto.setFirstAdd(byId.getFirstAdd()!=null?byId.getFirstAdd():0); appUserInfoDto.setPoints(byId.getPoints()==null?0:byId.getPoints()); return R.ok(appUserInfoDto); + } + @ApiOperation(value = "设置头像", tags = {"小程序-个人中心"}) + @GetMapping(value = "/user/set/avatar") + public R avatar(String url) { + Long userId = tokenService.getLoginUserApplet().getUserId(); + TAppUser byId = appUserService.getById(userId); + byId.setAvatar(url); + appUserService.updateById(byId); + return R.ok(); } @ApiOperation(value = "优惠卷列表不分页(1可使用2不可用)", tags = {"小程序-个人中心"}) @@ -563,6 +736,7 @@ InfoCouponDto infoCouponDto = new InfoCouponDto(); BeanUtils.copyProperties(coupon, infoCouponDto); infoCouponDto.setId(tAppCoupon.getId().toString()); + infoCouponDto.setCouponId(coupon.getId()); infoCouponDto.setEndTime(tAppCoupon.getEndTime()); couponDtos1.add(infoCouponDto); @@ -604,45 +778,119 @@ @ApiOperation(value = "优惠卷详情(1可使用2不可用)", tags = {"小程序-个人中心"}) - @GetMapping(value = "/user/coupon/getById") + @PostMapping(value = "/user/coupon/getById") public R<TAppCoupon> couponGetById(@RequestParam("id")Long id) { TAppCoupon appCoupon = appCouponService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!appCoupon.getAppUserId().equals(userId)){ + return R.fail("权限不足"); + } + appCoupon.setUid(id.toString()); return R.ok(appCoupon); } - - - + + + + @RequiresPermissions(value = {"/appUser/giftVip", "/appUser/gift_vip"}, logical = Logical.OR) @ApiOperation(value = "赠送会员", tags = {"用户管理-用户列表"}) @PostMapping(value = "/user/give/vip") @Log(title = "【用户列表】赠送会员", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE) public R giveVip(@RequestBody GiveVipDto giveVipDto) { String[] split = giveVipDto.getUserIds().split(","); for (String s : split) { - - - TAppUser nowUser = appUserService.getById(s); - - int plusDay = 0; - if (giveVipDto.getType() == 1) { - plusDay = 1; - } else if (giveVipDto.getType() == 2) { - plusDay = 3; - } else if (giveVipDto.getType() == 3) { - plusDay = 12; - } - //增加vipDetail - giveVipUtil.sendVip(nowUser, giveVipDto.getVipId(),plusDay); - appUserService.updateById(nowUser); + TAppUser nowUser = appUserService.getById(s); + int plusDay = 0; + if (giveVipDto.getType() == 1) { + plusDay = 1; + } else if (giveVipDto.getType() == 2) { + plusDay = 3; + } else if (giveVipDto.getType() == 3) { + plusDay = 12; + } + BigDecimal bigDecimal = new BigDecimal("0"); + TVip info = vipClient.getInfo1(giveVipDto.getVipId()).getData(); + switch (giveVipDto.getType()){ + case 1: + bigDecimal = bigDecimal.add(info.getMonthlyCard()==null?new BigDecimal(0):info.getMonthlyCard()); + break; + case 2: + bigDecimal = bigDecimal.add(info.getSeasonCard()==null?new BigDecimal(0):info.getSeasonCard()); + break; + case 3: + bigDecimal = bigDecimal.add(info.getAnnualCard()==null?new BigDecimal(0):info.getAnnualCard()); + break; + } + //增加vipDetail + giveVipUtil.sendVip(nowUser, giveVipDto.getVipId(),plusDay,giveVipDto.getType()); + appUserService.updateById(nowUser); + // 新增后台赠送记录 + TGrantVip tGrantVip = new TGrantVip(); + tGrantVip.setCode(OrderCodeUtil.getOrderCode("ZS")); + tGrantVip.setAppUserId(nowUser.getId()); + tGrantVip.setVipId(giveVipDto.getVipId()); + tGrantVip.setOrderAmount(bigDecimal); + tGrantVip.setCreateTime(LocalDateTime.now()); + tGrantVip.setAppUserId(nowUser.getId()); + orderClient.managementGiveVip(tGrantVip); } return R.ok(); } + + + + @PostMapping(value = "/user/give/vip1") + public R giveVip1(@RequestBody GiveVipDto giveVipDto) { + String[] split = giveVipDto.getUserIds().split(","); + for (String s : split) { + TAppUser nowUser = appUserService.getById(s); + int plusDay = 0; + if (giveVipDto.getType() == 1) { + plusDay = 1; + } else if (giveVipDto.getType() == 2) { + plusDay = 3; + } else if (giveVipDto.getType() == 3) { + plusDay = 12; + } + BigDecimal bigDecimal = new BigDecimal("0"); + TVip info = vipClient.getInfo1(giveVipDto.getVipId()).getData(); + switch (giveVipDto.getType()){ + case 1: + bigDecimal = bigDecimal.add(info.getMonthlyCard()==null?new BigDecimal(0):info.getMonthlyCard()); + break; + case 2: + bigDecimal = bigDecimal.add(info.getSeasonCard()==null?new BigDecimal(0):info.getSeasonCard()); + break; + case 3: + bigDecimal = bigDecimal.add(info.getAnnualCard()==null?new BigDecimal(0):info.getAnnualCard()); + break; + } + //增加vipDetail + giveVipUtil.sendVip(nowUser, giveVipDto.getVipId(),plusDay,giveVipDto.getType()); + appUserService.updateById(nowUser); + // 新增后台赠送记录 + TGrantVip tGrantVip = new TGrantVip(); + tGrantVip.setCode(OrderCodeUtil.getOrderCode("ZS")); + tGrantVip.setAppUserId(nowUser.getId()); + tGrantVip.setVipId(giveVipDto.getVipId()); + tGrantVip.setOrderAmount(bigDecimal); + tGrantVip.setCreateTime(LocalDateTime.now()); + tGrantVip.setAppUserId(nowUser.getId()); + orderClient.managementGiveVip(tGrantVip); + } + return R.ok(); + } + @ApiOperation(value = "已赠送列表", tags = {"小程序-个人中心-邀请好友"}) @PostMapping(value = "/user/invite/page") public R<Page<TInviteUser>> invitePage(@RequestBody BasePage basePage) { Long userId = tokenService.getLoginUserApplet().getUserId(); - Page<TInviteUser> page = inviteUserService.lambdaQuery().eq(TInviteUser::getAppUserId, userId).isNotNull(TInviteUser::getAward).orderByDesc(TInviteUser::getCreateTime).page(Page.of(basePage.getPageCurr(), basePage.getPageSize())); + for (TInviteUser record : page.getRecords()) { + TAppUser byId = appUserService.getById(record.getBeInvitedAppUserId()); + record.setAvatar(byId.getAvatar()); + record.setName(byId.getName()); + } return R.ok(page); } @@ -677,9 +925,13 @@ } // 获取当前用户信息 Long userId = tokenService.getLoginUserApplet().getUserId(); - TAppUser appUser = appUserService.getById(userId); - appUser.setPhone(dto.getPhone()); - appUserService.updateById(appUser); + TAppUser appUser = appUserService.getOne(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getPhone()).eq(TAppUser::getDelFlag, 0).eq(TAppUser::getStatus, 3)); + if (Objects.nonNull(appUser)){ + return AjaxResult.error("手机号已使用,请更换其他手机号"); + } + TAppUser appUser1 = appUserService.getById(userId); + appUser1.setPhone(dto.getPhone()); + appUserService.updateById(appUser1); return AjaxResult.success(); } @@ -767,6 +1019,17 @@ if (signService.lambdaQuery().eq(TAppUserSign::getSignDay, LocalDate.now()).eq(TAppUserSign::getAppUserId, userId).count()>0){ return R.fail("今日已签到"); } + + //判断当前生效的vipDetail + TAppUserVipDetail one = tAppUserVipDetailService.lambdaQuery().le(TAppUserVipDetail::getStartTime, LocalDateTime.now()).ge(TAppUserVipDetail::getEndTime, LocalDateTime.now()).eq(TAppUserVipDetail::getAppUserId, userId).last("limit 1").one(); + boolean doubleVip = false; + if (one!=null){ + TVip tVip = JSONObject.parseObject(one.getVipJson(), TVip.class); + if (tVip.getDoubleIntegration()!=null&&tVip.getDoubleIntegration()==1){ + doubleVip = true; + } + } + //签到业务 TAppUserSign appUserSign = new TAppUserSign(); appUserSign.setSignDay(LocalDate.now()); @@ -782,6 +1045,9 @@ Integer points = 0; Integer point = jsonObject.getInteger("num1"); points= points+point; + if (doubleVip){ + points= points+point; + } JSONArray num2 = jsonObject.getJSONArray("num2"); if (num2!=null) { //获取连续签到的规则放入map @@ -796,11 +1062,14 @@ Integer i = map.get(days); if (i!=null){ points= points+i; + if (doubleVip){ + points= points+i; + } appUserSign.setIsGift(1); signService.updateById(appUserSign); } } - pointDetailUtil.addDetail(byId.getPoints(),byId.getPoints()+points,1,userId,"每日签到","JF"); + pointDetailUtil.addDetail(byId.getPoints(),byId.getPoints()+points,1,userId,"每日签到","JF",""); byId.setPoints(byId.getPoints()+points); appUserService.updateById(byId); return R.ok(); @@ -820,6 +1089,10 @@ .eq(TAppUserSign::getAppUserId, userId) .orderByDesc(TAppUserSign::getSignDay) .list(); + for (TAppUserSign signRecord : signRecords) { + int i = signDayUtil.calculateContinuousSignDays1(signRecord.getAppUserId(), signRecord.getSignDay()); + signRecord.setContinueDays(i); + } return R.ok(signRecords); } @@ -839,19 +1112,19 @@ //积分变化记录用 - @PostMapping(value = "/user/points/change") - public R change(@RequestBody PointChangeDto points) { - TAppUser byId = appUserService.getById(points.getUserId()); - pointDetailUtil.addDetail(byId.getPoints(),byId.getPoints()+points.getPoints(),points.getType(),points.getUserId(),points.getRemark(),"JF"); - byId.setPoints(byId.getPoints()+points.getPoints()); - appUserService.updateById(byId); - return R.ok(); - } +// @PostMapping(value = "/user/points/change") +// public R change(@RequestBody PointChangeDto points) { +// TAppUser byId = appUserService.getById(points.getUserId()); +// pointDetailUtil.addDetail(byId.getPoints(),byId.getPoints()+points.getPoints(),points.getType(),points.getUserId(),points.getRemark(),"JF"); +// byId.setPoints(byId.getPoints()+points.getPoints()); +// appUserService.updateById(byId); +// return R.ok(); +// } @PostMapping(value = "/user/points/change/down") public R changeDown(@RequestBody PointChangeDto points) { TAppUser byId = appUserService.getById(points.getUserId()); - pointDetailUtil.addDetail(byId.getPoints(),byId.getPoints()-points.getPoints(),points.getType(),points.getUserId(),points.getRemark(),"JF"); + pointDetailUtil.addDetail(byId.getPoints(),byId.getPoints()-points.getPoints(),points.getType(),points.getUserId(),points.getRemark(),"JF",points.getCode()); byId.setPoints(byId.getPoints()-points.getPoints()); appUserService.updateById(byId); return R.ok(); @@ -860,11 +1133,27 @@ @ApiOperation(value = "添加编辑车辆", tags = {"小程序-个人中心-车辆"}) @PostMapping(value = "/user/car/addOrUpdate") public R carAdd(@RequestBody TAppUserCar appUserCar) { - + if(null != appUserCar.getId()){ + TAppUserCar userCar = appUserCarService.getById(appUserCar.getId()); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!userCar.getAppUserId().equals(userId)){ + return R.fail("权限不足"); + } + } LoginUserApplet loginUserApplet = tokenService.getLoginUserApplet(); Long userId = loginUserApplet.getUserId(); TAppUser byId = appUserService.getById(userId); appUserCar.setAppUserId(userId); + + //判断当前生效的vipDetail + TAppUserVipDetail one = tAppUserVipDetailService.lambdaQuery().le(TAppUserVipDetail::getStartTime, LocalDateTime.now()).ge(TAppUserVipDetail::getEndTime, LocalDateTime.now()).eq(TAppUserVipDetail::getAppUserId, userId).last("limit 1").one(); + boolean doubleVip = false; + if (one!=null){ + TVip tVip = JSONObject.parseObject(one.getVipJson(), TVip.class); + if (tVip.getDoubleIntegration()!=null&&tVip.getDoubleIntegration()==1){ + doubleVip = true; + } + } //如果是第一次添加车辆,增加积分 Long count = appUserCarService.lambdaQuery().eq(TAppUserCar::getAppUserId, userId).count(); @@ -873,33 +1162,50 @@ if (count==0){ R<TIntegralRule> set = integralRuleClient.getSet(); TIntegralRule data = set.getData(); - JSONObject jsonObject = JSON.parseObject(data.getAddVehiclesEarnsPoints()); - - - Integer point = 0; - //增加车牌50分,必填 + if(null != data){ + JSONObject jsonObject = JSON.parseObject(data.getAddVehiclesEarnsPoints()); + Integer point = 0; + //增加车牌50分,必填 point = point+jsonObject.getInteger("num1"); - //增加车型分 + if (doubleVip){ + point = point+jsonObject.getInteger("num1"); + } + //增加车型分 if (StringUtils.isNotEmpty(appUserCar.getVehicleModel())){ point = point+jsonObject.getInteger("num2"); + if (doubleVip){ + point = point+jsonObject.getInteger("num2"); + } } - //增加车辆用途分 + //增加车辆用途分 if (StringUtils.isNotEmpty(appUserCar.getVehicleUse())){ point = point+jsonObject.getInteger("num3"); + if (doubleVip){ + point = point+jsonObject.getInteger("num3"); + } } - //增加续航分 + //增加续航分 if (StringUtils.isNotEmpty(appUserCar.getEndurance())){ point = point+jsonObject.getInteger("num4"); + if (doubleVip){ + point = point+jsonObject.getInteger("num4"); + } } - - //增加积分记录 - pointDetailUtil.addDetail(byId.getPoints(),byId.getPoints()+point,5,userId,appUserCar.getLicensePlate(),""); - byId.setPoints(byId.getPoints()+point); + + //增加积分记录 + pointDetailUtil.addDetail(byId.getPoints(),byId.getPoints()+point,5,userId,appUserCar.getLicensePlate(),"",""); + byId.setPoints(byId.getPoints()+point); + } byId.setFirstAdd(1); - appUserService.updateById(byId); - - } + CarNumDto carNumDto = CarUtil.carNum(appUserCar.getLicensePlate()); + if (carNumDto==null){ + return R.fail("请输入正确的车牌"); + } + + byId.setCityCode(carNumDto.getAreaCode()); + byId.setProvinceCode(carNumDto.getAreaCode().substring(0,2)+"0000"); + appUserService.updateById(byId); // appUserCarService.saveOrUpdate(appUserCar); @@ -909,6 +1215,11 @@ @ApiOperation(value = "添加编辑车辆", tags = {"小程序-个人中心-车辆"}) @GetMapping(value = "/user/car/delete") public R carDelete(String id) { + TAppUserCar appUserCar = appUserCarService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!appUserCar.getAppUserId().equals(userId)){ + return R.fail("权限不足"); + } boolean b = appUserCarService.removeById(id); return R.ok(); } @@ -916,6 +1227,10 @@ @GetMapping(value = "/user/car/detail") public R<TAppUserCar> carDetail(String id) { TAppUserCar byId = appUserCarService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!byId.getAppUserId().equals(userId)){ + return R.fail("权限不足"); + } return R.ok(byId); } @@ -925,6 +1240,17 @@ String brand = CarBrandUtil.getBrand(); JSONObject jsonObject = JSON.parseObject(brand); JSONArray data = jsonObject.getJSONArray("data"); + JSONArray data1 = new JSONArray(); + if (name!=null) { + for (int i = 0; i < data.size(); i++) { + JSONObject brand1 = data.getJSONObject(i); + String o = (String) brand1.get("name"); + if (o.contains(name)) { + data1.add(brand1); + } + } + return R.ok(data1); + } return R.ok(data); } @@ -934,6 +1260,10 @@ public R getModel(String id) throws Exception { String modelById = CarBrandUtil.getModelById(id); JSONObject jsonObject = JSON.parseObject(modelById); + Integer code = jsonObject.getInteger("code"); + if (code==701){ + return R.fail("当前品牌暂无分类"); + } JSONArray data = jsonObject.getJSONArray("data"); JSONArray backList = new JSONArray(); for (Object datum : data) { @@ -969,5 +1299,59 @@ return R.ok(jsonObject.getJSONObject("data")); } + + + + + @PostMapping(value = "/user/editAppUserInfo") + @ApiOperation(value = "修改个人信息", tags = {"小程序-个人中心"}) + public AjaxResult editAppUserInfo(@RequestBody TAppUser appUser){ + Long userId = tokenService.getLoginUserApplet().getUserId(); + appUser.setId(userId); + appUserService.updateById(appUser); + return AjaxResult.success(); + } + + @PostMapping("/sendMessage") + public R<String> sendMessage(@RequestBody SendMessageDTO sendMessageDTO){ + switch (sendMessageDTO.getType()){ + case 1: + String reqStr1 = MsgUtil.codeMsg(sendMessageDTO.getPhone(), sendMessageDTO.getCode()); + String result1 = HttpUtils.post(MsgConstants.SEND_URL, reqStr1); + return R.ok(result1); + case 2: + String reqStr2 = MsgUtil.applyCodeMsg(sendMessageDTO.getPhone(), sendMessageDTO.getCode()); + String result2 = HttpUtils.post(MsgConstants.SEND_URL, reqStr2); + return R.ok(result2); + default: + String reqStr3 = MsgUtil.faultMsg(sendMessageDTO.getPhone(), sendMessageDTO.getSite(), sendMessageDTO.getChargeGun()); + String result3 = HttpUtils.post(MsgConstants.SEND_URL, reqStr3); + return R.ok(result3); + } + } + + + @PostMapping(value = "/user/logOut") + @ApiOperation(value = "退出登录", tags = {"小程序-个人中心"}) + public AjaxResult logOut(){ + String token = tokenService.getLoginUserApplet().getToken(); + redisService.deleteObject("login_tokens:" + token); + return AjaxResult.success(); + } + + + + @PostMapping("/refresh") + @ApiOperation(value = "刷新token过期时间", tags = {"小程序-个人中心"}) + public R<?> refresh(HttpServletRequest request) { + LoginUserApplet loginUser = tokenService.getLoginUserAppletToken(request); + if (StringUtils.isNotNull(loginUser)) { + // 刷新令牌有效期 + tokenService.refreshToken1(loginUser); + return R.ok(); + } + return R.ok(); + } + } -- Gitblit v1.7.1