xuhy
2024-11-04 c0211a20f4f2d94fe1ac7657284504afa876b8a0
Merge remote-tracking branch 'origin/master'

# Conflicts:
# ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
# ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
2 文件已重命名
24个文件已修改
1个文件已添加
350 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/UpdateChargingPileStatusVo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TSettlementConfirm.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TIntegralRule.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/config/FileUploadConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/FileController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/resources/template/结算汇总.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/BaseResponse.java 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
@@ -94,9 +94,15 @@
            }
            @Override
            public R<Boolean> sensitiveWordDetection(String content, String openid) {
                return R.fail("敏感词校验失败:" + throwable.getMessage());
            }
            @Override
            public R<String> sendMessage(SendMessageDTO sendMessageDTO) {
                return R.fail("短信发送失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -96,6 +96,15 @@
    R<String> getWXToken();
    /**
     * 敏感词检测
     * @param content
     * @param openid
     * @return
     */
    @PostMapping("/wxLogin/sensitiveWordDetection")
    R<Boolean> sensitiveWordDetection (@RequestParam("content") String content, @RequestParam("openid") String openid);
    /**
     * 短信发送
     * @return
     */
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
@@ -3,6 +3,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.chargingPile.api.vo.UpdateChargingPileStatusVo;
import com.ruoyi.common.core.domain.R;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -58,7 +59,7 @@
            }
    
            @Override
            public void updateChargingPileStatus(String pile_code, String gun_code, Integer status) {
            public void updateChargingPileStatus(UpdateChargingPileStatusVo vo) {
                log.error("修改充电桩状态失败:" + throwable.getMessage());
            }
            
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java
@@ -3,14 +3,12 @@
import com.ruoyi.chargingPile.api.factory.ChargingPileFallbackFactory;
import com.ruoyi.chargingPile.api.model.TChargingPile;
import com.ruoyi.chargingPile.api.vo.SiteInfoVO;
import com.ruoyi.chargingPile.api.vo.UpdateChargingPileStatusVo;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.List;
@@ -53,9 +51,7 @@
    
    /**
     * 修改充电桩状态
     * @param code
     * @param status
     */
    @PostMapping("/t-charging-pile/updateChargingPileStatus")
    void updateChargingPileStatus(@RequestParam("pile_code") String pile_code, @RequestParam("gun_code") String gun_code, @RequestParam("status") Integer status);
    void updateChargingPileStatus(@RequestBody UpdateChargingPileStatusVo vo);
}
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java
@@ -29,7 +29,7 @@
    @PostMapping(value = "/t-parking-lot/getLotBySiteId")
    public R<TParkingLot> getLotBySiteId(@RequestParam("siteId") Integer siteId);
    @PostMapping(value = "/t-parking-lot/getRecordById")
    @GetMapping(value = "/t-parking-lot/getRecordById")
    public R<TParkingRecord> getRecordById(@RequestParam("id") Long siteId);
    @PostMapping(value = "/t-parking-lot/getRecordAmount")
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java
@@ -22,7 +22,6 @@
 * @since 2024-08-08
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("t_parking_record")
@ApiModel(value="TParkingRecord对象", description="")
public class TParkingRecord implements Serializable {
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/UpdateChargingPileStatusVo.java
New file
@@ -0,0 +1,15 @@
package com.ruoyi.chargingPile.api.vo;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2024/11/4 11:37
 */
@Data
public class UpdateChargingPileStatusVo {
    private String pile_code;
    private String gun_code;
    private Integer status;
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -31,7 +31,7 @@
    R<String> queryOrderByGunId(@PathVariable("id") String id);
    @PostMapping(value = "/t-charging-order/useOrderCount")
    R<Long> useOrderCount(@RequestParam("userId") Long userId);
    @PostMapping(value = "/t-charging-order/chargingBillListR")
    @PostMapping(value = "/chargingBill/chargingBillListR")
    R<ChargingBillVO> chargingBillListR(@RequestBody ChargingListQuery dto);
    @PostMapping(value = "/t-charging-order/detail")
    R<TChargingOrder> orderDetail(@RequestParam("orderId") Long orderId);
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TSettlementConfirm.java
@@ -34,7 +34,12 @@
    @ApiModelProperty(value = "主键")
    @TableId(value = "id")
    private Long id;
    @ApiModelProperty(value = "序号")
    @TableField(exist = false)
    private Integer xuhao;
    @ApiModelProperty(value = "月份")
    @TableField(exist = false)
    private Integer month;
    @ApiModelProperty(value = "站点id")
    @TableField("site_id")
    private Integer siteId;
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TIntegralRule.java
@@ -51,6 +51,9 @@
    @ApiModelProperty(value = "签到得积分{\"num1\":1,\"num2\":[\"1(多少天),2(多少分)\"]}")
    @TableField("sign_in_for_points")
    private String signInForPoints;
    @ApiModelProperty(value = "是否双倍")
    @TableField(exist = false)
    private Integer isDouble;
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/config/FileUploadConfig.java
File was renamed from ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/config/FileUploadConfig.java
@@ -1,4 +1,4 @@
package com.ruoyi.chargingPile.config;
package com.ruoyi.account.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/FileController.java
File was renamed from ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/FileController.java
@@ -1,6 +1,6 @@
package com.ruoyi.chargingPile.controller;
package com.ruoyi.account.controller;
import com.ruoyi.chargingPile.config.FileUploadConfig;
import com.ruoyi.account.config.FileUploadConfig;
import com.ruoyi.common.core.web.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -37,7 +37,6 @@
        }
        String TimeDir =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        String realPath = fileUploadConfig.getLocation() + TimeDir;
//        String realPath = "D:\\file\\" + TimeDir;
        File file = new File(realPath);
        // 没有目录就创建
        if (!file.exists()) {
@@ -57,7 +56,6 @@
        mf.transferTo(targetFile);
        //拼接数据
        String imgstr = fileUploadConfig.getAccessPath() + TimeDir +"/"+ filename;
//        String imgstr = TimeDir +"/"+ filename;
        return AjaxResult.success(imgstr);
    }
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
@@ -1,6 +1,7 @@
package com.ruoyi.account.controller;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.alipay.api.internal.util.codec.Base64;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -18,6 +19,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.FileUploadUtils;
import com.ruoyi.common.core.utils.HttpUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.redis.service.RedisService;
@@ -179,4 +181,43 @@
        String accessToken = appletTools.getAccessToken("");
        return R.ok(accessToken);
    }
    /**
     * 敏感词检测
     * @param content
     * @param openid
     * @return
     */
    @PostMapping("/sensitiveWordDetection")
    public R<Boolean> sensitiveWordDetection (@RequestParam("content") String content, @RequestParam("openid") String openid){
        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService);
        String accessToken = appletTools.getAccessToken("");
        com.alibaba.fastjson2.JSONObject jsonObject = new com.alibaba.fastjson2.JSONObject();
        jsonObject.put("content", content);
        jsonObject.put("version", 2);
        jsonObject.put("scene", 2);
        jsonObject.put("openid", openid);
        String post = HttpUtils.post("https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + accessToken, jsonObject.toString());
        com.alibaba.fastjson2.JSONObject object = com.alibaba.fastjson2.JSONObject.parseObject(post);
        Integer errcode = object.getInteger("errcode");
        if(0 != errcode){
            throw new RuntimeException(object.getString("errmsg"));
        }
        JSONArray detail = object.getJSONArray("detail");
        for (int i = 0; i < detail.size(); i++) {
            JSONObject jsonObject1 = detail.getJSONObject(i);
            Integer errcode1 = jsonObject1.getInteger("errcode");
            if(0 == errcode1){
                String suggest = jsonObject1.getString("suggest");
                Integer label = jsonObject1.getInteger("label");
                String keyword = jsonObject1.getString("keyword");
                Integer prob = jsonObject1.getInteger("prob");
                if(("risky".equals(suggest) || "review".equals(suggest)) && 100 != label && StringUtils.isNotEmpty(keyword) && 80 <= prob){
                    return R.ok(true);
                }
            }
        }
        return R.ok(false);
    }
}
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
@@ -655,7 +655,8 @@
            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Access-Control-Expose-Headers", "Content-disposition");
            response.setHeader("Content-Disposition", "attachment;filename=" +
                    URLEncoder.encode("月账单-"+data.getCategory()+data.getBillWeek()+data.getSiteName(), CharEncoding.UTF_8) + ".xlsx");
