From f47d695f19bca1e58ddedcc10f8d3dff7d7f8f1d Mon Sep 17 00:00:00 2001
From: zhibing.pu <393733352@qq.com>
Date: 星期三, 21 八月 2024 11:39:43 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile
---
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java | 18
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java | 261 +++++++++++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/TAccountingStrategyQuery.java | 3
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserListQueryDto.java | 6
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TChargingGunVO.java | 12
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java | 13
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/builder/IotBuilder.java | 57 ++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/GetPermissionConfigurationDTO.java | 2
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/query/PassDto.java | 13
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/EnterpriseQuery.java | 10
ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileMapper.xml | 15
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java | 39 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TGoodsService.java | 2
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/config/FileUploadConfig.java | 21
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java | 14
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java | 24
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java | 62 ++
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java | 9
ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml | 5
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/GetSiteListDTO.java | 2
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java | 4
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/SteategyPassDto.java | 14
ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml | 6
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotAccountConfig.java | 27 +
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java | 12
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java | 35 +
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java | 4
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java | 14
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java | 3
ruoyi-service/ruoyi-integration/pom.xml | 20
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/IotConstant.java | 25 +
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java | 2
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java | 31 +
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java | 13
ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TAdvertisingMapper.xml | 10
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java | 55 ++
ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml | 1
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 2
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java | 53 +
ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingGunMapper.xml | 22
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 15
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java | 4
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/token/IotTokenUtil.java | 72 +++
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/time/UtcToSeconds.java | 19
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TGoodsMapper.java | 1
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileMapper.java | 2
ruoyi-service/ruoyi-other/src/main/resources/mybatis-config.xml | 2
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyVO.java | 2
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/ExchangeDto.java | 18
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/FileController.java | 142 ++++++
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java | 3
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ExchangeDto.java | 18
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java | 13
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java | 34 +
ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml | 10
55 files changed, 1,204 insertions(+), 92 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/EnterpriseQuery.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/EnterpriseQuery.java
new file mode 100644
index 0000000..dca0181
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/EnterpriseQuery.java
@@ -0,0 +1,10 @@
+package com.ruoyi.account.api.dto;
+
+import com.ruoyi.common.core.web.domain.BasePojo;
+import com.ruoyi.common.core.web.page.BasePage;
+import lombok.Data;
+
+@Data
+public class EnterpriseQuery extends BasePage {
+ private String phone;
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserListQueryDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserListQueryDto.java
index b958d1d..54ad4db 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserListQueryDto.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserListQueryDto.java
@@ -18,4 +18,10 @@
Integer vipTypeId;
@ApiModelProperty(value = "单位id")
Integer companyId;
+
+ @ApiModelProperty(value = "到期天数1")
+ Integer vipEndTime1;
+ @ApiModelProperty(value = "到期天数2")
+ Integer vipEndTime2;
+
}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java
index 4ddbf88..0cfdd15 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java
@@ -118,5 +118,9 @@
@TableField(exist = false)
private Long orderCount;
+ @ApiModelProperty("剩余天数")
+ @TableField(exist = false)
+ private Long lastDays;
+
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/GetPermissionConfigurationDTO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/GetPermissionConfigurationDTO.java
index dfe66c9..a09885e 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/GetPermissionConfigurationDTO.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/GetPermissionConfigurationDTO.java
@@ -17,5 +17,5 @@
@ApiModelProperty(value = "备注")
private String permissionRemarks;
@ApiModelProperty(value = "权限菜单")
- private Map<String, Object> menu;
+ private List<Map<String, Object>> menu;
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/GetSiteListDTO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/GetSiteListDTO.java
index f971f06..5e1f33d 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/GetSiteListDTO.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/GetSiteListDTO.java
@@ -17,6 +17,8 @@
private String code;
@ApiModelProperty(value = "站点名称")
private String name;
+ @ApiModelProperty(value = "合作商id")
+ private Integer partnerId;
@ApiModelProperty(value = "合作商名称")
private String partnerName;
@ApiModelProperty(value = "站点类型(0=其他,1=公共,2=个人,3=公交(专业),4=环卫(专用),5=物流(专用),6=出租车(专用))")
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java
index 5bace65..2e131e2 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java
@@ -10,6 +10,7 @@
import lombok.Data;
import java.time.LocalDate;
+import java.time.LocalDateTime;
/**
* @author zhibing.pu
@@ -204,7 +205,7 @@
@TableField("establishment_time")
@ApiModelProperty(value = "建站时间", notes = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private LocalDate establishmentTime;
+ private LocalDateTime establishmentTime;
/**
* 排序
*/
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java
index f6c9c95..37f71b0 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java
@@ -39,6 +39,10 @@
@TableField("site_id")
private Integer siteId;
+ @ApiModelProperty(value = "申请人id")
+ @TableField("user_id")
+ private Long userId;
+
@ApiModelProperty(value = "策略名称")
@TableField("name")
private String name;
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java
index 289f788..e1d69a9 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java
@@ -58,7 +58,7 @@
@ApiModelProperty(value = "站点名称")
@TableField(exist = false)
- private Integer siteName;
+ private String siteName;
@ApiModelProperty(value = "合作商id", required = true)
@TableField("partner_id")
@@ -66,7 +66,7 @@
@ApiModelProperty(value = "合作商名称")
@TableField(exist = false)
- private Integer partnerName;
+ private String partnerName;
@ApiModelProperty(value = "生产商机构代码")
@TableField("manufacturer_code")
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/TAccountingStrategyQuery.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/TAccountingStrategyQuery.java
index bd7fd41..80ffa4d 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/TAccountingStrategyQuery.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/TAccountingStrategyQuery.java
@@ -11,5 +11,8 @@
@ApiModelProperty(value = "计费策略名称")
private String name;
+ @ApiModelProperty(value = "1=待审核一级,2=待审核二级,3=审核通过,4=驳回")
+ private Integer auditStatus;
+
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyVO.java
index 5e7a7ff..40ea660 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyVO.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyVO.java
@@ -21,6 +21,8 @@
@ApiModelProperty(value = "二級审核人员")
private String twoUserName;
+ @ApiModelProperty(value = "申请人名字")
+ private String userName;
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TChargingGunVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TChargingGunVO.java
index 16e7232..51dd56f 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TChargingGunVO.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TChargingGunVO.java
@@ -11,22 +11,22 @@
@ApiModelProperty(value = "策略名称")
private String strategyName;
-
+
@ApiModelProperty(value = "编辑权限")
private boolean authUpdate = true;
-
+
@ApiModelProperty(value = "删除权限")
private boolean authDelete = true;
-
+
@ApiModelProperty(value = "查看费率权限")
private boolean authViewRates = true;
-
+
@ApiModelProperty(value = "下载二维码权限")
private boolean authDownloadQRCode = true;
-
+
@ApiModelProperty(value = "查看详情权限")
private boolean authQueryInfo = true;
-
+
@ApiModelProperty(value = "结束充电权限")
private boolean authEndCharge = true;
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
index 4177dd3..04ea275 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
@@ -4,8 +4,10 @@
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
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.query.TActivityStatisticsQuery;
import com.ruoyi.order.api.vo.TActivityVO;
+import com.ruoyi.order.api.vo.ExchangeDto;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
@@ -41,6 +43,17 @@
}
@Override
+ public R<Long> getExchangeById(Integer goodsIds, Long userId) {
+ return R.fail("根据订单数" + cause.getMessage());
+ }
+
+ @Override
+ public R<Long> exchangeCreate(ExchangeDto exchangeDto) {
+ return R.fail("创建订单" + cause.getMessage());
+ }
+
+
+ @Override
public R<TActivityVO> activityStatistics(TActivityStatisticsQuery dto) {
return R.fail("查询活动费用统计失败:" + cause.getMessage());
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
index 9e59397..ff507cd 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
@@ -4,12 +4,15 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.order.api.factory.ChargingOrderFallbackFactory;
import com.ruoyi.order.api.factory.OrderFallbackFactory;
+import com.ruoyi.order.api.model.TExchangeOrder;
+import com.ruoyi.order.api.vo.ExchangeDto;
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;
+import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -30,6 +33,12 @@
*/
@PostMapping("/t-exchange-order/getCodeByOrderId")
public R<List<String>> getCodeByOrderId(String goodsIds);
+ //查询已兑换的订单数
+ @PostMapping("/t-exchange-order/getById")
+ public R<Long> getExchangeById(@RequestParam("goodId") Integer goodId,@RequestParam("userId") Long userId);
+ @PostMapping("/t-exchange-order/create")
+ public R<Long> exchangeCreate(@RequestBody ExchangeDto exchangeDto);
+
/**
* 管理后台 活动费用统计
* @param
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ExchangeDto.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ExchangeDto.java
new file mode 100644
index 0000000..e0bdeb2
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ExchangeDto.java
@@ -0,0 +1,18 @@
+package com.ruoyi.order.api.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ExchangeDto {
+ @ApiModelProperty("商品id")
+ Integer goodId;
+ @ApiModelProperty("地址id")
+ Integer addressId;
+ @ApiModelProperty("备注")
+ String remark;
+ @ApiModelProperty(hidden = true)
+ Long userId;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/ExchangeDto.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/ExchangeDto.java
new file mode 100644
index 0000000..9c3969d
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/ExchangeDto.java
@@ -0,0 +1,18 @@
+package com.ruoyi.other.api.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ExchangeDto {
+ @ApiModelProperty("商品id")
+ Integer goodId;
+ @ApiModelProperty("地址id")
+ Integer addressId;
+ @ApiModelProperty("备注")
+ String remark;
+ @ApiModelProperty(hidden = true)
+ Long userId;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
index 100f547..b5179bc 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
@@ -74,4 +74,6 @@
+
+
}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java
index 1e04af6..bf1a7fd 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java
@@ -2,16 +2,26 @@
import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.web.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
* 操作日志记录表 oper_log
*
* @author ruoyi
*/
+@Data
+@ApiModel
+@TableName("")
public class SysOperLog extends BaseEntity {
private static final long serialVersionUID = 1L;
@@ -19,18 +29,23 @@
* 日志主键
*/
@Excel(name = "操作序号", cellType = ColumnType.NUMERIC)
+ @ApiModelProperty("数据id")
+ @TableId(value = "oper_id", type = IdType.AUTO)
private Long operId;
/**
* 操作模块
*/
@Excel(name = "操作模块")
+ @ApiModelProperty("操作模块")
private String title;
/**
* 业务类型(0其它 1新增 2修改 3删除)
*/
@Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据")
+ @ApiModelProperty("0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据")
+ @TableField("business_type")
private Integer businessType;
/**
@@ -42,66 +57,80 @@
* 请求方法
*/
@Excel(name = "请求方法")
+ @ApiModelProperty("请求方法")
private String method;
/**
* 请求方式
*/
@Excel(name = "请求方式")
+ @ApiModelProperty("请求方式")
+ @TableField("request_method")
private String requestMethod;
/**
* 操作类别(0其它 1后台用户 2手机端用户)
*/
@Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户")
+ @ApiModelProperty("0=其它,1=后台用户,2=手机端用户")
+ @TableField("operator_type")
private Integer operatorType;
/**
* 操作人员
*/
@Excel(name = "操作人员")
+ @ApiModelProperty("操作人员")
+ @TableField("operator_type")
private String operName;
/**
* 部门名称
*/
@Excel(name = "部门名称")
+ @ApiModelProperty("部门名称")
private String deptName;
/**
* 请求url
*/
@Excel(name = "请求地址")
+ @ApiModelProperty("请求地址")
private String operUrl;
/**
* 操作地址
*/
@Excel(name = "操作地址")
+ @ApiModelProperty("操作地址")
private String operIp;
/**
* 请求参数
*/
@Excel(name = "请求参数")
+ @ApiModelProperty("请求参数")
private String operParam;
/**
* 返回参数
*/
@Excel(name = "返回参数")
+ @ApiModelProperty("返回参数")
private String jsonResult;
/**
* 操作状态(0正常 1异常)
*/
@Excel(name = "状态", readConverterExp = "0=正常,1=异常")
+ @ApiModelProperty("0=正常,1=异常")
private Integer status;
/**
* 错误消息
*/
@Excel(name = "错误消息")
+ @ApiModelProperty("错误消息")
private String errorMsg;
/**
@@ -109,12 +138,14 @@
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty("操作时间")
private Date operTime;
/**
* 消耗时间
*/
@Excel(name = "消耗时间", suffix = "毫秒")
+ @ApiModelProperty("消耗时间")
private Long costTime;
public Long getOperId() {
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/SteategyPassDto.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/SteategyPassDto.java
new file mode 100644
index 0000000..0f1a80b
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/SteategyPassDto.java
@@ -0,0 +1,14 @@
+package com.ruoyi.common.core.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SteategyPassDto {
+ @ApiModelProperty("备注")
+ private String remark;
+ @ApiModelProperty("1通过2拒绝")
+ private Integer pass;
+ @ApiModelProperty("ID")
+ private Integer id;
+}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java
index c6653e5..1cd3f9c 100644
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java
+++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java
@@ -69,20 +69,20 @@
return chain.filter(exchange);
}
//防抖校验
- try {
- antiShake(request);
- }catch (Exception e){
- log.error("[重复提交]请求路径:{}", exchange.getRequest().getPath());
- return ServletUtils.webFluxResponseWriter(exchange.getResponse(), e.getMessage(), HttpStatus.SUCCESS);
- }
+// try {
+// antiShake(request);
+// }catch (Exception e){
+// log.error("[重复提交]请求路径:{}", exchange.getRequest().getPath());
+// return ServletUtils.webFluxResponseWriter(exchange.getResponse(), e.getMessage(), HttpStatus.SUCCESS);
+// }
//校验账户是否有效
- try {
- verifyToken(request);
- verifyAccount(request);
- }catch (Exception e){
- return unauthorizedResponse(exchange, e.getMessage());
- }
+// try {
+// verifyToken(request);
+// verifyAccount(request);
+// }catch (Exception e){
+// return unauthorizedResponse(exchange, e.getMessage());
+// }
String token = getToken(request);
Claims claims = JwtUtils.parseToken(token);
String userkey = JwtUtils.getUserKey(claims);
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java
index 6b4046f..8969c5b 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java
@@ -45,6 +45,18 @@
return AjaxResult.ok(appUserAddressService.list(Wrappers.<TAppUserAddress>lambdaQuery().eq(TAppUserAddress::getAppUserId, userId)));
}
+ /**
+ * 查询用户默认地址列表
+ */
+ @ApiOperation(tags = {"小程序-用户地址"},value = "查询用户默认地址列表")
+ @GetMapping(value = "/queryDefaultAddress")
+ public AjaxResult<TAppUserAddress> queryDefaultAddress() {
+ // 用户id
+ Long userId = tokenService.getLoginUserApplet().getUserId();
+ return AjaxResult.ok(appUserAddressService.getOne(Wrappers.<TAppUserAddress>lambdaQuery().eq(TAppUserAddress::getAppUserId, userId)
+ .eq(TAppUserAddress::getDefaultAddress,1)));
+ }
+
/**
* 添加用户地址管理
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 ea8dcfd..3e381b6 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
@@ -236,12 +236,15 @@
}
//列表查询
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.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)
+ .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()))
+ .in(!userIds.isEmpty(), TAppUser::getId, userIds)
.page(Page.of(userListQueryDto.getPageCurr(), userListQueryDto.getPageSize()));
if (page.getRecords().isEmpty()){
return R.ok(page);
@@ -255,15 +258,19 @@
//拿到最新的tagId
TAppUserTag one = appUserTagService.lambdaQuery().eq(TAppUserTag::getAppUserId, appUser.getId()).orderByDesc(TAppUserTag::getCreateTime).last("limit 1").one();
//设置最新的tagName
- R<TUserTag> byIdTag = otherClient.getByIdTag(one.getUserTagId());
- if (byIdTag.getData()!=null) {
- appUser.setTagName(byIdTag.getData().getName());
+ if (one!=null) {
+ R<TUserTag> byIdTag = otherClient.getByIdTag(one.getUserTagId());
+ if (byIdTag.getData() != null) {
+ appUser.setTagName(byIdTag.getData().getName());
+ }
}
//匹配vipMap的值
appUser.setVipName(vipMap.getData().get(appUser.getVipId()));
//累计充电次数
R<Long> useOrderCount = chargingOrderClient.useOrderCount(appUser.getId());
appUser.setOrderCount(useOrderCount.getData());
+ appUser.setLastDays( Duration.between(LocalDateTime.now(), appUser.getVipEndTime()).toDays());
+ appUser.setUid(appUser.getId().toString());
}
return R.ok(page);
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/config/FileUploadConfig.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/config/FileUploadConfig.java
new file mode 100644
index 0000000..5d9cd57
--- /dev/null
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/config/FileUploadConfig.java
@@ -0,0 +1,21 @@
+package com.ruoyi.chargingPile.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * <p>文件上传配置</p>
+ *
+ * @author mouseyCat
+ * @date 2020/10/13 16:10
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "file.upload")
+public class FileUploadConfig {
+ private String accessPath;
+ private String allowExt;
+ private String location;
+ private String qrLocation;
+}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/FileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/FileController.java
new file mode 100644
index 0000000..bd3dd68
--- /dev/null
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/FileController.java
@@ -0,0 +1,142 @@
+package com.ruoyi.chargingPile.controller;
+
+import com.ruoyi.chargingPile.config.FileUploadConfig;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 文件上传控制类
+ *
+ * @author junelee
+ * @date 2020/3/20 20:21
+ */
+@Api(tags = "服务器文件上传")
+@RestController
+@CrossOrigin
+@RequestMapping("/file/")
+public class FileController {
+
+ @Autowired
+ private FileUploadConfig fileUploadConfig;
+
+
+
+ @ApiOperation(value = "单文件上传", notes = "单文件上传,rename 默认不重命名")
+ @PostMapping(value = "upload", headers = "content-type=multipart/form-data")
+ public AjaxResult uploadImageMany(@RequestParam(value = "file") MultipartFile mf) throws IOException {
+ if (mf.isEmpty()) {
+ return AjaxResult.error("请传入文件!");
+ }
+ 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()) {
+ file.mkdirs();
+ }
+ // 获取文件名称
+ String filename = mf.getOriginalFilename();
+ // 获取文件后缀
+ String ext = filename.substring(filename.lastIndexOf("."), filename.length());
+ // 检查文件类型
+ if (!fileUploadConfig.getAllowExt().contains(ext)) {
+ return AjaxResult.error("上传文件格式不正确,仅支持" + fileUploadConfig.getAllowExt());
+ }
+ File targetFile = new File(realPath, filename);//目标文件
+ //开始从源文件拷贝到目标文件
+ //传图片一步到位
+ mf.transferTo(targetFile);
+ //拼接数据
+ String imgstr = fileUploadConfig.getAccessPath() + TimeDir +"/"+ filename;
+// String imgstr = TimeDir +"/"+ filename;
+ return AjaxResult.success(imgstr);
+ }
+
+
+// @ApiOperation(value = "单文件上传", notes = "单文件上传,rename 默认不重命名")
+// @PostMapping(value = "strUpload", headers = "content-type=multipart/form-data")
+// public String strUpload(@RequestParam(value = "file") MultipartFile mf,@RequestParam(value = "fileName")String fileName) throws IOException {
+// if (mf.isEmpty()) {
+// return "请传入文件!";
+// }
+// String TimeDir =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+// String realPath = fileUploadConfig.getQrLocation() + TimeDir;
+// File file = new File(realPath);
+// // 没有目录就创建
+// if (!file.exists()) {
+// file.mkdirs();
+// }
+// File targetFile = new File(realPath, fileName);//目标文件
+// //开始从源文件拷贝到目标文件
+// //传图片一步到位
+// mf.transferTo(targetFile);
+// //拼接数据
+// return fileUploadConfig.getQrLocation() + TimeDir +"\\"+ fileName;
+// }
+
+ @ApiOperation(value = "单文件上传", notes = "单文件上传,rename 默认不重命名")
+ @PostMapping(value = "strUpload", headers = "content-type=multipart/form-data")
+ public String strUpload(@RequestParam(value = "file") MultipartFile mf,@RequestParam(value = "fileName")String fileName) throws IOException {
+ if (mf.isEmpty()) {
+ return "请传入文件!";
+ }
+ String TimeDir =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+// String realPath = "D:\\file\\" + TimeDir;
+ String realPath = fileUploadConfig.getLocation() + TimeDir;
+ File file = new File(realPath);
+ // 没有目录就创建
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ File targetFile = new File(realPath, fileName);//目标文件
+ //开始从源文件拷贝到目标文件
+ //传图片一步到位
+ mf.transferTo(targetFile);
+ String imgstr = fileUploadConfig.getAccessPath() + TimeDir +"/"+ fileName;
+ //拼接数据
+// return TimeDir +"/"+ fileName;
+ return imgstr;
+ }
+
+ @ApiOperation(value = "单文件上传(覆盖服务器原文件)", notes = "单文件上传,rename 默认不重命名")
+ @PostMapping(value = "test/upload", headers = "content-type=multipart/form-data")
+ public AjaxResult uploadTest(@RequestParam(value = "file") MultipartFile mf) throws IOException {
+ if (mf.isEmpty()) {
+ return AjaxResult.error("请传入文件!");
+ }
+ String TimeDir = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+ String realPath = fileUploadConfig.getLocation() + "2021-11-17";
+ File file = new File(realPath);
+ // 没有目录就创建
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ // 判断文件大小
+ String filename = "6u2mGlqHkeE75e2ab51b4a03c6982ff7d68f4c024d43.jpg";
+ // 获取文件后缀
+ String ext = filename.substring(filename.lastIndexOf("."), filename.length());
+ // 检查文件类型
+ if (!fileUploadConfig.getAllowExt().contains(ext)) {
+ return AjaxResult.error("上传文件格式不正确,仅支持" + fileUploadConfig.getAllowExt());
+ }
+ File targetFile = new File(realPath, filename);//目标文件
+ //开始从源文件拷贝到目标文件
+ //传图片一步到位
+ mf.transferTo(targetFile);
+ //拼接数据
+ String imgstr = fileUploadConfig.getAccessPath() + "2021-11-17" + "/" + filename;
+ return AjaxResult.success(imgstr);
+ }
+
+
+}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
index 24374de..2b65d4b 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -165,7 +165,7 @@
@ResponseBody
- @PostMapping("/getSiteInfo")
+ @PostMapping("/getSiteInfo/{id}")
@ApiOperation(value = "获取站点详情", tags = {"管理后台-站点管理"})
public AjaxResult<Site> getSiteInfo(@PathVariable Integer id){
Site site = siteService.getById(id);
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
index 68d1800..4021ecd 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -15,6 +15,7 @@
import com.ruoyi.chargingPile.service.TAccountingStrategyService;
import com.ruoyi.chargingPile.service.TChargingPileService;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.dto.SteategyPassDto;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.domain.BaseDelete;
import com.ruoyi.common.core.web.page.PageInfo;
@@ -45,7 +46,7 @@
* @author xiaochen
* @since 2024-08-06
*/
-@Api(tags = "计费策略")
+
@RestController
@RequestMapping("/t-accounting-strategy")
public class TAccountingStrategyController {
@@ -177,26 +178,44 @@
@ApiOperation(tags = {"后台-申请表单-计费模板审核"},value = "查询计费审核分页列表")
@PostMapping(value = "/auth/pageList")
- public AjaxResult authPageList(@RequestBody TAccountingStrategyQuery query) {
- Long userid = tokenService.getLoginUser().getUserid();
- Page<TAccountingStrategy> page = accountingStrategyService.lambdaQuery()
- .in(TAccountingStrategy::getFirstUserId, userid)
- .or().in(TAccountingStrategy::getTwoUserId, userid)
- .page(Page.of(query.getPageCurr(), query.getPageSize()));
+ public AjaxResult<PageInfo<TAccountingStrategyVO>> authPageList(@RequestBody TAccountingStrategyQuery query) {
- List<TAccountingStrategy> records = page.getRecords();
- for (TAccountingStrategy record : records) {
- if (record.getAuditStatus()==2){
- if (record.getFirstUserId().equals(userid)){
- record.setAuditStatus(3);
- }
-
- }
-
- }
return AjaxResult.ok(accountingStrategyService.pageList(query));
}
+// @ApiOperation(tags = {"后台-申请表单-计费模板审核"},value = "审核")
+// @PostMapping(value = "/auth/pass")
+// public AjaxResult<PageInfo<TAccountingStrategyVO>> authPass(@RequestBody SteategyPassDto steategyPassDto) {
+// TAccountingStrategy byId = accountingStrategyService.getById(steategyPassDto.getId());
+// Long userId = tokenService.getLoginUser().getSysUser().getUserId();
+// if (byId.getAuditStatus()==1&&byId.getFirstUserId()!=userId){
+// return AjaxResult.error("您不是一级审核人员,无法审核");
+// }
+// if (byId.getAuditStatus()==2&&byId.getTwoUserId()!=userId){
+// return AjaxResult.error("您不是二级审核人员,无法审核");
+// }
+// if (steategyPassDto.getPass()==1){
+// if (byId.getAuditStatus()==1){
+//
+// byId.setAuditStatus(2);
+// byId.setFirstRemark(steategyPassDto.getRemark());
+//
+// }else if (byId.getAuditStatus()==2){
+// byId.setAuditStatus(3);
+// byId.setTwoRemark(steategyPassDto.getRemark());
+//
+// }
+// }else {
+// byId.setAuditStatus(4);
+// }
+//
+//
+//
+//
+//
+//
+// }
+
/**
* 小程序远程调用 根据会员折扣、预付金额 计算服务费
* @return
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
index e91f208..797a34e 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
@@ -40,7 +40,7 @@
* 建桩申请
*/
@Log(title = "建桩申请", businessType = BusinessType.INSERT,operatorType = OperatorType.MOBILE)
- @ApiOperation(tags = {"小程序-建桩申请"},value = "建桩申请")
+ @ApiOperation(tags = {"小程序-建桩申请","后台-申请表单-申请建桩"},value = "建桩申请")
@PostMapping(value = "/add")
public AjaxResult<Boolean> add(@RequestBody TApplyChargingPile dto) {
// 用户id
@@ -74,6 +74,18 @@
applyChargingPileService.updateById(byId);
return AjaxResult.success();
}
+ @ApiOperation(tags = {"后台-申请表单-申请建桩"},value = "删除")
+ @DeleteMapping(value = "/remark")
+ public AjaxResult remark(String ids) {
+
+ String[] split = ids.split(",");
+ for (String s : split) {
+ applyChargingPileService.removeById(s);
+
+ }
+ return AjaxResult.success();
+
+ }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileMapper.java
index 9cf2e89..5f7f9c5 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileMapper.java
@@ -39,7 +39,7 @@
* @param id
* @return
*/
- TChargingPile getChargingPile(Integer id);
+ TChargingPile getChargingPile(@Param("id") Integer id);
/**
* 获取站点下充电桩及充电枪列表
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
index 14003b2..110ef9c 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
@@ -328,7 +328,6 @@
Partner partner = this.getById(partnerId);
GetPermissionConfigurationDTO dto = new GetPermissionConfigurationDTO();
dto.setPermissionRemarks(partner.getPermissionRemarks());
- Map<String, Object> menu = new HashMap<>();
List<TPartnerSite> list = partnerSiteService.list(new LambdaQueryWrapper<TPartnerSite>()
.eq(TPartnerSite::getPartnerId, partnerId)
.eq(TPartnerSite::getSiteId, siteId));
@@ -337,7 +336,9 @@
.eq(TSiteMenu::getParentId, 0)
.eq(TSiteMenu::getVisible, 0)
.eq(TSiteMenu::getStatus, 0).orderByAsc(TSiteMenu::getOrderNum));
+ List<Map<String, Object>> list1 = new ArrayList<>();
for (TSiteMenu tSiteMenu : tSiteMenus) {
+ Map<String, Object> menu = new HashMap<>();
menu.put("id", tSiteMenu.getMenuId());
menu.put("name", tSiteMenu.getMenuName());
menu.put("path", tSiteMenu.getPath());
@@ -347,18 +348,21 @@
.eq(TSiteMenu::getParentId, tSiteMenu.getMenuId())
.eq(TSiteMenu::getVisible, 0)
.eq(TSiteMenu::getStatus, 0).orderByAsc(TSiteMenu::getOrderNum));
- Map<String, Object> child = new HashMap<>();
+ List<Map<String, Object>> list2 = new ArrayList<>();
for (TSiteMenu siteMenu : tSiteMenus1) {
+ Map<String, Object> child = new HashMap<>();
child.put("id", siteMenu.getMenuId());
child.put("name", siteMenu.getMenuName());
child.put("path", siteMenu.getPath());
child.put("type", siteMenu.getMenuType());
child.put("selected", collect.contains(siteMenu.getMenuId()));
+ list2.add(child);
}
- menu.put("selected", child.keySet().size() > 0 ? true : false);
- menu.put("child", child);
+ menu.put("selected", list2.size() > 0 ? true : false);
+ menu.put("child", list2);
+ list1.add(menu);
}
- dto.setMenu(menu);
+ dto.setMenu(list1);
return dto;
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java
index fd43fd1..2b2bbd5 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyServiceImpl.java
@@ -8,8 +8,12 @@
import com.ruoyi.chargingPile.mapper.TAccountingStrategyMapper;
import com.ruoyi.chargingPile.service.TAccountingStrategyService;
import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.other.api.feignClient.OtherClient;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysUserClient;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.util.List;
/**
@@ -23,10 +27,24 @@
@Service
public class TAccountingStrategyServiceImpl extends ServiceImpl<TAccountingStrategyMapper, TAccountingStrategy> implements TAccountingStrategyService {
+ @Resource
+ private SysUserClient sysUserClient;
@Override
public PageInfo<TAccountingStrategyVO> pageList(TAccountingStrategyQuery query) {
PageInfo<TAccountingStrategyVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
List<TAccountingStrategyVO> list = this.baseMapper.pageList(query,pageInfo);
+ for (TAccountingStrategyVO tAccountingStrategyVO : list) {
+ SysUser data = sysUserClient.getSysUser(tAccountingStrategyVO.getUserId()).getData();
+ tAccountingStrategyVO.setUserName(data.getNickName());
+ if (tAccountingStrategyVO.getFirstUserId()!=null){
+ SysUser first = sysUserClient.getSysUser(tAccountingStrategyVO.getUserId()).getData();
+ tAccountingStrategyVO.setFirstUserName(first==null?null:first.getNickName());
+ }
+ if (tAccountingStrategyVO.getTwoUserId()!=null){
+ SysUser two = sysUserClient.getSysUser(tAccountingStrategyVO.getUserId()).getData();
+ tAccountingStrategyVO.setTwoUserName(two==null?null:two.getNickName());
+ }
+ }
pageInfo.setRecords(list);
return pageInfo;
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml
index 985238a..a1c5267 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml
@@ -58,11 +58,11 @@
</appender>
<!-- 系统模块日志级别控制 -->
- <logger name="com.ruoyi" level="info" />
+ <logger name="com.ruoyi" level="debug" />
<!-- Spring日志级别控制 -->
- <logger name="org.springframework" level="warn" />
+ <logger name="org.springframework" level="debug" />
- <root level="info">
+ <root level="debug">
<appender-ref ref="console" />
</root>
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
index 2d141d8..b230499 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
@@ -52,6 +52,7 @@
a.id,
a.code,
a.name,
+ a.partner_id as partnerId,
b.name as partnerName,
a.site_type as siteType,
a.business_category as businessCategory,
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
index cb53cae..852f794 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
@@ -26,12 +26,15 @@
</sql>
<select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO">
SELECT
- id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag
+ id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,user_id
FROM t_accounting_strategy
<where>
<if test="query.name != null and query.name != ''">
AND `name` LIKE concat('%',#{query.name}, '%')
</if>
+ <if test="query.auditStatus != null">
+ AND audit_status = #{query.auditStatus}
+ </if>
AND site_id IS NULL
AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
</where>
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingGunMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingGunMapper.xml
index dcf4843..6fa993c 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingGunMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingGunMapper.xml
@@ -34,29 +34,29 @@
</sql>
<select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.TChargingGunVO">
SELECT
- tas.id, tas.code, tas.site_id, tas.partner_id, tas.charging_pile_id, tas.`name`, tas.`type`, tas.status, tas.charge_mode, tas.accounting_strategy_id,
- tas.upper_rated_voltage, tas.lower_limit_of_rated_voltage, tas.rated_current, tas.rated_power, tas.parking_number, tas.parking_status,
- tas.parking_lock_state, tas.national_standard, tas.remark, tas.create_time, tas.del_flag,tcg.name AS strategyName
+ tcg.id, tcg.code, tcg.site_id, tcg.partner_id, tcg.charging_pile_id, tcg.`name`, tcg.`type`, tcg.status, tcg.charge_mode, tcg.accounting_strategy_id,
+ tcg.upper_rated_voltage, tcg.lower_limit_of_rated_voltage, tcg.rated_current, tcg.rated_power, tcg.parking_number, tcg.parking_status,
+ tcg.parking_lock_state, tcg.national_standard, tcg.remark, tcg.create_time, tcg.del_flag,tas.name AS strategyName
FROM t_charging_gun tcg
LEFT JOIN t_accounting_strategy tas ON tas.id = tcg.accounting_strategy_id
<where>
<if test="query.siteId != null">
- AND tas.site_id = #{query.siteId}
+ AND tcg.site_id = #{query.siteId}
</if>
<if test="query.chargingPileId != null">
- AND tas.charging_pile_id = #{query.chargingPileId}
+ AND tcg.charging_pile_id = #{query.chargingPileId}
</if>
<if test="query.name != null and query.name != ''">
- AND tas.`name` LIKE concat('%',#{query.name},'%')
+ AND tcg.`name` LIKE concat('%',#{query.name},'%')
</if>
<if test="query.type != null">
- AND tas.`type` = #{query.type}
+ AND tcg.`type` = #{query.type}
</if>
<if test="query.status != null">
- AND tas.status = #{query.status}
+ AND tcg.status = #{query.status}
</if>
<if test="query.chargeMode != null">
- AND tas.chargeMode = #{query.chargeMode}
+ AND tcg.chargeMode = #{query.chargeMode}
</if>
<if test="null != siteIds">
and tcg.site_id in
@@ -64,9 +64,9 @@
#{item}
</foreach>
</if>
- AND tas.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+ AND tcg.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
</where>
- ORDER BY tas.create_time DESC
+ ORDER BY tcg.create_time DESC
</select>
</mapper>
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileMapper.xml
index bcfe11d..ce989fc 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileMapper.xml
@@ -31,22 +31,22 @@
<select id="pageChargingPileList" resultType="com.ruoyi.chargingPile.api.dto.PageChargingPileListDTO">
select
- id,
- code,
- name,
- number,
- type,
+ a.id,
+ a.code,
+ a.name,
+ a.number,
+ a.type,
a.site_id as siteId,
b.name as siteName,
a.partner_id as partnerId,
c.name as partnerName,
a.manufacturer,
a.equipment_type as equipmentType,
- a.ratedPower
+ a.rated_power as ratedPower
from t_charging_pile a
left join t_site b on (a.site_id = b.id)
left join t_partner c on (a.partner_id = c.id)
- where del_flag = 0
+ where a.del_flag = 0
<if test="null != item.siteId">
and a.site_id = #{item.siteId}
</if>
@@ -74,6 +74,7 @@
from t_charging_pile a
left join t_site b on (a.site_id = b.id)
left join t_partner c on (a.partner_id = c.id)
+ where a.id = #{id}
</select>
<select id="getChargingGunList" resultType="com.ruoyi.chargingPile.api.vo.TChargingPileVO">
select id,code, `name`, `number` from t_charging_pile
diff --git a/ruoyi-service/ruoyi-integration/pom.xml b/ruoyi-service/ruoyi-integration/pom.xml
index 1971df9..5a824fc 100644
--- a/ruoyi-service/ruoyi-integration/pom.xml
+++ b/ruoyi-service/ruoyi-integration/pom.xml
@@ -127,12 +127,30 @@
<version>4.7.1</version>
</dependency>
- <!--spirngboot集成mongodb-->
+ <!--mongodb-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
+ <!--华为云-->
+ <dependency>
+ <groupId>com.huaweicloud.sdk</groupId>
+ <artifactId>huaweicloud-sdk-core</artifactId>
+ <version>[3.0.40-rc, 3.2.0)</version>
+ </dependency>
+ <dependency>
+ <groupId>com.huaweicloud.sdk</groupId>
+ <artifactId>huaweicloud-sdk-iotda</artifactId>
+ <version>[3.0.40-rc, 3.2.0)</version>
+ </dependency>
+ <dependency>
+ <groupId>com.huaweicloud.sdk</groupId>
+ <artifactId>huaweicloud-sdk-bundle</artifactId>
+ <version>3.1.87</version>
+ </dependency>
+
+
</dependencies>
<build>
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/builder/IotBuilder.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/builder/IotBuilder.java
new file mode 100644
index 0000000..d11cc16
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/builder/IotBuilder.java
@@ -0,0 +1,57 @@
+package com.ruoyi.integration.iotda.builder;
+
+import com.huaweicloud.sdk.core.auth.AbstractCredentials;
+import com.huaweicloud.sdk.core.auth.BasicCredentials;
+import com.huaweicloud.sdk.core.auth.ICredential;
+import com.huaweicloud.sdk.core.region.Region;
+import com.huaweicloud.sdk.iam.v3.IamClient;
+import com.huaweicloud.sdk.iam.v3.region.IamRegion;
+import com.huaweicloud.sdk.iotda.v5.IoTDAClient;
+import com.ruoyi.integration.iotda.config.IotDAConfig;
+import com.ruoyi.integration.iotda.constant.IotConstant;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+public class IotBuilder {
+
+ @Autowired
+ private IotDAConfig config;
+
+ /**
+ * iot build
+ *
+ * @return
+ */
+ public IoTDAClient buildIot() {
+ ICredential auth = new BasicCredentials()
+ // 标准版/企业版需要使用衍生算法,基础版请删除配置"withDerivedPredicate";
+ .withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) // Used in derivative ak/sk authentication scenarios
+ .withAk(config.getAk())
+ .withSk(config.getSk());
+ return IoTDAClient.newBuilder()
+ .withCredential(auth)
+ // 标准版/企业版:需自行创建Region对象,基础版:请使用IoTDARegion的region对象,如"withRegion(IoTDARegion.CN_NORTH_4)"
+ .withRegion(new Region("cn-north-4", IotConstant.URL))
+ .build();
+ }
+ /**
+ * iam build
+ *
+ * @return
+ */
+ public IamClient buildIam() {
+ ICredential auth = new BasicCredentials()
+ // 标准版/企业版需要使用衍生算法,基础版请删除配置"withDerivedPredicate";
+ .withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) // Used in derivative ak/sk authentication scenarios
+ .withAk(config.getAk())
+ .withSk(config.getSk());
+ return IamClient.newBuilder()
+ .withCredential(auth)
+ .withRegion(IamRegion.valueOf("cn-north-4"))
+ .build();
+ }
+
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotAccountConfig.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotAccountConfig.java
new file mode 100644
index 0000000..8b34ca1
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotAccountConfig.java
@@ -0,0 +1,27 @@
+package com.ruoyi.integration.iotda.config;
+
+import lombok.Data;
+import lombok.ToString;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@ToString
+@Component
+@ConfigurationProperties(prefix = "iot.account.conf")
+public class IotAccountConfig {
+
+ /**
+ * hostAccount配置
+ */
+ private String hostAccount;
+ /**
+ * iamAccount配置
+ */
+ private String iamAccount;
+ /**
+ * iamPassword配置
+ */
+ private String iamPassword;
+
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java
new file mode 100644
index 0000000..01a297d
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java
@@ -0,0 +1,35 @@
+package com.ruoyi.integration.iotda.config;
+
+import lombok.Data;
+import lombok.ToString;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@ToString
+@Component
+@ConfigurationProperties(prefix = "iot.conf")
+public class IotDAConfig {
+
+ /**
+ * ak配置
+ */
+ private String ak;
+ /**
+ * sk配置
+ */
+ private String sk;
+ /**
+ * endpoint配置 938d8d39e2.iotda.cn-north-4.myhuaweicloud.com
+ */
+ private String endpoint;
+ /**
+ * project_id配置 0cc59978c61e4b4da24e8c3d02937b45
+ */
+ private String projectId;
+ /**
+ * Instance-Id配置 c60f266a-57a2-460c-a24e-eabda84602eb
+ */
+ private String instanceId;
+
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/IotConstant.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/IotConstant.java
new file mode 100644
index 0000000..b84b38b
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/IotConstant.java
@@ -0,0 +1,25 @@
+package com.ruoyi.integration.iotda.constant;
+
+public class IotConstant {
+ /**
+ * 华为云iot token
+ */
+ public static final String IOT_TOKEN = "iot_token";
+ /**
+ * 模式
+ */
+ public static final String PASSWORD = "password";
+ /**
+ * URL
+ */
+ public static final String URL = "https://iotda.cn-north-4.myhuaweicloud.com";
+ /**
+ * 创建产品
+ */
+ public static final String CREATE_PRODUCT = URL+"/v5/iot/{project_id}/products";
+ /**
+ * 创建产品
+ */
+ public static final String DELETE_PRODUCT = URL+"/v5/iot/{project_id}/products/{product_id}";
+
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java
new file mode 100644
index 0000000..2528cc6
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java
@@ -0,0 +1,261 @@
+package com.ruoyi.integration.iotda.utils.api;
+
+import com.huaweicloud.sdk.core.auth.AbstractCredentials;
+import com.huaweicloud.sdk.core.auth.ICredential;
+import com.huaweicloud.sdk.core.exception.ConnectionException;
+import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
+import com.huaweicloud.sdk.core.exception.ServiceResponseException;
+import com.huaweicloud.sdk.iotda.v5.IoTDAClient;
+import com.huaweicloud.sdk.iotda.v5.model.*;
+import com.ruoyi.common.core.utils.CodeGenerateUtils;
+import com.ruoyi.common.core.utils.uuid.UUID;
+import com.ruoyi.integration.iotda.builder.IotBuilder;
+import com.ruoyi.integration.iotda.config.IotAccountConfig;
+import com.ruoyi.integration.iotda.config.IotDAConfig;
+import com.ruoyi.integration.iotda.constant.IotConstant;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * iot接口调用工具类
+ */
+@Slf4j
+@Component
+public class IotInterfaceUtil {
+
+ private static final String dataFormat = "json";
+ private static final String protocolType = "HTTPS";
+ private static final String deviceType = "充电桩";
+ private static final String serviceType = "直流充电";
+
+ @Autowired
+ private IotBuilder iotBuilder;
+ @Autowired
+ private IotDAConfig iotDAConfig;
+
+ private String decodeUrl(String url) {
+ return MessageFormat.format(url, iotDAConfig.getProjectId());
+ }
+
+ public static void main(String[] args) {
+
+ }
+
+ /**
+ * 创建产品
+ * @param productId 产品ID,使用UUID.randomUUID().toString()生成 需替换特殊字符 "-" 为空
+ * @param productName 产品名称
+ * @return CreateProductResponse
+ */
+ public CreateProductResponse createProductSolution(String productId,String productName) {
+ CreateProductRequest request = new CreateProductRequest();
+ AddProduct body = new AddProduct();
+ List<ServiceCapability> listbodyServiceCapabilities = new ArrayList<>();
+ listbodyServiceCapabilities.add(
+ new ServiceCapability()
+ .withServiceId(CodeGenerateUtils.generateVolumeSn())
+ .withServiceType(serviceType)
+ );
+ body.withServiceCapabilities(listbodyServiceCapabilities);
+ body.withDataFormat(dataFormat);
+ body.withProtocolType(protocolType);
+ body.withDeviceType(deviceType);
+ body.withName(productName);
+ body.withProductId(productId);
+ request.withBody(body);
+ request.withInstanceId(iotDAConfig.getInstanceId());
+ try {
+ CreateProductResponse response = iotBuilder.buildIot().createProduct(request);
+ log.info("创建产品:{}",response.toString());
+ return response;
+ } catch (ConnectionException | RequestTimeoutException e) {
+ e.printStackTrace();
+ } catch (ServiceResponseException e) {
+ e.printStackTrace();
+ log.info(String.valueOf(e.getHttpStatusCode()));
+ log.info(e.getRequestId());
+ log.info(e.getErrorCode());
+ log.info(e.getErrorMsg());
+ }
+ return null;
+ }
+
+
+ /**
+ * 删除产品
+ * @param productId 产品ID,使用UUID.randomUUID().toString()生成 需替换特殊字符 "-" 为空
+ * @return DeleteProductResponse
+ */
+ public DeleteProductResponse deleteProductRequest(String productId) {
+ DeleteProductRequest request = new DeleteProductRequest();
+ request.withProductId(productId);
+ request.withInstanceId(iotDAConfig.getInstanceId());
+ try {
+ DeleteProductResponse response = iotBuilder.buildIot().deleteProduct(request);
+ log.info("删除产品:{}",response.toString());
+ return response;
+ } catch (ConnectionException e) {
+ e.printStackTrace();
+ } catch (RequestTimeoutException e) {
+ e.printStackTrace();
+ } catch (ServiceResponseException e) {
+ e.printStackTrace();
+ System.out.println(e.getHttpStatusCode());
+ System.out.println(e.getRequestId());
+ System.out.println(e.getErrorCode());
+ System.out.println(e.getErrorMsg());
+ }
+ return null;
+ }
+
+ /**
+ * 创建设备
+ * @param productId 产品ID
+ * @param nodeId 设备标识码 通常使用IMEI、MAC地址或Serial No作为node_id
+ * @param deviceId 设备ID 使用CodeGenerateUtils.generateVolumeSn()
+ * @param deviceName 设备名称
+ * @param description 设备描述
+ * @return AddDeviceResponse
+ */
+ public AddDeviceResponse addDeviceRequest(String productId,String nodeId,String deviceId,String deviceName,String description) {
+ AddDeviceRequest request = new AddDeviceRequest();
+ AddDevice body = new AddDevice();
+ body.withDeviceId(deviceId);
+ body.withNodeId(nodeId);
+ body.withDeviceName(deviceName);
+ body.withProductId(productId);
+ body.withDescription(description);
+ request.withBody(body);
+ try {
+ AddDeviceResponse response = iotBuilder.buildIot().addDevice(request);
+ log.info("创建设备:{}",response.toString());
+ return response;
+ } catch (ConnectionException e) {
+ e.printStackTrace();
+ } catch (RequestTimeoutException e) {
+ e.printStackTrace();
+ } catch (ServiceResponseException e) {
+ e.printStackTrace();
+ System.out.println(e.getHttpStatusCode());
+ System.out.println(e.getRequestId());
+ System.out.println(e.getErrorCode());
+ System.out.println(e.getErrorMsg());
+ }
+ return null;
+ }
+
+ /**
+ * 修改设备
+ * @param deviceId 设备ID 使用已有设备编号
+ * @param deviceName 设备名称
+ * @param description 设备描述
+ * @return UpdateDeviceResponse
+ */
+ public UpdateDeviceResponse updateDeviceRequest(String deviceId,String deviceName,String description) {
+ UpdateDeviceRequest request = new UpdateDeviceRequest();
+ request.withDeviceId(deviceId);
+ UpdateDevice body = new UpdateDevice();
+ body.withDescription(description);
+ body.withDeviceName(deviceName);
+ request.withBody(body);
+ try {
+ UpdateDeviceResponse response = iotBuilder.buildIot().updateDevice(request);
+ log.info("修改设备:{}",response.toString());
+ return response;
+ } catch (ConnectionException e) {
+ e.printStackTrace();
+ } catch (RequestTimeoutException e) {
+ e.printStackTrace();
+ } catch (ServiceResponseException e) {
+ e.printStackTrace();
+ System.out.println(e.getHttpStatusCode());
+ System.out.println(e.getRequestId());
+ System.out.println(e.getErrorCode());
+ System.out.println(e.getErrorMsg());
+ }
+ return null;
+ }
+
+ /**
+ * 冻结设备
+ * @param deviceId 设备ID 使用已有设备编号
+ * @return FreezeDeviceResponse
+ */
+ public FreezeDeviceResponse freezeDeviceRequest(String deviceId) {
+ FreezeDeviceRequest request = new FreezeDeviceRequest();
+ request.withDeviceId(deviceId);
+ try {
+ FreezeDeviceResponse response = iotBuilder.buildIot().freezeDevice(request);
+ log.info("冻结设备:{}",response.toString());
+ return response;
+ } catch (ConnectionException e) {
+ e.printStackTrace();
+ } catch (RequestTimeoutException e) {
+ e.printStackTrace();
+ } catch (ServiceResponseException e) {
+ e.printStackTrace();
+ System.out.println(e.getHttpStatusCode());
+ System.out.println(e.getRequestId());
+ System.out.println(e.getErrorCode());
+ System.out.println(e.getErrorMsg());
+ }
+ return null;
+ }
+
+ /**
+ * 解冻设备
+ * @param deviceId 设备ID 使用已有设备编号
+ * @return UnfreezeDeviceResponse
+ */
+ public UnfreezeDeviceResponse unfreezeDeviceRequest(String deviceId) {
+ UnfreezeDeviceRequest request = new UnfreezeDeviceRequest();
+ request.withDeviceId(deviceId);
+ try {
+ UnfreezeDeviceResponse response = iotBuilder.buildIot().unfreezeDevice(request);
+ log.info("解冻设备:{}",response.toString());
+ return response;
+ } catch (ConnectionException e) {
+ e.printStackTrace();
+ } catch (RequestTimeoutException e) {
+ e.printStackTrace();
+ } catch (ServiceResponseException e) {
+ e.printStackTrace();
+ System.out.println(e.getHttpStatusCode());
+ System.out.println(e.getRequestId());
+ System.out.println(e.getErrorCode());
+ System.out.println(e.getErrorMsg());
+ }
+ return null;
+ }
+
+ /**
+ * 删除设备
+ * @param deviceId 设备ID 使用已有设备编号
+ * @return DeleteDeviceResponse
+ */
+ public DeleteDeviceResponse deleteDeviceRequest(String deviceId) {
+ DeleteDeviceRequest request = new DeleteDeviceRequest();
+ request.withDeviceId(deviceId);
+ try {
+ DeleteDeviceResponse response = iotBuilder.buildIot().deleteDevice(request);
+ log.info("删除设备:{}",response.toString());
+ return response;
+ } catch (ConnectionException e) {
+ e.printStackTrace();
+ } catch (RequestTimeoutException e) {
+ e.printStackTrace();
+ } catch (ServiceResponseException e) {
+ e.printStackTrace();
+ System.out.println(e.getHttpStatusCode());
+ System.out.println(e.getRequestId());
+ System.out.println(e.getErrorCode());
+ System.out.println(e.getErrorMsg());
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
new file mode 100644
index 0000000..9b0d3b1
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -0,0 +1,13 @@
+package com.ruoyi.integration.iotda.utils.listener;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * iotda消息监听
+ */
+@Slf4j
+@Component
+public class IotMessageListener {
+
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java
new file mode 100644
index 0000000..6e386cb
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java
@@ -0,0 +1,13 @@
+package com.ruoyi.integration.iotda.utils.produce;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * iotda消息发送
+ */
+@Slf4j
+@Component
+public class IotMessageProduce {
+
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/time/UtcToSeconds.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/time/UtcToSeconds.java
new file mode 100644
index 0000000..0206b39
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/time/UtcToSeconds.java
@@ -0,0 +1,19 @@
+package com.ruoyi.integration.iotda.utils.time;
+
+import java.time.Instant;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
+
+public class UtcToSeconds {
+ public static long convertToSeconds(String utcTimeString) {
+ Instant instant = Instant.parse(utcTimeString);
+ long seconds = instant.atOffset(ZoneOffset.UTC).toEpochSecond();
+ return seconds;
+ }
+
+ public static void main(String[] args) {
+ String utcTimeString = "2023-04-01T12:00:00Z";
+ long seconds = convertToSeconds(utcTimeString);
+ System.out.println("Seconds since epoch: " + seconds);
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/token/IotTokenUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/token/IotTokenUtil.java
new file mode 100644
index 0000000..c2a2428
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/token/IotTokenUtil.java
@@ -0,0 +1,72 @@
+package com.ruoyi.integration.iotda.utils.token;
+
+import com.huaweicloud.sdk.core.exception.ConnectionException;
+import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
+import com.huaweicloud.sdk.core.exception.ServiceResponseException;
+import com.huaweicloud.sdk.iam.v3.model.*;
+import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.integration.iotda.constant.IotConstant;
+import com.ruoyi.integration.iotda.builder.IotBuilder;
+import com.ruoyi.integration.iotda.config.IotAccountConfig;
+import com.ruoyi.integration.iotda.utils.time.UtcToSeconds;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+@Slf4j
+@Component
+public class IotTokenUtil {
+ @Autowired
+ private IotBuilder iotBuilder;
+ @Autowired
+ private IotAccountConfig accountConfig;
+ @Autowired
+ private RedisService redisService;
+
+ /**
+ * 获取token
+ * @return
+ */
+ public KeystoneCreateUserTokenByPasswordResponse getToken() {
+ KeystoneCreateUserTokenByPasswordRequest request = new KeystoneCreateUserTokenByPasswordRequest();
+ KeystoneCreateUserTokenByPasswordRequestBody body = new KeystoneCreateUserTokenByPasswordRequestBody();
+ PwdPasswordUserDomain domainUser = new PwdPasswordUserDomain();
+ domainUser.withName(accountConfig.getHostAccount());
+ PwdPasswordUser userPassword = new PwdPasswordUser();
+ userPassword.withDomain(domainUser)
+ .withName(accountConfig.getIamAccount())
+ .withPassword(accountConfig.getIamPassword());
+ PwdPassword passwordIdentity = new PwdPassword();
+ passwordIdentity.withUser(userPassword);
+ List<PwdIdentity.MethodsEnum> listIdentityMethods = new ArrayList<>();
+ listIdentityMethods.add(PwdIdentity.MethodsEnum.fromValue(IotConstant.PASSWORD));
+ PwdIdentity identityAuth = new PwdIdentity();
+ identityAuth.withMethods(listIdentityMethods)
+ .withPassword(passwordIdentity);
+ PwdAuth authbody = new PwdAuth();
+ authbody.withIdentity(identityAuth);
+ body.withAuth(authbody);
+ request.withBody(body);
+ try {
+ KeystoneCreateUserTokenByPasswordResponse response = iotBuilder.buildIam().keystoneCreateUserTokenByPassword(request);
+ redisService.setCacheObject(IotConstant.IOT_TOKEN, response.getXSubjectToken(), UtcToSeconds.convertToSeconds(response.getToken().getExpiresAt()), TimeUnit.SECONDS);
+ return response;
+ } catch (ConnectionException e) {
+ e.printStackTrace();
+ } catch (RequestTimeoutException e) {
+ e.printStackTrace();
+ } catch (ServiceResponseException e) {
+ e.printStackTrace();
+ System.out.println(e.getHttpStatusCode());
+ System.out.println(e.getRequestId());
+ System.out.println(e.getErrorCode());
+ System.out.println(e.getErrorMsg());
+ }
+ return null;
+ }
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
index 5f4fb2a..9535840 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
@@ -1,4 +1,5 @@
package com.ruoyi.order.controller;
+import java.time.LocalDateTime;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -18,6 +19,7 @@
import com.ruoyi.order.service.TExchangeOrderService;
import com.ruoyi.order.service.TShoppingOrderService;
import com.ruoyi.order.service.TVipOrderService;
+import com.ruoyi.other.api.dto.ExchangeDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.util.StringUtils;
@@ -144,9 +146,40 @@
return R.ok(strings);
}
-
-
-
+
+
+
+
+ @PostMapping("/getById")
+ public R<Long> getById(@RequestParam("goodId") Integer goodId,@RequestParam("userId") Long userId){
+ return R.ok(exchangeOrderService.lambdaQuery().eq(TExchangeOrder::getGoodsId,goodId).eq(TExchangeOrder::getAppUserId,userId).ne(TExchangeOrder::getStatus,4).count());
+ }
+
+ @PostMapping("/create")
+ public R<Long> exchangeCreate(@RequestBody ExchangeDto exchangeDto){
+ TExchangeOrder tExchangeOrder = new TExchangeOrder();
+ tExchangeOrder.setCode("");
+ tExchangeOrder.setAppUserId(exchangeDto.getUserId());
+ tExchangeOrder.setOrderType(0);
+ tExchangeOrder.setGoodsId(0);
+ tExchangeOrder.setCouponId(0);
+ tExchangeOrder.setPurchaseQuantity(0);
+ tExchangeOrder.setAppUserAddressId(0L);
+ tExchangeOrder.setPoints(0);
+ tExchangeOrder.setRemark("");
+ tExchangeOrder.setStatus(0);
+ tExchangeOrder.setExpressCompany("");
+ tExchangeOrder.setExpressNumber("");
+ tExchangeOrder.setConsignerId(0);
+ tExchangeOrder.setConsignerTime(LocalDateTime.now());
+ tExchangeOrder.setReceivingTime(LocalDateTime.now());
+ tExchangeOrder.setCancellationTime(LocalDateTime.now());
+ tExchangeOrder.setCancellationId(0);
+ tExchangeOrder.setCreateTime(LocalDateTime.now());
+ tExchangeOrder.setDelFlag(false);
+ return R.ok();
+
+ }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
index 4dc48ac..149b813 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
@@ -16,6 +16,7 @@
import com.ruoyi.other.service.TActivityService;
import com.ruoyi.other.service.TCouponService;
import com.ruoyi.other.service.TGoodsService;
+import com.ruoyi.system.api.domain.SysUser;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@@ -24,6 +25,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@@ -149,6 +151,7 @@
}
return R.ok(list);
}
+
/**
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java
index f612c11..6b744dc 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java
@@ -1,19 +1,24 @@
package com.ruoyi.other.controller;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.api.dto.EnterpriseQuery;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+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.TEnterpriseUserApplication;
+import com.ruoyi.other.query.PassDto;
import com.ruoyi.other.service.TEnterpriseUserApplicationService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
-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 javax.annotation.Resource;
+import java.util.List;
/**
* <p>
@@ -29,6 +34,8 @@
private final TEnterpriseUserApplicationService enterpriseUserApplicationService;
private final TokenService tokenService;
+ @Resource
+ private AppUserClient appUserClient;
@Autowired
public TEnterpriseUserApplicationController(TEnterpriseUserApplicationService enterpriseUserApplicationService, TokenService tokenService) {
@@ -40,7 +47,7 @@
* 添加计费策略管理
*/
@Log(title = "添加集团用户申请", businessType = BusinessType.INSERT)
- @ApiOperation(tags = {"小程序-计费策略"},value = "添加集团用户申请")
+ @ApiOperation(tags = {"小程序-集团用户"},value = "添加集团用户申请")
@PostMapping(value = "/add")
public AjaxResult<Boolean> add(@Validated @RequestBody TEnterpriseUserApplication dto) {
// 用户id
@@ -48,14 +55,53 @@
return AjaxResult.ok(enterpriseUserApplicationService.save(dto));
}
+ @Log(title = "添加集团用户申请", businessType = BusinessType.INSERT)
+ @ApiOperation(tags = {"后台-申请表单-集团用户"},value = "后台添加集团用户申请")
+ @PostMapping(value = "/back/add")
+ public AjaxResult<Boolean> backAdd(@Validated @RequestBody TEnterpriseUserApplication dto) {
+ // 用户id
+ return AjaxResult.ok(enterpriseUserApplicationService.save(dto));
+ }
@ApiOperation(tags = {"后台-申请表单-集团用户"},value = "集团用户列表")
@PostMapping(value = "/page")
- public AjaxResult<Boolean> page(@RequestBody TEnterpriseUserApplication dto) {
+ public R<Page<TEnterpriseUserApplication>> page(EnterpriseQuery enterpriseQuery) {
// 用户id
- dto.setAppUserId(tokenService.getLoginUserApplet().getUserId());
- return AjaxResult.ok(enterpriseUserApplicationService.save(dto));
+ if (enterpriseQuery.getPhone()!=null) {
+ List<Long> userIds = appUserClient.getUserIdsByPhone(enterpriseQuery.getPhone()).getData();
+ if (userIds.isEmpty()){
+ return R.ok();
+ }
+ Page<TEnterpriseUserApplication> page = enterpriseUserApplicationService.lambdaQuery().in(TEnterpriseUserApplication::getAppUserId, userIds).page(Page.of(enterpriseQuery.getPageCurr(), enterpriseQuery.getPageSize()));
+ return R.ok(page);
+ }else {
+ Page<TEnterpriseUserApplication> page = enterpriseUserApplicationService.lambdaQuery().page(Page.of(enterpriseQuery.getPageCurr(), enterpriseQuery.getPageSize()));
+ return R.ok(page);
+ }
+ }
+
+
+ @ApiOperation(tags = {"后台-申请表单-集团用户"},value = "备注")
+ @PostMapping(value = "/remark")
+ public AjaxResult pass(@RequestBody PassDto passDto) {
+ // 用户id
+ TEnterpriseUserApplication byId = enterpriseUserApplicationService.getById(passDto.getId());
+ byId.setRemark(passDto.getRemark());
+
+ enterpriseUserApplicationService.updateById(byId);
+ return AjaxResult.success();
+ }
+
+ @ApiOperation(tags = {"后台-申请表单-集团用户"},value = "备注")
+ @DeleteMapping(value = "/delete")
+ public AjaxResult delete(String ids) {
+ String[] split = ids.split(",");
+ for (String s : split) {
+ enterpriseUserApplicationService.removeById(s);
+ }
+ return AjaxResult.success();
+
}
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
index 29dd21b..e62316b 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
@@ -1,12 +1,18 @@
package com.ruoyi.other.controller;
+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.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.OrderClient;
import com.ruoyi.other.api.domain.TActivity;
import com.ruoyi.other.api.domain.TGoods;
import com.ruoyi.other.api.dto.AdvertisingDTO;
+import com.ruoyi.other.api.dto.ExchangeDto;
import com.ruoyi.other.api.dto.GoodsDTO;
import com.ruoyi.other.service.TActivityService;
import com.ruoyi.other.service.TAdvertisingService;
@@ -14,6 +20,8 @@
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
/**
* <p>
@@ -30,6 +38,12 @@
private TGoodsService goodsService;
@Autowired
private TActivityService activityService;
+ @Resource
+ private TokenService tokenService;
+ @Resource
+ private AppUserClient appUserClient;
+ @Resource
+ private OrderClient orderClient;
@@ -62,7 +76,7 @@
@GetMapping("/getInfo")
- @ApiOperation(tags = {"管理后台-商品管理"},value = "商品查看详情")
+ @ApiOperation(tags = {"管理后台-商品管理","小程序-兑换商城"},value = "商品查看详情")
public AjaxResult<TGoods> getInfo(Integer id) {
return AjaxResult.ok(goodsService.getById(id));
}
@@ -74,6 +88,45 @@
public AjaxResult<PageInfo<TGoods>> pageList(@RequestBody GoodsDTO dto) {
return AjaxResult.ok(goodsService.pageList(dto));
}
+
+
+ @ApiOperation(tags = {"小程序-兑换商城"},value = "商品列表分页查询")
+ @PostMapping(value = "/app/pageList")
+ public AjaxResult<PageInfo<TGoods>> apppageList(BasePage basePage) {
+ return AjaxResult.ok(goodsService.pageList1(basePage));
+ }
+
+ @ApiOperation(tags = {"小程序-兑换商城"},value = "兑换商品")
+ @PostMapping(value = "/app/shop")
+ public AjaxResult<PageInfo<TGoods>> shop(@RequestBody ExchangeDto exchangeDto) {
+ //查询当前商品信息
+ TGoods good = goodsService.getById(exchangeDto.getGoodId());
+
+ //检查当前用户积分是否够
+ Long userId = tokenService.getLoginUserApplet().getUserId();
+ TAppUser user = appUserClient.getUserById(userId).getData();
+ if (user.getPoints()<good.getRedeemPoints()){
+ return AjaxResult.error("当前用户积分不足");
+ }
+ //检查当前用户是否到达兑换上限
+ Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId).getData();
+ if (good.getLimitExchangeTimes()!=-1&&count>=good.getLimitExchangeTimes()){
+ return AjaxResult.error("当前用户已到达兑换上限");
+ }
+ //生成积分兑换成功的订单
+ orderClient.exchangeCreate(exchangeDto);
+
+ //如果是优惠卷,赠送优惠卷给用户
+
+
+
+
+ //生成消耗积分的记录
+ return AjaxResult.success();
+
+
+ }
+
/**
* 根据id获取商品信息
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TGoodsMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TGoodsMapper.java
index 2f73928..491b8ad 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TGoodsMapper.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TGoodsMapper.java
@@ -20,5 +20,6 @@
public interface TGoodsMapper extends BaseMapper<TGoods> {
List<TGoods> pageList(@Param("pageInfo")PageInfo<TGoods> pageInfo, @Param("req") GoodsDTO dto);
+ List<TGoods> pageList1(@Param("pageInfo")PageInfo<TGoods> pageInfo);
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/query/PassDto.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/query/PassDto.java
new file mode 100644
index 0000000..70cad83
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/query/PassDto.java
@@ -0,0 +1,13 @@
+package com.ruoyi.other.query;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @date 2024/8/20 18:25
+ */
+@Data
+public class PassDto {
+ Integer id;
+ String remark;
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TGoodsService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TGoodsService.java
index 99d40ec..d37be56 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TGoodsService.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TGoodsService.java
@@ -1,6 +1,7 @@
package com.ruoyi.other.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.web.page.BasePage;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.other.api.domain.TGoods;
import com.ruoyi.other.api.dto.GoodsDTO;
@@ -16,5 +17,6 @@
public interface TGoodsService extends IService<TGoods> {
PageInfo<TGoods> pageList(GoodsDTO dto);
+ PageInfo<TGoods> pageList1(BasePage basePage);
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java
index f0de342..7372668 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.other.service.impl;
+import com.ruoyi.common.core.web.page.BasePage;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.order.api.feignClient.OrderClient;
import com.ruoyi.other.api.domain.TGoods;
@@ -55,4 +56,37 @@
pageInfo.setRecords(list);
return pageInfo;
}
+ @Override
+ public PageInfo<TGoods> pageList1(BasePage basePage) {
+ GoodsDTO dto = new GoodsDTO();
+ dto.setType(2);
+ dto.setStatus(1);
+ dto.setPageCurr(basePage.getPageCurr());
+ dto.setPageSize(basePage.getPageSize());
+ PageInfo<TGoods> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
+ List<TGoods> list = this.baseMapper.pageList1(pageInfo);
+
+ StringBuilder stringBuilder = new StringBuilder();
+ for (TGoods temp : list) {
+ stringBuilder.append(temp.getId()).append(",");
+ }
+ if (StringUtils.hasLength(stringBuilder)){
+ // 去除最后一个字符
+ stringBuilder.deleteCharAt(stringBuilder.length()-1);
+ }
+ if (list.isEmpty()) {
+ pageInfo.setRecords(list);
+ return pageInfo;
+ }
+ String string = stringBuilder.toString();
+ // 订单号加上商品类型
+ String res = string+"-"+dto.getType();
+
+ List<Integer> data = orderClient.getSalesCountByGoodsId(res).getData();
+ for (int i = 0; i < list.size(); i++) {
+ list.get(i).setSalesCount(data.get(i));
+ }
+ pageInfo.setRecords(list);
+ return pageInfo;
+ }
}
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TAdvertisingMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TAdvertisingMapper.xml
index d3e5864..bc87ba2 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TAdvertisingMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TAdvertisingMapper.xml
@@ -24,16 +24,16 @@
<select id="pageList" resultType="com.ruoyi.other.api.domain.TAdvertising">
select * from t_advertising
<where>
- <if test="req.name != null and req.name != ''">
- AND `name` LIKE concat('%',#{req.name}, '%')
+ <if test="req.title != null and req.title != ''">
+ AND `name` LIKE concat('%',#{req.title}, '%')
</if>
- <if test="req.state == 1">
+ <if test="req.startState == 1">
AND start_time >= NOW()
</if>
- <if test="req.state == 2">
+ <if test="req.startState == 2">
AND start_time <= NOW() AND end_time >= NOW()
</if>
- <if test="req.state == 3">
+ <if test="req.startState == 3">
AND end_time <= NOW()
</if>
AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml
index a602e33..552b98c 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml
@@ -50,4 +50,14 @@
ORDER BY create_time DESC
</select>
+ <select id="pageList1" resultType="com.ruoyi.other.api.domain.TGoods">
+ select * from t_goods
+ <where>
+ AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+ </where>
+ ORDER BY
+ CASE WHEN `inventory` = 0 THEN 0 ELSE 1 END DESC,
+ `redeem_points` ASC;
+ </select>
+
</mapper>
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mybatis-config.xml b/ruoyi-service/ruoyi-other/src/main/resources/mybatis-config.xml
index 7d487eb..53c5587 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mybatis-config.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mybatis-config.xml
@@ -10,7 +10,7 @@
<setting name="cacheEnabled" value="true"/>
<!-- 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。默认 false -->
<!-- <setting name="lazyLoadingEnabled" value="true"/> -->
- <setting name="mapUnderscoreToCamelCase" value="false"/><!--是否将map下划线方式转为驼峰式命名-->
+ <setting name="mapUnderscoreToCamelCase" value="true"/><!--是否将map下划线方式转为驼峰式命名-->
<!-- 当开启时,任何方法的调用都会加载该对象的所有属性。默认 false,可通过select标签的 fetchType来覆盖-->
<!-- <setting name="aggressiveLazyLoading" value="false"/>-->
<!-- Mybatis 创建具有延迟加载能力的对象所用到的代理工具,默认JAVASSIST -->
--
Gitblit v1.7.1