ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.account.api.dto; import com.ruoyi.account.api.model.TAppUserCar; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; import java.util.List; @Data public class AppUserInfoDto { @ApiModelProperty("1是0否") private Integer isVip; @ApiModelProperty("vip结束时间") private LocalDateTime vipExpireTime; @ApiModelProperty("当天是否签到") private Integer isSign; @ApiModelProperty("当前积分") private Integer points; @ApiModelProperty("当前优惠卷数量") private Integer couponNum; @ApiModelProperty("当前绑定的车辆") private List<TAppUserCar> userCars; } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
New file @@ -0,0 +1,35 @@ package com.ruoyi.account.api.dto; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class InfoCouponDto { @ApiModelProperty(value = "优惠券名称") @TableField("name") private String name; @ApiModelProperty(value = "优惠方式(1=满减,2=抵扣)") @TableField("preferential_mode") private Integer preferentialMode; @ApiModelProperty(value = "优惠金额") @TableField("discount_amount") private BigDecimal discountAmount; @ApiModelProperty(value = "满减条件为0时无条件") @TableField("meet_the_conditions") private BigDecimal meetTheConditions; @ApiModelProperty(value = "折扣") @TableField("discount") private BigDecimal discount; @ApiModelProperty(value = "结束时间") @TableField("end_time") private LocalDateTime endTime; @ApiModelProperty(value = "开始时间") @TableField("start_time") private LocalDateTime startTime; } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/SendCouponDto.java
New file @@ -0,0 +1,9 @@ package com.ruoyi.account.api.dto; import lombok.Data; @Data public class SendCouponDto { private Integer id; private Integer number; } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java
@@ -45,6 +45,9 @@ @ApiModelProperty(value = "结束时间") @TableField("end_time") private LocalDateTime endTime; @ApiModelProperty(value = "开始时间") @TableField("start_time") private LocalDateTime startTime; @ApiModelProperty(value = "获得方式(1=积分兑换,2=现金购买)") @TableField("ways_to_obtain") @@ -77,6 +80,10 @@ @TableField("orderId") private Long orderId; @ApiModelProperty(value = "当前领取优惠卷的json记录") @TableField("coupon_json") private String couponJson; } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
@@ -9,6 +9,7 @@ import lombok.EqualsAndHashCode; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -38,6 +39,16 @@ @TableField("charge_num") private Integer chargeNum; @ApiModelProperty(value = "购买时折扣金额") @TableField("discount_money") private BigDecimal discountMoney; @ApiModelProperty(value = "该会员记录应赠送的充电次数") @TableField("send_charge_num") private Integer sendChargeNum; @ApiModelProperty(value = "会员id") @TableField("vip_id") private Integer vipId; @@ -53,5 +64,14 @@ @TableField("create_time") private LocalDateTime createTime; @ApiModelProperty(value = "已赠送的月份") @TableField("send_month") private Integer sendMonth; @ApiModelProperty(value = "要赠送的优惠卷") @TableField("coupon_ids") private String couponIds; } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
@@ -2,6 +2,7 @@ import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.vo.SiteInfoVO; import com.ruoyi.common.core.domain.R; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,6 +36,11 @@ public R<BigDecimal> getServiceMoney(String param) { return R.fail("根据会员折扣、预付金额 计算服务费失败:"+throwable.getMessage()); } @Override public R<SiteInfoVO> getSiteInfoByNumber(String number) { return R.fail("通过桩编号获取电站信息失败:"+throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java
@@ -2,6 +2,7 @@ import com.ruoyi.chargingPile.api.factory.ChargingPileFallbackFactory; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.vo.SiteInfoVO; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import io.swagger.annotations.ApiOperation; @@ -24,12 +25,16 @@ */ @ApiOperation(value = "管理后台-通过站点id获取充电桩列表 不分页") @PostMapping(value = "/t-charging-pile/getChargingPileBySiteId") public R<List<TChargingPile>> getChargingPileBySiteId(@RequestParam("siteId") Integer siteId); R<List<TChargingPile>> getChargingPileBySiteId(@RequestParam("siteId") Integer siteId); /** * 小程序远程调用 根据会员折扣、预付金额 计算服务费 * @return */ @PostMapping(value = "/getServiceMoney") public R<BigDecimal> getServiceMoney(@RequestParam("param") String param); @PostMapping(value = "/t-accounting-strategy/getServiceMoney") R<BigDecimal> getServiceMoney(@RequestParam("param") String param); @PostMapping("/site/getSiteInfoByNumber") @ApiOperation(value = "扫一扫后通过桩编号获取电站信息", tags = {"小程序-扫一扫"}) R<SiteInfoVO> getSiteInfoByNumber(@RequestParam("number") String number); } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteInfoVO.java
@@ -20,4 +20,13 @@ private BigDecimal vipElectrovalence; @ApiModelProperty(value = "超时占位费说明") private String spaceChargeExplain; @ApiModelProperty(value = "上次选择车辆logo") private String carLogo; @ApiModelProperty(value = "上次选择车辆车牌号") private String licensePlate; @ApiModelProperty(value = "上次选择车辆品牌") private String vehicleBrand; @ApiModelProperty(value = "上次选择车辆id") private Long id; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -44,6 +44,11 @@ public R<TChargingOrder> getOrderDetailByGunId(Integer chargingGunId) { return R.fail("根据充电枪获取正在充电的订单:" + throwable.getMessage()); } @Override public R<Long> getCar() { return R.fail("获取用户最近使用车辆充电的车辆id:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -39,4 +39,11 @@ */ @PostMapping(value = "/t-charging-order/getOrderDetailByGunId") R<TChargingOrder> getOrderDetailByGunId(@RequestParam("chargingGunId") Integer chargingGunId); /** * 获取用户最近使用车辆充电的车辆id * @return */ @GetMapping(value = "/t-charging-order/getCar") public R<Long> getCar(); } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
@@ -7,6 +7,7 @@ import com.ruoyi.order.api.query.TActivityStatisticsQuery; import com.ruoyi.order.api.vo.TActivityVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -36,4 +37,5 @@ */ @PostMapping(value = "/t-exchange-order/activityStatistics") public R<TActivityVO> activityStatistics(@RequestBody TActivityStatisticsQuery dto); } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/THtml.java
@@ -24,7 +24,7 @@ @EqualsAndHashCode(callSuper = false) @TableName("t_html") @ApiModel(value="THtml对象", description="") public class THtml extends BasePojo { public class THtml { private static final long serialVersionUID = 1L; ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/NoticeQueryDto.java
New file @@ -0,0 +1,12 @@ package com.ruoyi.other.api.dto; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class NoticeQueryDto extends BasePage { private String content; @ApiModelProperty("0未开始1已开始2已结束") private Integer status; } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipCouponDto.java
New file @@ -0,0 +1,10 @@ package com.ruoyi.other.api.dto; import com.ruoyi.other.api.domain.TCoupon; import lombok.Data; @Data public class VipCouponDto { private TCoupon tCoupon; private Integer num; } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipInfoDto.java
New file @@ -0,0 +1,35 @@ package com.ruoyi.other.api.dto; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.License; import lombok.Data; import java.math.BigDecimal; import java.util.List; @Data public class VipInfoDto { @ApiModelProperty("月卡价格") private BigDecimal monthlyCard; @ApiModelProperty("季卡价格") private BigDecimal seasonCard; @ApiModelProperty("年卡价格") private BigDecimal annualCard; @ApiModelProperty("最高抵扣价格") private BigDecimal maximumDeduction; @ApiModelProperty("抵扣次数") private Integer discountTimes; @ApiModelProperty(value = "双倍积分开关(0=否,1=是)") private Integer doubleIntegration; @ApiModelProperty(value = "商城专享价开关(0=否,1=是)") private Integer mallExclusivePrice; @ApiModelProperty(value = "可赠送的优惠卷列表") private List<VipCouponDto> vipCouponDtos; @ApiModelProperty(value = "最高总折扣") private BigDecimal totalDiscount; } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java
@@ -6,6 +6,7 @@ import com.ruoyi.account.api.vo.CouponListVOVO; import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.TCompany; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TUserTag; import com.ruoyi.other.api.feignClient.OtherClient; import org.slf4j.Logger; @@ -85,6 +86,11 @@ public R<List<CouponListVOVO>> getCouponInfoByCouponIds(List<CouponListVOVO> list) { return R.fail("我的优惠券列表获取信息:"+throwable.getMessage()); } @Override public R<TCoupon> getCouponById(Integer id) { return R.fail("查询优惠卷:"+throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java
@@ -1,6 +1,7 @@ package com.ruoyi.other.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.VipClient; import org.slf4j.Logger; @@ -28,6 +29,10 @@ return R.fail("获取最高抵扣、最低起步价,最高折扣的会员失败:" + throwable.getMessage()); } @Override public R<TVip> getInfo(Integer type) { return null; } @Override public R<TVip> getInfo1(Integer id) { ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
@@ -7,6 +7,7 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.TCompany; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TUserTag; import com.ruoyi.other.api.factory.OtherFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; @@ -64,6 +65,10 @@ R<List<CouponListVOVO>> getCouponInfoByCouponIds(@RequestBody List<CouponListVOVO> list); @PostMapping(value = "/t-coupon/getCouponById") R<TCoupon> getCouponById(@RequestParam Integer id); ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java
@@ -2,6 +2,7 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.factory.VipFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; @@ -31,4 +32,8 @@ */ @PostMapping("/vip/getInfo1") public R<TVip> getInfo1(@RequestParam("id") Integer id); @PostMapping(value = "/vip/getInfo") R<TVip> getInfo(@RequestParam("id") Integer id); } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
@@ -12,23 +12,24 @@ import com.ruoyi.account.api.vo.ExchangeRecordVO; import com.ruoyi.account.service.TAppCouponService; import com.ruoyi.account.service.TAppUserCarService; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.vo.SiteInfoVO; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.feignClient.OtherClient; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; /** @@ -49,6 +50,40 @@ private TAppUserCarService appUserCarService; @Autowired private TokenService tokenService; @Autowired private ChargingPileClient chargingPileClient; @Autowired private ChargingOrderClient chargingOrderClient; /** * 查询用户可用优惠券数量 * @return */ @ApiOperation(value = "通过桩编号获取电站详情", tags = {"小程序-扫一扫"}) @GetMapping(value = "/scan/siteInfo") public AjaxResult<SiteInfoVO> siteInfo(String number) { SiteInfoVO data = chargingPileClient.getSiteInfoByNumber(number).getData(); List<TAppUserCar> cars = appUserCarService.list(new QueryWrapper<TAppUserCar>() .eq("app_user_id",tokenService.getLoginUserApplet().getUserId()) .orderByDesc("create_time")); Long data1 = chargingOrderClient.getCar().getData(); if (!cars.isEmpty()){ if (data1 == -1){ // 没有充电订单 展示最新添加的车辆 data.setLicensePlate(cars.get(0).getLicensePlate()); data.setVehicleBrand(cars.get(0).getVehicleBrand()); data.setId(cars.get(0).getId()); }else{ for (TAppUserCar car : cars) { if (car.getId().equals(data1)){ data.setLicensePlate(car.getLicensePlate()); data.setVehicleBrand(car.getVehicleBrand()); data.setId(car.getId()); } } } } return AjaxResult.ok(data); } /** * 查询用户可用优惠券数量 * @param dto @@ -61,16 +96,15 @@ return AjaxResult.ok(res); } /** * 选择车辆列表 * 选择车辆列表 远程调用 * @return */ @ApiOperation(value = "选择车辆列表", tags = {"小程序-扫一扫"}) @PostMapping(value = "/scan/carList") public AjaxResult<List<TAppUserCar>> carList() { // todo 用户id public R<List<TAppUserCar>> carList() { List<TAppUserCar> appUserId = appUserCarService.list(new QueryWrapper<TAppUserCar>() .eq("app_user_id",tokenService.getLoginUserApplet().getUserId() )); return AjaxResult.ok(appUserId); .eq("app_user_id",tokenService.getLoginUserApplet().getUserId())); return R.ok(appUserId); } /** ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -1,6 +1,7 @@ package com.ruoyi.account.controller; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; @@ -14,6 +15,7 @@ import com.ruoyi.account.wx.body.resq.Code2SessionResqBody; import com.ruoyi.account.wx.model.WeixinProperties; import com.ruoyi.account.wx.tools.WxAppletTools; import com.ruoyi.account.util.GiveVipUtil; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.web.domain.AjaxResult; @@ -27,6 +29,7 @@ import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TExchangeOrder; import com.ruoyi.other.api.domain.TCompany; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TUserTag; import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.system.api.domain.SysRole; @@ -34,13 +37,16 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.formula.functions.T; import lombok.extern.slf4j.Slf4j; import org.aspectj.weaver.loadtime.Aj; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -78,12 +84,70 @@ @Resource private ExchangeOrderClient exchangeOrderClient; @Autowired private TokenService tokenService; @Autowired private RedisService redisService; @Autowired private WeixinProperties wxConfig; @Autowired private RestTemplate wxRestTemplate; @Resource private TAppUserSignService signService; @Resource private TAppCouponService appCouponService; @Resource private TAppUserCarService carService; @ApiOperation(value = "查询当前用户是否为会员 0否1是", tags = {"小程序--查询当前用户是否为会员"}) @PostMapping(value = "/getUserInfo") public AjaxResult<Integer> getUserInfo() { TAppUser byId = appUserService.getById(tokenService.getLoginUserApplet().getUserId()); if (byId.getVipEndTime() == null){ return AjaxResult.ok(0); }else if (byId.getVipEndTime().isAfter(LocalDateTime.now())){ return AjaxResult.ok(1); }else{ return AjaxResult.ok(0); } } @ApiOperation(value = "通过code获得openid, 1 --->对应的appid:wx4c405fa42539fc21 2---->对应的appid:wx02d9f6c92e6d3c86") @GetMapping("openId-by-jscode2session/{code}") public AjaxResult<Map<String, Object>> jscode2session(@PathVariable String code) { log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", code); WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig); Code2SessionRespBody body = appletTools.getOpenIdByJscode2session(new Code2SessionResqBody().build(code)); String openid = body.getOpenid(); String sessionKey = body.getSessionKey(); TAppUser appUser = appUserService.getOne(Wrappers.lambdaQuery(TAppUser.class).eq(TAppUser::getWxOpenid, openid).last("limit 1")); if (Objects.isNull(appUser)) { appUser = new TAppUser(); appUser.setWxOpenid(openid); appUserService.save(appUser); } // 提前对sessionKey进行删除 log.info("换取sessionKey:{}", sessionKey); // 将sessionKey进行存储,后续获取信息需要 redisService.setCacheObject(openid, sessionKey); LoginUserApplet loginUserApplet = new LoginUserApplet(); if(ObjectUtils.isNotNull(appUser)){ loginUserApplet.setUserId(appUser.getId()); } HashMap<String, Object> tokenInfos = new HashMap<>(); tokenInfos.put("token",tokenService.createTokenApplet(loginUserApplet)); tokenInfos.put("info",loginUserApplet); return AjaxResult.ok(tokenInfos); } @ApiOperation(value = "管理后台-根据手机号查询用户ids", tags = {"管理后台-活动费用统计"}) @PostMapping(value = "/user/getUserIdsByPhone") public R<List<Long>> getUserIdsByPhone(@RequestParam("phone") String phone) { return R.ok(appUserService.list(new QueryWrapper<TAppUser>().like("phone",phone)).stream().map(TAppUser::getId).collect(Collectors.toList())); } @Resource private GiveVipUtil giveVipUtil; @ApiOperation(value = "单位管理列表", tags = {"用户管理-单位管理"}) @PostMapping(value = "/unit/page") public R<Page<TCompany>> unitPage(@RequestBody UnitListQueryDto unitListQueryDto) { @@ -96,6 +160,20 @@ } return R.ok(data); } @ApiOperation(value = "单位下拉框", tags = {"用户管理-单位管理"}) @PostMapping(value = "/unit/select") public R<List<TCompany>> unitSelect() { UnitListQueryDto unitListQueryDto = new UnitListQueryDto(); unitListQueryDto.setPageCurr(1); unitListQueryDto.setPageSize(9999); //拿到单位列表 R<Page<TCompany>> pageR = otherClient.queryUnitPage(unitListQueryDto); return R.ok(pageR.getData().getRecords()); } @ApiOperation(value = "单位管理添加或编辑", tags = {"用户管理-单位管理"}) @PostMapping(value = "/unit/addOrUpdate") @@ -267,7 +345,7 @@ return R.ok(userDetailDto); } @ApiOperation(value = "用户详情积分明细", tags = {"用户管理-用户列表"}) @ApiOperation(value = "用户详情积分明细", tags = {"后台-用户管理-用户列表","小程序-个人中心"}) @PostMapping(value = "/user/points/page") public R<Page<TAppUserIntegralChange>> pointsDetail(@RequestBody PointsQueryDto pointsQueryDto) { List<Integer> types = new ArrayList<>(); @@ -303,7 +381,7 @@ } @ApiOperation(value = "用户详情积分明细", tags = {"用户管理-用户列表"}) @ApiOperation(value = "冻结解冻用户", tags = {"后台-用户管理-用户列表"}) @PostMapping(value = "/user/status/change") public R pointsDetail(@RequestBody UserChangeDto userChangeDto) { TAppUser appUser = appUserService.getById(userChangeDto.getUserId()); @@ -312,37 +390,76 @@ return R.ok(); } @ApiOperation(value = "个人中心信息", tags = {"小程序-个人中心"}) @PostMapping(value = "/user/info") public R<AppUserInfoDto> info() { Long userId = 1L; TAppUser byId = appUserService.getById(userId); AppUserInfoDto appUserInfoDto = new AppUserInfoDto(); //判断会员 if (byId.getVipEndTime()==null||byId.getVipEndTime().isBefore(LocalDateTime.now())){ appUserInfoDto.setIsVip(0); }else { appUserInfoDto.setIsVip(1); appUserInfoDto.setVipExpireTime(byId.getVipEndTime()); } //判断当天是否签到 Long count = signService.lambdaQuery().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(); appUserInfoDto.setCouponNum(Math.toIntExact(coupons)); //当前绑定的车辆 List<TAppUserCar> list = carService.lambdaQuery().eq(TAppUserCar::getAppUserId, userId).list(); appUserInfoDto.setUserCars(list); return R.ok(appUserInfoDto); } @ApiOperation(value = "优惠卷列表不分页(1可使用2不可用)", tags = {"小程序-个人中心"}) @PostMapping(value = "/user/coupon") public R<List<InfoCouponDto>> userCoupon(@RequestParam("type") Integer type) { LocalDateTime now = LocalDateTime.now(); List<InfoCouponDto> couponDtos = new ArrayList<>(); List<TAppCoupon> list = appCouponService.lambdaQuery().le(TAppCoupon::getStartTime, now).ge(TAppCoupon::getEndTime, now).eq(TAppCoupon::getStatus, type).list(); for (TAppCoupon tAppCoupon : list) { TCoupon coupon = JSON.toJavaObject(JSON.parseObject(tAppCoupon.getCouponJson()), TCoupon.class); InfoCouponDto infoCouponDto = new InfoCouponDto(); BeanUtils.copyProperties(coupon,infoCouponDto); couponDtos.add(infoCouponDto); } return R.ok(couponDtos); } @ApiOperation(value = "赠送会员", tags = {"用户管理-用户列表"}) @PostMapping(value = "/user/give/vip") public R giveVip(@RequestBody GiveVipDto giveVipDto) { TAppUser nowUser = appUserService.getById(giveVipDto.getUserId()); //如果vipEndTime为空或已过期,直接增加 if (nowUser.getVipEndTime()==null||nowUser.getVipEndTime().isBefore(LocalDateTime.now())) { if (giveVipDto.getType() == 1) { nowUser.setVipEndTime(LocalDateTime.now().plusDays(31)); //直接增加vipDetail } else if (giveVipDto.getType() == 2) { nowUser.setVipEndTime(LocalDateTime.now().plusDays(93)); } else if (giveVipDto.getType() == 3) { nowUser.setVipEndTime(LocalDateTime.now().plusDays(365)); } //直接赠送优惠卷 }else { if (giveVipDto.getType() == 1) { nowUser.setVipEndTime(nowUser.getVipEndTime().plusDays(31)); //如果有这个类型的vip,累加,没有的话,从entTime新增 } else if (giveVipDto.getType() == 2) { nowUser.setVipEndTime(nowUser.getVipEndTime().plusDays(93)); } else if (giveVipDto.getType() == 3) { nowUser.setVipEndTime(nowUser.getVipEndTime().plusDays(365)); } 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); //执行一次赠送优惠卷的定时任务 return R.ok(); } @@ -357,7 +474,7 @@ return R.ok(appUserService.list(Wrappers.<TAppUser>lambdaQuery().in(TAppUser::getId,appUserIds))); } /** * 根据用户id获取用户 * @param id @@ -368,8 +485,8 @@ TAppUser appUser = appUserService.getById(id); return R.ok(appUser); } /** * 修改用户信息 * @param appUser ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java
@@ -13,4 +13,5 @@ */ public interface TAppUserVipDetailService extends IService<TAppUserVipDetail> { void giveVipCoupun(Long appUserId, Integer vipId,Long recordId,Integer monthNum); } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java
@@ -241,8 +241,8 @@ break; } } // 通过集合的money字段 将money从大到小排序 data.sort(Comparator.comparing(CouponListVOVO::getMoney).reversed()); // 通过集合的money、isUse字段 将money、isUse从大到小排序 将不可用的排在最后 data.sort(Comparator.comparing(CouponListVOVO::getMoney).reversed().thenComparing(CouponListVOVO::getIsUse)); pageInfo.setRecords(data); return pageInfo; } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java
@@ -1,11 +1,27 @@ package com.ruoyi.account.service.impl; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.dto.SendCouponDto; import com.ruoyi.account.api.feignClient.AppCouponClient; import com.ruoyi.account.api.model.TAppCoupon; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.mapper.TAppUserVipDetailMapper; import com.ruoyi.account.service.TAppCouponService; import com.ruoyi.account.service.TAppUserVipDetailService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.other.api.feignClient.VipClient; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; /** * <p> @@ -17,5 +33,49 @@ */ @Service public class TAppUserVipDetailServiceImpl extends ServiceImpl<TAppUserVipDetailMapper, TAppUserVipDetail> implements TAppUserVipDetailService { @Resource private VipClient vipClient; @Resource private OtherClient otherClient; @Resource private TAppCouponService appCouponService; @Resource private TAppUserVipDetailService tAppUserVipDetailService; @Override public void giveVipCoupun(Long appUserId, Integer vipId,Long recordId,Integer monthNum) { //如果不包含,则更新sendNum,并且赠送优惠卷 TAppUserVipDetail byId = tAppUserVipDetailService.getById(recordId); if (byId.getStartTime().plusMonths(byId.getSendMonth()).toLocalDate().compareTo(LocalDate.now())==0&&LocalDate.now().isBefore(byId.getEndTime().toLocalDate())){ byId.setSendMonth(byId.getSendMonth()+1); //给这个用户发放对应vip的优惠卷以及充电次数加满 List<SendCouponDto> javaList = JSON.parseArray(byId.getCouponIds()).toJavaList(SendCouponDto.class); for (SendCouponDto sendCouponDto : javaList) { Integer number = sendCouponDto.getNumber(); for (Integer i = 0; i < number; i++) { R<TCoupon> couponById = otherClient.getCouponById(sendCouponDto.getId()); TCoupon coupon = couponById.getData(); //将该优惠卷添加到用户优惠卷中 TAppCoupon tAppCoupon = new TAppCoupon(); tAppCoupon.setAppUserId(appUserId); tAppCoupon.setCouponId(sendCouponDto.getId()); if (coupon.getValidityPeriodMode() == 1) { tAppCoupon.setEndTime(coupon.getEndTime()); } else { tAppCoupon.setEndTime(LocalDateTime.now().plusDays(coupon.getDays())); } tAppCoupon.setWaysToObtain(4); tAppCoupon.setStatus(1); tAppCoupon.setCouponJson(JSON.toJSONString(coupon)); appCouponService.save(tAppCoupon); } } } byId.setChargeNum(byId.getSendChargeNum()); tAppUserVipDetailService.updateById(byId); } } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java
New file @@ -0,0 +1,54 @@ package com.ruoyi.account.task; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.service.TAppUserVipDetailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.time.LocalDate; import java.util.List; /** * 定时任务工具类 */ @Component public class TaskUtil { @Resource private TAppUserVipDetailService tAppUserVipDetailService; /** * 每隔一分钟去处理的定时任务 */ @Scheduled(fixedRate = 1000 * 60) public void sendVipCoupon(){ try { //首先获取当前的月份,用int类型标识 LocalDate currentDate = LocalDate.now(); int monthNum = currentDate.getMonthValue(); //获取在当前时间内生效的vipDetail List<TAppUserVipDetail> recentDetails = tAppUserVipDetailService.lambdaQuery() .ge(TAppUserVipDetail::getStartTime, currentDate) .le(TAppUserVipDetail::getEndTime, currentDate) .orderByDesc(TAppUserVipDetail::getStartTime).list(); //判断sendNum是否包括当前月份 for (TAppUserVipDetail recentDetail : recentDetails) { //赠送优惠卷 tAppUserVipDetailService.giveVipCoupun(recentDetail.getAppUserId(), recentDetail.getVipId(),recentDetail.getId(),monthNum); } } catch (Exception e) { e.printStackTrace(); } } } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
New file @@ -0,0 +1,96 @@ package com.ruoyi.account.util; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.ruoyi.account.api.dto.SendCouponDto; import com.ruoyi.account.api.model.TAppCoupon; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.service.TAppCouponService; import com.ruoyi.account.service.TAppUserVipDetailService; import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.other.api.feignClient.VipClient; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; @Component public class GiveVipUtil { @Resource private VipClient vipClient; @Resource private TAppUserVipDetailService tAppUserVipDetailService; @Resource private OtherClient otherClient; @Resource private TAppCouponService appCouponService; public void sendVip(TAppUser nowUser,Integer vipId,Integer plusDay){ if (nowUser.getVipEndTime()==null||nowUser.getVipEndTime().isBefore(LocalDateTime.now())) { nowUser.setVipEndTime(LocalDateTime.now().plusMonths(plusDay)); //直接再detail里新增数据,因为不是续费 TAppUserVipDetail tAppUserVipDetail = new TAppUserVipDetail(); tAppUserVipDetail.setAppUserId(nowUser.getId()); tAppUserVipDetail.setStartTime(LocalDateTime.now()); tAppUserVipDetail.setEndTime(LocalDateTime.now().plusMonths(plusDay).minusDays(1)); tAppUserVipDetail.setVipId(vipId); R<TVip> info = vipClient.getInfo(vipId); TVip vip = info.getData(); List<SendCouponDto> javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class); tAppUserVipDetail.setCouponIds(vip.getCoupon()); tAppUserVipDetail.setSendChargeNum(vip.getDiscountTimes()); tAppUserVipDetail.setChargeNum(vip.getDiscountTimes()); tAppUserVipDetail.setDiscountMoney(vip.getMaximumDeduction()); tAppUserVipDetail.setSendMonth(1); tAppUserVipDetailService.save(tAppUserVipDetail); //直接赠送优惠卷 for (SendCouponDto sendCouponDto : javaList) { Integer number = sendCouponDto.getNumber(); for (Integer i = 0; i < number; i++) { R<TCoupon> couponById = otherClient.getCouponById(sendCouponDto.getId()); TCoupon coupon = couponById.getData(); //将该优惠卷添加到用户优惠卷中 TAppCoupon tAppCoupon = new TAppCoupon(); tAppCoupon.setAppUserId(nowUser.getId()); tAppCoupon.setCouponId(Integer.valueOf(sendCouponDto.getId())); if (coupon.getValidityPeriodMode() == 1) { tAppCoupon.setEndTime(coupon.getEndTime()); } else { tAppCoupon.setEndTime(LocalDateTime.now().plusDays(coupon.getDays())); } tAppCoupon.setWaysToObtain(4); tAppCoupon.setStatus(1); tAppCoupon.setCouponJson(JSON.toJSONString(coupon)); appCouponService.save(tAppCoupon); } } }else { nowUser.setVipEndTime(nowUser.getVipEndTime().plusDays(plusDay)); //获取detail里结束时间大于当前时间的数据,并将enttime延长 TAppUserVipDetail tAppUserVipDetail = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, nowUser.getId()).orderByDesc(TAppUserVipDetail::getEndTime).last("limit 1").one(); // TAppUserVipDetail newAppUser = new TAppUserVipDetail(); // newAppUser.setAppUserId(nowUser.getId()); // newAppUser.setStartTime(tAppUserVipDetail.getEndTime()); tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plusMonths(plusDay).minusDays(1)); // newAppUser.setVipId(vipId); tAppUserVipDetailService.updateById(tAppUserVipDetail); // tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plusDays(plusDay)); // tAppUserVipDetailService.updateById(tAppUserVipDetail); } } } ruoyi-service/ruoyi-chargingPile/pom.xml
@@ -15,7 +15,12 @@ </description> <dependencies> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-api-account</artifactId> <version>3.6.2</version> <scope>compile</scope> </dependency> <!-- ruoyi-modules-chargingPile-api --> <dependency> <groupId>com.ruoyi</groupId> ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -5,17 +5,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.query.GetSiteList; import com.ruoyi.chargingPile.api.query.SiteDetailQuery; import com.ruoyi.chargingPile.api.query.SiteQuery; import com.ruoyi.chargingPile.api.vo.ChargingGunCountVO; import com.ruoyi.chargingPile.api.vo.SiteDetailVO; import com.ruoyi.chargingPile.api.vo.SiteVO; import com.ruoyi.chargingPile.api.vo.TChargingPileVO; import com.ruoyi.chargingPile.api.vo.*; import com.ruoyi.chargingPile.domain.SiteMenu; import com.ruoyi.chargingPile.service.*; import com.ruoyi.common.core.domain.R; @@ -36,6 +30,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalTime; import java.util.*; /** @@ -69,18 +65,44 @@ @Autowired private TParkingLotService parkingLotService; @Autowired private TAccountingStrategyService accountingStrategyService; @Autowired private TAccountingStrategyDetailService accountingStrategyDetailService; /** * 小程序扫一扫 * @param number * @return */ @PostMapping("/getSiteInfoByNumber") @ApiOperation(value = "扫一扫后通过桩编号获取电站信息", tags = {"小程序-扫一扫"}) public R<SiteInfoVO> getSiteInfoByNumber(@RequestParam("number") String number){ SiteInfoVO siteInfoVO = new SiteInfoVO(); TChargingPile one = chargingPileService.lambdaQuery().eq(TChargingPile::getNumber, number).one(); Site byId = siteService.getById(one.getSiteId()); TAccountingStrategy byId1 = accountingStrategyService.getById(byId.getAccountingStrategyId()); List<TAccountingStrategyDetail> list = accountingStrategyDetailService.lambdaQuery().eq(TAccountingStrategyDetail::getAccountingStrategyId, byId1.getId()).list(); for (TAccountingStrategyDetail tAccountingStrategyDetail : list) { // 当前时间属于那个阶段 取哪个阶段的电价 if(LocalTime.now().isAfter(LocalTime.parse(tAccountingStrategyDetail.getStartTime())) && LocalTime.now().isBefore(LocalTime.parse(tAccountingStrategyDetail.getEndTime()))){ siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence()); siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().multiply(byId1.getDiscount()).setScale(2, BigDecimal.ROUND_HALF_UP)); } } siteInfoVO.setName(byId.getName()); siteInfoVO.setNumber(one.getNumber().toString()); siteInfoVO.setSpaceChargeExplain(byId.getSpaceChargeExplain()); return R.ok(siteInfoVO); } @ResponseBody @GetMapping("/getSiteList") @ApiOperation(value = "获取站点列表", tags = {"管理后台-站点管理"}) public AjaxResult<PageInfo<GetSiteListDTO>> getSiteList(GetSiteList siteList){ PageInfo<GetSiteListDTO> list = siteService.getSiteList(siteList); return AjaxResult.success(list); } @ResponseBody @GetMapping("/getSiteList1") @ApiOperation(value = "获取站点列表 不分页", tags = {"管理后台-活动费用统计"}) public AjaxResult<List<Site>> getSiteList1(){ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -179,8 +179,6 @@ } } return AjaxResult.ok(accountingStrategyService.pageList(query)); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -44,7 +44,7 @@ * @param * @return */ @PostMapping(value = "/getCar") @GetMapping(value = "/getCar") public R<Long> getCar() { List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>() .eq(TChargingOrder::getAppUserId, tokenService.getLoginUserApplet().getUserId()) ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
@@ -117,6 +117,11 @@ return AjaxResult.ok(tCouponService.pageList(dto)); } @PostMapping(value = "/getCouponById") public R<TCoupon> getCouponById(@RequestParam Integer id) { return R.ok(tCouponService.getById(id)); } /** * 小程序远程调用 获取优惠券信息 */ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/THtmlController.java
@@ -1,9 +1,14 @@ package com.ruoyi.other.controller; import org.springframework.web.bind.annotation.RequestMapping; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.other.api.domain.THtml; import com.ruoyi.other.api.domain.TNotice; import com.ruoyi.other.service.THtmlService; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** * <p> @@ -16,6 +21,21 @@ @RestController @RequestMapping("/t-html") public class THtmlController { @Resource private THtmlService htmlService; @ApiOperation(tags = {"后台-内容设置-协议服务"},value = "新增修改") @PostMapping(value = "/saveOrUpdate") public AjaxResult saveOrUpdate(@RequestBody THtml tHtml) { htmlService.saveOrUpdate(tHtml); return AjaxResult.success(); } @ApiOperation(tags = {"后台-内容设置-协议服务"},value = "查询") @PostMapping(value = "/selectByType/{type}") public AjaxResult selectByType(@PathVariable Integer type) { THtml one = htmlService.lambdaQuery().eq(THtml::getType, type).last("limit 1").one(); return AjaxResult.success(one); } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java
@@ -62,6 +62,9 @@ "11=开票说明") public R<String> getInfo(Integer type) { THtml g = htmlService.getOne(new QueryWrapper<THtml>().eq("type",type)); if (g == null){ return R.ok(""); } return R.ok(g.getContent()); } @GetMapping("/saveInfo") @@ -87,9 +90,6 @@ THtml tHtml = new THtml(); tHtml.setType(type); tHtml.setContent(info); tHtml.setCreateTime(LocalDateTime.now()); htmlService.save(tHtml); }else{ g.setContent(info); ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java
@@ -1,9 +1,17 @@ package com.ruoyi.other.controller; import org.springframework.web.bind.annotation.RequestMapping; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.other.api.domain.TNotice; import com.ruoyi.other.api.dto.NoticeQueryDto; import com.ruoyi.other.mapper.SysNoticeMapper; import com.ruoyi.other.service.TNoticeService; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.time.LocalDateTime; /** * <p> @@ -16,6 +24,49 @@ @RestController @RequestMapping("/t-notice") public class TNoticeController { @Resource private TNoticeService noticeService; @ApiOperation(tags = {"后台-内容设置-公告管理"},value = "新增修改") @PostMapping(value = "/saveOrUpdate") public AjaxResult saveOrUpdate(@RequestBody TNotice notice) { noticeService.saveOrUpdate(notice); return AjaxResult.success(); } @ApiOperation(tags = {"后台-内容设置-公告管理"},value = "删除") @PostMapping(value = "/deleteById/{id}") public AjaxResult deleteById(@PathVariable Integer id) { noticeService.removeById(id); return AjaxResult.success(); } @ApiOperation(tags = {"后台-内容设置-公告管理"},value = "查询") @PostMapping(value = "/pageList") public AjaxResult<Page<TNotice>> authPageList(@RequestBody NoticeQueryDto query) { if (query.getStatus()==0){ return AjaxResult.success(noticeService.lambdaQuery() .le(TNotice::getStartTime, LocalDateTime.now()) .like(query.getContent()!=null&&query.getContent()!="",TNotice::getContent,query.getContent()) .page(Page.of(query.getPageCurr(),query.getPageSize()))); }else if (query.getStatus()==1){ return AjaxResult.success(noticeService.lambdaQuery() .ge(TNotice::getStartTime, LocalDateTime.now()).le(TNotice::getEndTime,LocalDateTime.now()) .like(query.getContent()!=null&&query.getContent()!="",TNotice::getContent,query.getContent()) .page(Page.of(query.getPageCurr(),query.getPageSize()))); }else if (query.getStatus()==2){ return AjaxResult.success(noticeService.lambdaQuery() .ge(TNotice::getEndTime, LocalDateTime.now()) .like(query.getContent()!=null&&query.getContent()!="",TNotice::getContent,query.getContent()) .page(Page.of(query.getPageCurr(),query.getPageSize()))); }else{ return AjaxResult.success(noticeService.lambdaQuery() .like(query.getContent()!=null&&query.getContent()!="",TNotice::getContent,query.getContent()) .page(Page.of(query.getPageCurr(),query.getPageSize()))); } } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java
@@ -8,11 +8,7 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; /** * <p> @@ -36,12 +32,19 @@ /** * 查看系统设置 */ @ApiOperation(tags = {"小程序-系统设置"},value = "联系客服") @ApiOperation(tags = {"小程序-系统设置","后台-内容设置"},value = "联系客服,查询设置") @GetMapping(value = "/getDetailById") public AjaxResult<TSystemConfiguration> getDetailById(@RequestParam(name = "type")@ApiParam(value = "1=客服信息,2=系统设置") Integer type) { return AjaxResult.ok(systemConfigurationService.getOne(Wrappers.lambdaQuery(TSystemConfiguration.class) .eq(TSystemConfiguration::getType, type))); } @ApiOperation(tags = {"后台-内容设置"},value = "客户信息,系统内容设置") @GetMapping(value = "/save") public AjaxResult getDetailById(@RequestBody TSystemConfiguration systemConfiguration) { systemConfigurationService.saveOrUpdate(systemConfiguration); return AjaxResult.success(); } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
@@ -1,13 +1,19 @@ package com.ruoyi.other.controller; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.account.api.dto.SendCouponDto; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TIntegralRule; import com.ruoyi.other.api.domain.TUserTag; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.dto.VipCouponDto; import com.ruoyi.other.api.dto.VipInfoDto; import com.ruoyi.other.service.TCouponService; import com.ruoyi.other.service.TVipService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -16,6 +22,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -33,6 +42,8 @@ public class TVipController { @Autowired private TVipService vipService; @Resource private TCouponService couponService; @PostMapping("/saveVip") @ApiOperation(tags = {"管理后台-会员管理"},value = "会员添加") public AjaxResult saveVip(@RequestBody TVip dto) { @@ -55,6 +66,13 @@ @ApiOperation(tags = {"管理后台-会员管理"},value = "会员查看详情") public AjaxResult<TVip> getInfo(Integer id) { return AjaxResult.ok(vipService.getById(id)); } @GetMapping("/getById") @ApiOperation(value = "通过id查会员") public R<TVip> getById(Integer id) { return R.ok(vipService.getById(id)); } /** @@ -115,5 +133,47 @@ } } @ApiOperation(value = "会员信息", tags = {"小程序-个人中心"}) @PostMapping("/vipInfo") public AjaxResult vipInfo() { List<VipInfoDto> vipInfoDtos = new ArrayList<>(); List<TVip> vips = vipService.lambdaQuery().eq(TVip::getReveal, 1).list(); for (TVip vip : vips) { VipInfoDto vipInfoDto = new VipInfoDto(); vipInfoDto.setMonthlyCard(vip.getMonthlyCardReveal()==1?vip.getMonthlyCard():null); vipInfoDto.setSeasonCard(vip.getSeasonCardReveal()==1?vip.getSeasonCard():null); vipInfoDto.setAnnualCard(vip.getAnnualCardReveal()==1?vip.getAnnualCard():null); vipInfoDto.setMaximumDeduction(vip.getMaximumDeduction()); vipInfoDto.setDiscountTimes(vip.getDiscountTimes()); vipInfoDto.setDoubleIntegration(vip.getDoubleIntegration()); vipInfoDto.setMallExclusivePrice(vip.getMallExclusivePrice()); List<SendCouponDto> javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class); List<VipCouponDto> vipCouponDtos = new ArrayList<>(); if (!javaList.isEmpty()){ for (SendCouponDto sendCouponDto : javaList) { VipCouponDto vipCouponDto = new VipCouponDto(); TCoupon byId = couponService.getById(sendCouponDto.getId()); vipCouponDto.setNum(sendCouponDto.getNumber()); vipCouponDto.setTCoupon(byId); vipCouponDtos.add(vipCouponDto); } } vipInfoDto.setVipCouponDtos(vipCouponDtos); //计算总折扣 BigDecimal total = BigDecimal.ZERO; total = total.add(vip.getMaximumDeduction().multiply(BigDecimal.valueOf(vip.getDiscountTimes()))); for (VipCouponDto vipCouponDto : vipCouponDtos) { TCoupon tCoupon = vipCouponDto.getTCoupon(); total.add(tCoupon.getDiscount()); } vipInfoDto.setTotalDiscount(total); vipInfoDtos.add(vipInfoDto); } return AjaxResult.success(vipInfoDtos); } }