//                    URLEncoder.encode("月账单-"+data.getCategory()+data.getBillWeek()+data.getSiteName(), CharEncoding.UTF_8) + ".xlsx");
                    URLEncoder.encode("月账单", CharEncoding.UTF_8) + ".xlsx");
        } catch (UnsupportedEncodingException e) {
            return R.fail("excel导出失败!");
        }
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -1,8 +1,6 @@
package com.ruoyi.chargingPile.controller;
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
@@ -10,7 +8,6 @@
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.TFaultMessage;
import com.ruoyi.chargingPile.api.query.TChargingGunQuery;
import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode;
import com.ruoyi.chargingPile.api.vo.GunStatusStatisticsVO;
@@ -23,14 +20,11 @@
import com.ruoyi.chargingPile.util.QRCodeUtils;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.domain.BaseDelete;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.log.enums.OperatorType;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.integration.api.feignClient.IntegrationClient;
import com.ruoyi.integration.api.model.EndCharge;
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -40,13 +34,11 @@
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * <p>
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
@@ -8,6 +8,7 @@
import com.ruoyi.chargingPile.api.model.TFaultMessage;
import com.ruoyi.chargingPile.api.query.TChargingGunQuery;
import com.ruoyi.chargingPile.api.vo.TChargingGunVO;
import com.ruoyi.chargingPile.api.vo.UpdateChargingPileStatusVo;
import com.ruoyi.chargingPile.dto.ChargeMonitoring;
import com.ruoyi.chargingPile.dto.ChargingGunCountMonitoring;
import com.ruoyi.chargingPile.dto.ChargingGunMonitoring;
@@ -219,11 +220,13 @@
    /**
     * 更新充电桩状态
     * @param status
     */
    @ResponseBody
    @PostMapping("/updateChargingPileStatus")
    public void updateChargingPileStatus(@RequestParam("pile_code") String pile_code, @RequestParam("gun_code") String gun_code, @RequestParam("status") Integer status){
    public void updateChargingPileStatus(@RequestBody UpdateChargingPileStatusVo vo){
        String pile_code = vo.getPile_code();
        String gun_code = vo.getGun_code();
        Integer status = vo.getStatus();
        Map<String, Object> charging_pile_online = redisService.getCacheMap("charging_gun_online");
        Long time = (Long) charging_pile_online.get(pile_code + gun_code);
        //小于30秒才处理数据,防止频繁查询数据
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
@@ -37,6 +37,7 @@
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
@@ -151,6 +152,7 @@
    public R out(Long id) {
        TParkingRecord byId = parkingRecordService.getById(id);
        byId.setStatus(2);
        byId.setOutParkingTime(LocalDateTime.now());
        parkingRecordService.updateById(byId);
        return R.ok();
@@ -306,7 +308,7 @@
    @PostMapping(value = "/parking/work")
    @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"})
    public R<TParkLotRecordCountVo> work(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){
        List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId())
        List<TParkingRecord> list = parkingRecordService.lambdaQuery().isNotNull(TParkingRecord::getOutParkingType).eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId())
                .ge(parkingRecordQueryDto.getStartTime()!=null,TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime())
                .le(parkingRecordQueryDto.getEndTime()!=null,TParkingRecord::getCreateTime, parkingRecordQueryDto.getEndTime().plusDays(1)).list();
        int count1 = list.size();
@@ -335,7 +337,7 @@
    @PostMapping(value = "/parking/work1")
    @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"})
    public R<TParkLotRecordCountVo> work1(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){
        List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId()).list();
        List<TParkingRecord> list = parkingRecordService.lambdaQuery().isNotNull(TParkingRecord::getOutParkingType).eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId()).list();
        int count1 = list.size();
        //统计出list中chargingOrderId为null的数据个数
        int count2 = list.stream().filter(item -> item.getChargingOrderId() != null).collect(Collectors.toList()).size();
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -28,7 +28,9 @@
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.integration.api.feignClient.IntegrationClient;
import com.ruoyi.integration.api.feignClient.IotInterfaceClient;
import com.ruoyi.integration.api.feignClient.SendMessageClient;
import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
import com.ruoyi.integration.api.model.QrCodeDelivery;
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.integration.api.vo.AddDevice;
import com.ruoyi.integration.api.vo.AddDeviceResp;
@@ -112,6 +114,9 @@
    
    @Resource
    private TAccountingStrategyDetailService accountingStrategyDetailService;
    @Resource
    private SendMessageClient sendMessageClient;
    
    
    
@@ -248,6 +253,25 @@
            return AjaxResult.error("设备编号已存在");
        }
        this.updateById(chargingPile);
        List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0));
        for (TChargingGun chargingGun : list) {
            TChargingGun chargingGun1 = new TChargingGun();
            chargingGun1.setId(chargingGun.getId());
            chargingGun1.setFullNumber(chargingPile.getCode() + chargingGun.getCode());
            chargingGunService.updateById(chargingGun1);
            //下发硬件充电二维码
            String code_prefix = "https://mxcd.zhinenganguan.com?No=";
            QrCodeDelivery qrCodeDelivery = new QrCodeDelivery();
            qrCodeDelivery.setCharging_pile_code(chargingPile.getCode());
            qrCodeDelivery.setCharging_gun_code(chargingGun.getCode());
            qrCodeDelivery.setCode_format(1);
            qrCodeDelivery.setPrefix_length(code_prefix.length());
            qrCodeDelivery.setCode_prefix(code_prefix);
            qrCodeDelivery.setQr_code(code_prefix + chargingPile.getCode() + chargingGun.getCode());
            sendMessageClient.qrCodeDelivery(qrCodeDelivery);
        }
        return AjaxResult.success();
    }
    
ruoyi-service/ruoyi-chargingPile/src/main/resources/template/结算汇总.xlsx
Binary files differ
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java
@@ -60,7 +60,6 @@
    }
    
    
    /**
     * 线下停车场入场
     * @param order
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/BaseResponse.java
@@ -1,12 +1,10 @@
package com.ruoyi.integration.barrierGate.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2024/9/5 11:29
 */
@Data
public class BaseResponse<T> {
    
    private Integer code;
@@ -15,17 +13,46 @@
    
    private T data;
    
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public T getData() {
        return data;
    }
    public void setData(T data) {
        this.data = data;
    }
    public BaseResponse() {
    }
    public BaseResponse(Integer code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
    
    public static BaseResponse ok(){
        return ok(new Object());
        return ok(null);
    }
    
    
    public static <T> BaseResponse<T> ok(T data){
        BaseResponse baseResponse = new BaseResponse();
        baseResponse.setCode(0);
        baseResponse.setData(data);
        baseResponse.setMsg("成功");
        BaseResponse baseResponse = new BaseResponse(0, "成功", data);
        return baseResponse;
    }
}
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java
@@ -9,6 +9,7 @@
import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.chargingPile.api.model.TFaultMessage;
import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode;
import com.ruoyi.chargingPile.api.vo.UpdateChargingPileStatusVo;
import com.ruoyi.integration.api.model.*;
import com.ruoyi.integration.iotda.constant.SendTagConstant;
import com.ruoyi.integration.iotda.enums.ServiceIdMenu;
@@ -149,7 +150,11 @@
                BeanUtils.copyProperties(pingMessage,ping);
                pingService.create(ping);
    
                chargingPileClient.updateChargingPileStatus(pingMessage.getCharging_pile_code(), pingMessage.getCharging_gun_code(), pingMessage.getCharging_gun_status());
                UpdateChargingPileStatusVo vo1 = new UpdateChargingPileStatusVo();
                vo1.setGun_code(pingMessage.getCharging_gun_code());
                vo1.setPile_code(pingMessage.getCharging_pile_code());
                vo1.setStatus(pingMessage.getCharging_gun_status());
                chargingPileClient.updateChargingPileStatus(vo1);
                break;
            case SendTagConstant.END_CHARGE:
                EndChargeMessage endChargeMessage = message.getEndChargeMessage();
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
@@ -286,15 +286,18 @@
        }
        BigDecimal paymentAmount = new BigDecimal("0");
        BigDecimal refundAmount = new BigDecimal("0");
        BigDecimal commissionAmount = new BigDecimal("0");
        List<TChargingOrder> tChargingOrders = chargingOrderService.list(eq);
        // 累加支付金额
        BigDecimal bigDecimal = new BigDecimal("0");
        BigDecimal bigDecimal1 = new BigDecimal("0.006");
        int i =1;
        for (TChargingOrder tChargingOrder : tChargingOrders) {
            // 账单信息
            paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
            paymentAmount = paymentAmount.add(tChargingOrder.getChargeAmount());
            commissionAmount = commissionAmount.add(tChargingOrder.getPaymentAmount().multiply(bigDecimal1));
            // 退款信息
            ChargingBillRefundExport chargingBillRefundExport = new ChargingBillRefundExport();
            ChargingBillPayExport chargingBillPayExport = new ChargingBillPayExport();
@@ -342,7 +345,7 @@
            chargingBillPayExport.setTotal("");
            chargingBillPayExports.add(chargingBillPayExport);
            i++;
            bigDecimal = bigDecimal.add(tChargingOrder.getOrderAmount());
            bigDecimal = bigDecimal.add(tChargingOrder.getChargeAmount());
        }
        if (!chargingBillPayExports.isEmpty()){
            chargingBillPayExports.get(0).setTotal(bigDecimal+"");
@@ -358,7 +361,7 @@
        }
        chargingBillExport.setPaymentAmount(paymentAmount);
        chargingBillExport.setRefundAmount(refundAmount);
        chargingBillExport.setIncome(paymentAmount.subtract(refundAmount));
        chargingBillExport.setIncome(paymentAmount.subtract(refundAmount).subtract(commissionAmount).setScale(2, BigDecimal.ROUND_DOWN));
        chargingBillExports.add(chargingBillExport);
        // 导出
        List<Map<String, Object>> sheetsList = new ArrayList<>();
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -19,6 +19,7 @@
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.TParkingRecord;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.dto.ChargingOrderGroup;
import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
@@ -226,17 +227,15 @@
                payOrderInfoDto2.setFinalAmount(byId2.getPaymentAmount().subtract(byId2.getRefundAmount()));
                return R.ok(payOrderInfoDto2);
            //todo luo 停车场订单
//                case 4:
//                    TParkingRecord byId3 = parkingLotClient.getRecordById(orderId).getData();
//                    PayOrderInfoDto payOrderInfoDto3 = new PayOrderInfoDto();
//                    payOrderInfoDto3.setOrderId(byId3.getId().toString());
//                    payOrderInfoDto3.setCode(byId3.getCode());
//                    payOrderInfoDto3.setTradeNo(byId3);
//                    payOrderInfoDto3.setPayType(0);
//                    payOrderInfoDto3.setPayAmount(new BigDecimal("0"));
//                    payOrderInfoDto3.setPayTime(LocalDateTime.now());
//                    payOrderInfoDto3.setRefundAmount(new BigDecimal("0"));
                case 4:
                    R<TParkingRecord> recordById = parkingLotClient.getRecordById(orderId);
                    TParkingRecord byId3 =recordById.getData();
                    PayOrderInfoDto payOrderInfoDto3 = new PayOrderInfoDto();
                    payOrderInfoDto3.setOrderId(byId3.getId().toString());
                    payOrderInfoDto3.setCode(byId3.getCode());
                    payOrderInfoDto3.setPayTime(byId3.getCreateTime());
                    payOrderInfoDto3.setRechargeAmount(byId3.getPayment());
                    return R.ok(payOrderInfoDto3);
@@ -527,7 +526,7 @@
    @ResponseBody
    @PostMapping(value = "/securityDetection")
    public void securityDetection(@RequestBody SecurityDetectionVO securityDetection){
        log.error("-------------------安全检测数据-------------------:" + securityDetection);
        log.info("-------------------安全检测数据-------------------:" + securityDetection);
        chargingOrderService.securityDetection(securityDetection);
    }
    
@@ -538,7 +537,7 @@
    @ResponseBody
    @PostMapping(value = "/startChargeSuccessfully")
    public void startChargeSuccessfully(@RequestBody PlatformStartChargingReplyMessageVO message){
        log.error("-------------------远程启动充电请求应答-------------------:" + message);
        log.info("-------------------远程启动充电请求应答-------------------:" + message);
        chargingOrderService.startChargeSuccessfully(message);
    }
    
@@ -626,7 +625,7 @@
     */
    @PostMapping("/terminateSuccessfulResponse")
    public void terminateSuccessfulResponse(@RequestBody PlatformStopChargingReplyVO platformStopChargingReply){
        log.error("-------------------远程停止充电请求应答-------------------:" + platformStopChargingReply);
        log.info("-------------------远程停止充电请求应答-------------------:" + platformStopChargingReply);
        chargingOrderService.terminateSuccessfulResponse(platformStopChargingReply);
    }
    
@@ -637,7 +636,7 @@
     */
    @PostMapping("/endChargeBillingCharge")
    public void endChargeBillingCharge(@RequestBody TransactionRecordMessageVO vo){
        log.error("-------------------停止充电返回账单后计算费用及修改业务状态-------------------:" + vo);
        log.info("-------------------停止充电返回账单后计算费用及修改业务状态-------------------:" + vo);
        chargingOrderService.endChargeBillingCharge(vo);
    }
    
@@ -1805,7 +1804,7 @@
     */
    @PostMapping("/endCharge")
    public void endCharge(@RequestParam("code") String code){
        log.error(code + ":-------------------充电桩自动结束充电-------------------");
        log.info(code + ":-------------------充电桩自动结束充电-------------------");
        chargingOrderService.endCharge(code, 2);
    }
@@ -1815,7 +1814,7 @@
     */
    @PostMapping("/excelEndCharge")
    public void excelEndCharge(@RequestParam("code") String code){
        log.error(code + ":-------------------充电异常,停止充电-------------------");
        log.info(code + ":-------------------充电异常,停止充电-------------------");
        chargingOrderService.excelEndCharge(code);
    }
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -671,7 +671,7 @@
        platformStartCharging.setCard_number(chargingOrder.getId().toString());
        platformStartCharging.setAccount_balance(account_balance);
        
        log.error(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString());
        log.info(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString());
        sendMessageClient.platformStartCharging(platformStartCharging);
        //异步线程检测远程启动的应答结果。如果失败,则需要全额退款
        Long id = chargingOrder.getId();
@@ -699,7 +699,7 @@
        String code = chargingOrder.getCode();
        String key = "AQJC_" + chargingOrder.getChargingGunId();
        List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
        log.error(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
        log.info(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
        if(data.size() != 0){
            PlatformStartChargingReply platformStartChargingReply = data.get(1);
            Integer startup_result = platformStartChargingReply.getStartup_result();
@@ -741,7 +741,7 @@
            return true;
        }else{
            Integer counter = boot_failed_map.get(code);
            log.error(code + ":-------------------未上传开启充电结果-------------------" + counter);
            log.info(code + ":-------------------未上传开启充电结果-------------------" + counter);
            PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
            //5分钟内未启动成功,退回金额。
            if(null == counter || counter < 300){
@@ -837,7 +837,7 @@
     * @param code
     */
    public void refund(String code){
        log.error(code + ":-------------------充电启动失败,执行退款-------------------");
        log.info(code + ":-------------------充电启动失败,执行退款-------------------");
        TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
        if(chargingOrder.getStatus() == 2){
            Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
@@ -1007,8 +1007,8 @@
            platformStopCharging.setCharging_pile_code(chargingPile.getCode());
            platformStopCharging.setCharging_gun_code(chargingGun.getCode());
            sendMessageClient.platformStopCharging(platformStopCharging);
            log.error(code1 + ":-------------------远程停止充电请求-------------------");
            log.error(platformStopCharging.toString());
            log.info(code1 + ":-------------------远程停止充电请求-------------------");
            log.info(platformStopCharging.toString());
        });
        return AjaxResult.success();
    }
@@ -1163,7 +1163,7 @@
                    failure_cause = "其他";
                    break;
            }
            log.error(code1 + ":停机失败:订单号:{},失败原因:{}", order.getCode(), failure_cause);
            log.info(code1 + ":停机失败:订单号:{},失败原因:{}", order.getCode(), failure_cause);
        }else{
            TChargingOrder chargingOrder = new TChargingOrder();
            chargingOrder.setId(order.getId());
@@ -1274,7 +1274,7 @@
            electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence());
            serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge());
            income = income.add(chargingOrderVO.getOrderAmount());
            income = income.add(chargingOrderVO.getPaymentAmount());
@@ -1982,10 +1982,11 @@
        TChargingOrder order = new TChargingOrder();
        order.setId(chargingOrder.getId());
        order.setAppUserId(chargingOrder.getAppUserId());
        if(null != chargingOrder.getEndMode() && chargingOrder.getEndMode() == 2){
            order.setEndMode(refundAmount.compareTo(BigDecimal.ZERO) > 0 ? 2 : 3);
        }
        if(null == chargingOrder.getEndMode()){
        UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData();
        if(null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()){
            Integer soc = uploadRealTimeMonitoringData.getSoc();
            order.setEndMode(soc > 98 ? 2 : 3);
        }else{
            order.setEndMode(1);
        }
        order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.DOWN));
@@ -2490,8 +2491,8 @@
            return null;
        }
        TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserCarId, appUserCar.getId())
                .eq(TChargingOrder::getDelFlag, 0).gt(TChargingOrder::getStartTime, query.getStartTime())
                .eq(TChargingOrder::getRechargePaymentStatus, 2).ne(TChargingOrder::getStatus, 5));
                .eq(TChargingOrder::getDelFlag, 0).between(TChargingOrder::getStartTime, query.getStartTime(), LocalDateTime.now())
                .eq(TChargingOrder::getRechargePaymentStatus, 2).in(TChargingOrder::getStatus, Arrays.asList(4, 5)));
        return one;
    }
@@ -2582,7 +2583,7 @@
                couponDiscount = couponDiscount.add(tChargingOrder.getCouponDiscountAmount());
            }
            if (tChargingOrder.getPaymentAmount()!=null){
                paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount());
                paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
            }
        }
@@ -2590,12 +2591,12 @@
        // 三方交易手续费 三方收费*0.6%
        commissionAmount = sharingAmount.multiply(new BigDecimal("0.006"));
        // 订单手续费 订单支付金额 - 退款金额*0.6%
        orderCommission = paymentAmount.multiply(new BigDecimal("0.006").setScale(2,RoundingMode.HALF_DOWN));
        orderCommission = paymentAmount.multiply(new BigDecimal("0.006"));
        tSettlementConfirm.setSharingAmount(sharingAmount.setScale(2, RoundingMode.HALF_DOWN));
        tSettlementConfirm.setCommissionAmount(commissionAmount.setScale(2, RoundingMode.HALF_DOWN));
        tSettlementConfirm.setElectrovalence(electrovalence.setScale(2, RoundingMode.HALF_DOWN));
        tSettlementConfirm.setServiceCharge(serviceCharge.subtract(orderCommission).setScale(2, RoundingMode.HALF_DOWN));
        tSettlementConfirm.setOrderCommission(orderCommission);
        tSettlementConfirm.setOrderCommission(orderCommission.setScale(2,BigDecimal.ROUND_DOWN));
        tSettlementConfirm.setVipDiscount(vipDiscount);
        tSettlementConfirm.setCouponDiscount(couponDiscount);
        tSettlementConfirm.setSiteId(dto.getSiteId());
@@ -2733,7 +2734,9 @@
        BigDecimal beforeCost= new BigDecimal("0");
        // 上月利润合计
        BigDecimal beforeIncome= new BigDecimal("0");
        int i = 1;
        for (TSettlementConfirm tSettlementConfirm : list1) {
            tSettlementConfirm.setXuhao(i);
            tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic());
            List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData();
            if (!data1.isEmpty()){
@@ -2836,6 +2839,8 @@
            for (TSettlementConfirm settlementConfirm : list2) {
                int value = parse.getMonth().getValue();
                settlementConfirm.setMonth(value);
                settlementConfirm.setIncome(settlementConfirm.getElectrovalence().add(settlementConfirm.getServiceCharge()));
                tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic());
                if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){
@@ -2858,11 +2863,11 @@
                    tSettlementConfirm.setTotalPercentage(bigDecimal1+"%");                }
                beforeCost = beforeCost.add(settlementConfirm.getCost());
                beforeIncome = beforeIncome.add(settlementConfirm.getIncome());
            }
            i++;
        }
        TSettlementConfirm tSettlementConfirm = new TSettlementConfirm();
        tSettlementConfirm.setMonth(parse.getMonthValue());
        tSettlementConfirm.setMeteringElectronic(meteringElectronic);
        tSettlementConfirm.setChargingElectronic(chargingElectronic);
        tSettlementConfirm.setLossElectronic(lossElectronic);
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -352,31 +352,9 @@
        //检测敏感词
        String content = orderEvaluate.getContent();
        if(StringUtils.isNotEmpty(content)){
            String token = appUserClient.getWXToken().getData();
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("content", content);
            jsonObject.put("version", 2);
            jsonObject.put("scene", 2);
            jsonObject.put("openid", appUser.getWxOpenid());
            String post = HttpUtils.post("https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + token, jsonObject.toString());
            JSONObject object = JSONObject.parseObject(post);
            Integer errcode = object.getInteger("errcode");
            if(0 != errcode){
                throw new RuntimeException(object.getString("errmsg"));
            }
            JSONArray detail = object.getJSONArray("detail");
            for (int i = 0; i < detail.size(); i++) {
                JSONObject jsonObject1 = detail.getJSONObject(i);
                Integer errcode1 = jsonObject1.getInteger("errcode");
                if(0 == errcode1){
                    String suggest = jsonObject1.getString("suggest");
                    Integer label = jsonObject1.getInteger("label");
                    String keyword = jsonObject1.getString("keyword");
                    Integer prob = jsonObject1.getInteger("prob");
                    if(("risky".equals(suggest) || "review".equals(suggest)) && 100 != label && StringUtils.isNotEmpty(keyword) && 80 <= prob){
            Boolean data = appUserClient.sensitiveWordDetection(content, appUser.getWxOpenid()).getData();
            if(data){
                        return AjaxResult.error("评价包含违规内容,请重新评价!");
                    }
                }
            }
        }
        orderEvaluate.setContent(content);
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java
@@ -5,15 +5,22 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.account.api.feignClient.AppUserCarClient;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.TAppUser;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.other.api.domain.THtml;
import com.ruoyi.other.api.domain.TIntegralRule;
import com.ruoyi.other.api.domain.TVip;
import com.ruoyi.other.api.dto.SaveHtml;
import com.ruoyi.other.service.THtmlService;
import com.ruoyi.other.service.TIntegralRuleService;
import com.ruoyi.other.service.TVipService;
import com.ruoyi.system.api.model.LoginUserApplet;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@@ -35,6 +42,8 @@
    private THtmlService htmlService;
    @Autowired
    private TIntegralRuleService integralRuleService;
    @Autowired
    private AppUserClient appUserClient;
    /**
@@ -54,12 +63,34 @@
        point += jsonObject.getInteger("num4");
        return R.ok(point);
    }
    @Autowired
    private TokenService tokenService;
    @Autowired
    private TVipService vipService;
    @GetMapping("/getSet")
    @ApiOperation(tags = {"管理后台-积分管理","小程序-个人中心-签到"},value = "获取积分设置")
    public R<TIntegralRule> getSet() {
        TIntegralRule res = integralRuleService.getOne(new QueryWrapper<>());
        return R.ok(res);
    }
    @GetMapping("/getSet1")
    @ApiOperation(tags = {"小程序-个人中心-签到"},value = "获取积分设置")
    public R<TIntegralRule> getSet1() {
        TIntegralRule res = integralRuleService.getOne(new QueryWrapper<>());
        LoginUserApplet loginUserApplet = tokenService.getLoginUserApplet();
        res.setIsDouble(0);
        if (loginUserApplet!=null){
            TAppUser data = appUserClient.getUserById(loginUserApplet.getUserId()).getData();
            if (data.getVipEndTime()!=null && data.getVipEndTime().isAfter(LocalDateTime.now())){
                TVip byId = vipService.getById(data.getVipId());
                Integer doubleIntegration = byId.getDoubleIntegration();
                if (doubleIntegration!=null&&doubleIntegration==1){
                    res.setIsDouble(1);
                }
            }
        }
        return R.ok(res);
    }
    
    @PostMapping("/saveSet")
    @ApiOperation(tags = {"管理后台-积分管理"},value = "保存积分设置")