From e9d451862a9f9458c82f18d7bd2c2cfdac44ac0b Mon Sep 17 00:00:00 2001 From: zhibing.pu <393733352@qq.com> Date: 星期四, 22 八月 2024 14:01:11 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 28 ++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/PointDetailUtil.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java | 6 ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java | 5 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java | 3 ruoyi-service/ruoyi-chargingPile/pom.xml | 9 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java | 7 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java | 10 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java | 64 ++++- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java | 46 ++-- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java | 5 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java | 78 ++++++- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 11 ruoyi-service/ruoyi-chargingPile/src/main/resources/template/充电桩申请记录.xlsx | 0 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/GrantCouponDto.java | 9 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/pojo/AppletUserLogin.java | 22 ++ ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java | 8 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 6 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java | 6 ruoyi-api/ruoyi-api-order/pom.xml | 4 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/OrderCodeUtil.java | 26 ++ ruoyi-api/ruoyi-api-other/pom.xml | 4 ruoyi-api/ruoyi-api-payment/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 2 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/TApplyChargingPileExportDto.java | 113 ++++++++++ ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/ExchangeDto.java | 7 ruoyi-api/ruoyi-api-chargingPile/src/main/resources/template/充电桩申请记录.xlsx | 0 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java | 17 /dev/null | 18 - ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TGoods.java | 3 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java | 6 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java | 64 +++++ ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 3 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java | 37 ++ 34 files changed, 514 insertions(+), 119 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/GrantCouponDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/GrantCouponDto.java index 7db26de..187a099 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/GrantCouponDto.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/GrantCouponDto.java @@ -9,6 +9,8 @@ @Data @ApiModel("管理后台发放优惠券DTO") public class GrantCouponDto { + @ApiModelProperty("类型 1按用户标签 2按用户所在地 3自定义发放") + private Integer type; @ApiModelProperty("用户ids 逗号分隔") private String userIds; @ApiModelProperty("优惠券id") @@ -17,4 +19,11 @@ private Integer waysToObtain; @ApiModelProperty("结束时间 前端忽略") private LocalDateTime endTime; + @ApiModelProperty("标签ids") + private String tags; + + @ApiModelProperty("市code 多个逗号分割") + private String cityCode; + @ApiModelProperty("省code 多个逗号分割") + private String provinceCode; } diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 40f7d82..a0abd5c 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -2,4 +2,5 @@ com.ruoyi.account.api.factory.AppCouponFallbackFactory com.ruoyi.account.api.factory.AppUserCarFallbackFactory com.ruoyi.account.api.factory.AppUserIntegralChangeFallbackFactory -com.ruoyi.account.api.factory.AppUserAddressFallbackFactory \ No newline at end of file +com.ruoyi.account.api.factory.AppUserAddressFallbackFactory +com.ruoyi.account.api.factory.AppUserVipDetailFallbackFactory \ No newline at end of file diff --git "a/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/template/\345\205\205\347\224\265\346\241\251\347\224\263\350\257\267\350\256\260\345\275\225.xlsx" "b/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/template/\345\205\205\347\224\265\346\241\251\347\224\263\350\257\267\350\256\260\345\275\225.xlsx" new file mode 100644 index 0000000..70d48b0 --- /dev/null +++ "b/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/template/\345\205\205\347\224\265\346\241\251\347\224\263\350\257\267\350\256\260\345\275\225.xlsx" Binary files differ diff --git a/ruoyi-api/ruoyi-api-order/pom.xml b/ruoyi-api/ruoyi-api-order/pom.xml index 687c8a0..6bdc239 100644 --- a/ruoyi-api/ruoyi-api-order/pom.xml +++ b/ruoyi-api/ruoyi-api-order/pom.xml @@ -28,6 +28,10 @@ </exclusion> </exclusions> </dependency> + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-api-other</artifactId> + </dependency> </dependencies> 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 04ea275..8f689c3 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 @@ -1,13 +1,10 @@ package com.ruoyi.order.api.factory; import com.ruoyi.common.core.domain.R; -import com.ruoyi.order.api.feignClient.ChargingOrderClient; +import com.ruoyi.common.core.dto.ExchangeDto; 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; @@ -43,7 +40,7 @@ } @Override - public R<Long> getExchangeById(Integer goodsIds, Long userId) { + public R<Long> getExchangeById(Integer goodsIds, Long userId,Integer goodType) { 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 ff507cd..0d8fb3e 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 @@ -2,14 +2,11 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; -import com.ruoyi.order.api.factory.ChargingOrderFallbackFactory; +import com.ruoyi.common.core.dto.ExchangeDto; 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; @@ -35,7 +32,8 @@ public R<List<String>> getCodeByOrderId(String goodsIds); //查询已兑换的订单数 @PostMapping("/t-exchange-order/getById") - public R<Long> getExchangeById(@RequestParam("goodId") Integer goodId,@RequestParam("userId") Long userId); + public R<Long> getExchangeById(@RequestParam("goodId") Integer goodId,@RequestParam("userId") Long userId,@RequestParam("goodType") Integer goodType); + @PostMapping("/t-exchange-order/create") public R<Long> exchangeCreate(@RequestBody ExchangeDto exchangeDto); 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 deleted file mode 100644 index e0bdeb2..0000000 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ExchangeDto.java +++ /dev/null @@ -1,18 +0,0 @@ -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/pom.xml b/ruoyi-api/ruoyi-api-other/pom.xml index 0e43900..df1d49e 100644 --- a/ruoyi-api/ruoyi-api-other/pom.xml +++ b/ruoyi-api/ruoyi-api-other/pom.xml @@ -28,6 +28,10 @@ </exclusion> </exclusions> </dependency> + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-api-account</artifactId> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TGoods.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TGoods.java index 2e32a95..43fa2a1 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TGoods.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TGoods.java @@ -103,5 +103,8 @@ @ApiModelProperty(value = "销量") @TableField(exist = false) private Integer salesCount; + @ApiModelProperty(value = "1商品2优惠卷") + @TableField(exist = false) + private Integer goodType; } 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 index 9c3969d..d0d3c50 100644 --- 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 @@ -1,4 +1,4 @@ -package com.ruoyi.other.api.dto; +package com.ruoyi.common.core.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -14,5 +14,10 @@ @ApiModelProperty(hidden = true) Long userId; + @ApiModelProperty("1商品2优惠卷") + Integer goodType; + @ApiModelProperty(hidden = true) + Integer point; + } diff --git a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java index bad2cf8..6761b58 100644 --- a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java @@ -46,6 +46,11 @@ public void ack() { } + + @Override + public void close(String outTradeNo) { + + } }; } } diff --git a/ruoyi-api/ruoyi-api-payment/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-payment/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 8c90e6a..fe686fc 100644 --- a/ruoyi-api/ruoyi-api-payment/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-payment/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1 @@ -com.ruoyi.payment.api.factory.ChargingOrderFallbackFactory \ No newline at end of file +com.ruoyi.payment.api.factory.WxPaymentFallbackFactory \ No newline at end of file diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/OrderCodeUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/OrderCodeUtil.java new file mode 100644 index 0000000..145a2a6 --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/OrderCodeUtil.java @@ -0,0 +1,26 @@ +package com.ruoyi.common.core.utils; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Random; + +public class OrderCodeUtil { + + public static String getOrderCode(String code){ + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); + String formattedDate = now.format(formatter); + + // 四位随机数 + Random random = new Random(); + int randomNumber = random.nextInt(9999); // 生成0-9998之间的随机数 + String formattedRandomNumber = String.format("%04d", randomNumber); // 补齐到4位 + + // 拼接日期和随机数 + return code+formattedDate + formattedRandomNumber; + } + public static void main(String[] args) { + // 测试方法 + System.out.println(getOrderCode("DH")); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java index 7b05f57..f903e2e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java @@ -192,10 +192,12 @@ roleInfoVo.setMenus(menusId); roleInfoVo.setRemark(role.getRemark()); List<Integer> siteIds = roleSiteClient.getSiteIds(role.getRoleId()).getData(); - List<Site> sites = siteClient.getSiteByIds(siteIds).getData(); - List<String> siteNames = sites.stream().map(Site::getName).collect(Collectors.toList()); - roleInfoVo.setSiteNames(siteNames); - roleInfoVo.setSiteIds(siteIds); + if(null != siteIds && siteIds.size() > 0){ + List<Site> sites = siteClient.getSiteByIds(siteIds).getData(); + List<String> siteNames = sites.stream().map(Site::getName).collect(Collectors.toList()); + roleInfoVo.setSiteNames(siteNames); + roleInfoVo.setSiteIds(siteIds); + } return AjaxResult.success(roleInfoVo); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/pojo/AppletUserLogin.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/pojo/AppletUserLogin.java new file mode 100644 index 0000000..dc7e36b --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/pojo/AppletUserLogin.java @@ -0,0 +1,22 @@ +package com.ruoyi.account.ali.pojo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +@Data +@ApiModel(value = "支付宝小程序登录") +public class AppletUserLogin implements Serializable { + + @ApiModelProperty(value = "auth_code") + @NotBlank(message = "auth_code不能为空") + private String code; + + @ApiModelProperty(value = "获取用户信息加密串") + @NotBlank(message = "获取用户信息加密串不能为空") + private String token; + +} diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java index 8a60f08..a31fb9e 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java @@ -5,8 +5,10 @@ import com.alipay.api.AlipayConfig; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipaySystemOauthTokenRequest; +import com.alipay.api.request.AlipayUserInfoShareRequest; import com.alipay.api.request.AlipayUserUserinfoShareRequest; import com.alipay.api.response.AlipaySystemOauthTokenResponse; +import com.alipay.api.response.AlipayUserInfoShareResponse; import com.alipay.api.response.AlipayUserUserinfoShareResponse; import com.ruoyi.account.ali.Constant.AliConstant; import com.ruoyi.account.ali.model.AliProperties; @@ -60,12 +62,12 @@ * 支付宝小程序授权获取手机号 * @return */ - public AlipayUserUserinfoShareResponse getUserInfo(String accessToken) { + public AlipayUserInfoShareResponse getUserInfo(String accessToken) { try { // 初始化SDK AlipayClient alipayClient = new DefaultAlipayClient(new AliAppletTools(aliProperties).getAlipayConfig(AliConstant.LOGIN_SERVER_URL)); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.user.userinfo.share - AlipayUserUserinfoShareRequest request = new AlipayUserUserinfoShareRequest(); + AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest(); //授权类接口执行API调用时需要带上accessToken return alipayClient.execute(request,accessToken); } catch (AlipayApiException e) { diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java index 408d79a..a437bb4 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java @@ -7,11 +7,13 @@ import com.alipay.api.diagnosis.DiagnosisUtils; import com.alipay.api.request.AlipaySystemOauthTokenRequest; import com.alipay.api.response.AlipaySystemOauthTokenResponse; +import com.alipay.api.response.AlipayUserInfoShareResponse; import com.alipay.api.response.AlipayUserUserinfoShareResponse; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.account.ali.Constant.AliConstant; import com.ruoyi.account.ali.model.AliProperties; +import com.ruoyi.account.ali.pojo.AppletUserLogin; import com.ruoyi.account.ali.tools.AliAppletTools; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.service.TAppUserService; @@ -23,10 +25,7 @@ import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; @@ -50,14 +49,14 @@ @Autowired private TAppUserService appUserService; @ApiOperation(value = "通过code获得openid",tags = {"支付宝小程序登录"}) - @GetMapping("/openIdByJsCode") - public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestParam(name = "code")@ApiParam(value = "code", required = true) String code){ - log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", code); + @PostMapping("/openIdByJsCode") + public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestBody AppletUserLogin appletUserLogin){ + log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", appletUserLogin.getCode()); // 登录 - AlipaySystemOauthTokenResponse response = new AliAppletTools(aliProperties).login(code); + AlipaySystemOauthTokenResponse response = new AliAppletTools(aliProperties).login(appletUserLogin.getCode()); if (response.isSuccess()) { // 获取用户信息 - AlipayUserUserinfoShareResponse userInfo = new AliAppletTools(aliProperties).getUserInfo(response.getAccessToken()); + AlipayUserInfoShareResponse userInfo = new AliAppletTools(aliProperties).getUserInfo(appletUserLogin.getToken()); log.info("获取支付宝用户信息:{}", userInfo); // 用户信息封装 return AjaxResult.ok(appUserService.aliLogin(response,userInfo)); diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java index 794abd9..0443f6c 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java @@ -1,12 +1,17 @@ package com.ruoyi.account.controller; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.account.api.dto.CouponListDto; import com.ruoyi.account.api.dto.GrantCouponDto; import com.ruoyi.account.api.model.TAppCoupon; +import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserCar; +import com.ruoyi.account.api.model.TAppUserTag; import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery; +import com.ruoyi.account.service.TAppUserService; +import com.ruoyi.account.service.TAppUserTagService; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; @@ -27,14 +32,17 @@ import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -49,6 +57,8 @@ public class TAppCouponController { @Autowired private TAppCouponService tAppCouponService; + @Resource + private OtherClient otherClient; @Autowired private TAppUserCarService appUserCarService; @@ -58,11 +68,11 @@ private ChargingPileClient chargingPileClient; @Autowired private ChargingOrderClient chargingOrderClient; - + @Resource private ChargingGunClient chargingGunClient; - - + + /** * 小程序扫一扫 添加车辆 * @param dto @@ -180,22 +190,66 @@ return R.ok(tAppCouponService.pagelist(couponId)); } + @Autowired + private TAppUserTagService appUserTagService; + @Autowired + private TAppUserService appUserService; + /** * 后台远程调用 给用户发放优惠券 */ @PostMapping("/grantCoupon") public R grantCoupon(@RequestBody GrantCouponDto dto){ List<TAppCoupon> res = new ArrayList<>(); - for (String s : dto.getUserIds().split(",")) { - TAppCoupon tAppCoupon = new TAppCoupon(); - tAppCoupon.setAppUserId(Long.valueOf(s)); - tAppCoupon.setCouponId(dto.getCouponId()); - tAppCoupon.setEndTime(dto.getEndTime()); - tAppCoupon.setWaysToObtain(dto.getWaysToObtain()); - tAppCoupon.setStatus(1); - res.add(tAppCoupon); + switch (dto.getType()){ + case 1: + // 根据标签ids 查询用户ids + List<Long> collect = appUserTagService.list(new QueryWrapper<TAppUserTag>() + .in("user_tag_id", Arrays.asList(dto.getTags().split(",")))) + .stream().map(TAppUserTag::getAppUserId).collect(Collectors.toList()); + for (Long l : collect) { + TAppCoupon tAppCoupon = new TAppCoupon(); + tAppCoupon.setAppUserId(l); + tAppCoupon.setCouponId(dto.getCouponId()); + tAppCoupon.setEndTime(dto.getEndTime()); + tAppCoupon.setWaysToObtain(dto.getWaysToObtain()); + tAppCoupon.setStatus(1); + res.add(tAppCoupon); + } + tAppCouponService.saveBatch(res); + break; + case 2: + // 根据市codes 查询用户ids + List<Long> collect1 = appUserService.list(new QueryWrapper<TAppUser>() + .in("city_code", Arrays.asList(dto.getCityCode().split(",")))) + .stream().map(TAppUser::getId).collect(Collectors.toList()); + for (Long l : collect1) { + TAppCoupon tAppCoupon = new TAppCoupon(); + tAppCoupon.setAppUserId(l); + tAppCoupon.setCouponId(dto.getCouponId()); + tAppCoupon.setEndTime(dto.getEndTime()); + tAppCoupon.setWaysToObtain(dto.getWaysToObtain()); + tAppCoupon.setStatus(1); + res.add(tAppCoupon); + } + tAppCouponService.saveBatch(res); + break; + case 3: + for (String s : dto.getUserIds().split(",")) { + TAppCoupon tAppCoupon = new TAppCoupon(); + tAppCoupon.setAppUserId(Long.valueOf(s)); + tAppCoupon.setCouponId(dto.getCouponId()); + tAppCoupon.setEndTime(dto.getEndTime()); + tAppCoupon.setWaysToObtain(dto.getWaysToObtain()); + tAppCoupon.setStatus(1); + res.add(tAppCoupon); + } + tAppCouponService.saveBatch(res); + break; } - tAppCouponService.saveBatch(res); + + + return R.ok(); } } 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 3e381b6..a3e6011 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 @@ -284,6 +284,9 @@ if (userListQueryDto.getUserTagId() != null){ String[] split = userListQueryDto.getUserTagId().split(","); userIds = appUserTagService.lambdaQuery().in(TAppUserTag::getUserTagId, Arrays.asList(split)).list().stream().map(TAppUserTag::getAppUserId).collect(Collectors.toList()); + if (userIds.isEmpty()){ + userIds.add(-1L); + } } //列表查询 Page<TAppUser> page = appUserService.lambdaQuery() @@ -305,9 +308,11 @@ //拿到最新的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())); diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java index 58cc16d..2fcec55 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java @@ -57,9 +57,9 @@ String openid = body.getOpenid(); String sessionKey = body.getSessionKey(); // 用户信息解密 数据验签 - if (StringUtils.isNotBlank(data.getSignature())) { - WxUtils.verifySignature(data.getRawData(), sessionKey, data.getSignature()); - } +// if (StringUtils.isNotBlank(data.getSignature())) { +// WxUtils.verifySignature(data.getRawData(), sessionKey, data.getSignature()); +// } AppletUserDecodeData appletUserDecodeData = WxUtils.encryptedData(data.getEncryptedData(), sessionKey, data.getIv()); appletUserDecodeData.setOpenId(openid); return AjaxResult.ok(appUserService.wxLogin(appletUserDecodeData)); diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java index fbed3d2..957d698 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java @@ -1,6 +1,7 @@ package com.ruoyi.account.service; import com.alipay.api.response.AlipaySystemOauthTokenResponse; +import com.alipay.api.response.AlipayUserInfoShareResponse; import com.alipay.api.response.AlipayUserUserinfoShareResponse; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.api.model.TAppUser; @@ -30,7 +31,7 @@ * @param userInfo * @return */ - Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response,AlipayUserUserinfoShareResponse userInfo); + Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response, AlipayUserInfoShareResponse userInfo); /** * 封装用户信息和token diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java index 7fd0ff1..c9fe14f 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.account.service.impl; import com.alipay.api.response.AlipaySystemOauthTokenResponse; +import com.alipay.api.response.AlipayUserInfoShareResponse; import com.alipay.api.response.AlipayUserUserinfoShareResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; @@ -65,7 +66,7 @@ } @Override - public Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response, AlipayUserUserinfoShareResponse userInfo) { + public Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response, AlipayUserInfoShareResponse userInfo) { // 通过手机号查询用户,是否已存在手动导入用户,包含微信用户 TAppUser appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class) .eq(TAppUser::getPhone, userInfo.getMobile()) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/PointDetailUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/PointDetailUtil.java index 3070952..bb183a1 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/PointDetailUtil.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/PointDetailUtil.java @@ -3,6 +3,7 @@ import com.ruoyi.account.api.model.TAppUserIntegralChange; import com.ruoyi.account.service.TAppUserIntegralChangeService; +import com.ruoyi.common.core.utils.OrderCodeUtil; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -14,7 +15,7 @@ public void addDetail(Integer old,Integer now,Integer type,Long userId,String extension,String code){ TAppUserIntegralChange tAppUserIntegralChange= new TAppUserIntegralChange(); - tAppUserIntegralChange.setCode(code); + tAppUserIntegralChange.setCode(OrderCodeUtil.getOrderCode("DH")); tAppUserIntegralChange.setAppUserId(userId); tAppUserIntegralChange.setChangeType(type); tAppUserIntegralChange.setHistoricalIntegral(old); diff --git a/ruoyi-service/ruoyi-chargingPile/pom.xml b/ruoyi-service/ruoyi-chargingPile/pom.xml index 1a16816..c214baa 100644 --- a/ruoyi-service/ruoyi-chargingPile/pom.xml +++ b/ruoyi-service/ruoyi-chargingPile/pom.xml @@ -15,6 +15,8 @@ </description> <dependencies> + + <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-api-account</artifactId> @@ -124,6 +126,13 @@ <artifactId>ruoyi-api-order</artifactId> </dependency> + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>easyexcel</artifactId> + <version>3.3.0</version> + <type>pom</type> + </dependency> + </dependencies> <build> 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 f9e97dc..fc6ee66 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 @@ -1,11 +1,17 @@ package com.ruoyi.chargingPile.controller; +import com.alibaba.excel.EasyExcelFactory; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.builder.ExcelWriterBuilder; +import com.alibaba.excel.write.metadata.WriteSheet; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.chargingPile.api.dto.ApplyChargingQuery; import com.ruoyi.chargingPile.api.dto.ApplyChargingRemarkDto; import com.ruoyi.chargingPile.api.model.TApplyChargingPile; +import com.ruoyi.chargingPile.dto.TApplyChargingPileExportDto; import com.ruoyi.chargingPile.service.TApplyChargingPileService; +import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.log.annotation.Log; @@ -13,8 +19,19 @@ import com.ruoyi.common.log.enums.OperatorType; import com.ruoyi.common.security.service.TokenService; import io.swagger.annotations.ApiOperation; +import org.apache.commons.codec.CharEncoding; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.net.URL; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; /** * <p> @@ -70,8 +87,51 @@ @ApiOperation(tags = {"后台-申请表单-申请建桩"},value = "导出") @PutMapping(value = "/export") - public R export() { - return R.ok(); + public R export(HttpServletResponse response) { + try { + response.setCharacterEncoding(Constants.UTF8); + response.setContentType("application/vnd.ms-excel"); + response.setHeader("Access-Control-Expose-Headers", "Content-disposition"); + response.setHeader("Content-Disposition", "attachment;filename=" + + URLEncoder.encode("申请建桩数据", CharEncoding.UTF_8) + ".xlsx"); + } catch (UnsupportedEncodingException e) { + return R.fail("excel导出失败!"); + } + try { + List<TApplyChargingPile> list = applyChargingPileService.lambdaQuery().last("limit 1").list(); + + List<TApplyChargingPileExportDto> exportDtos =new ArrayList<>(); + for (TApplyChargingPile tApplyChargingPile : list) { + TApplyChargingPileExportDto applyChargingPileExportDto = new TApplyChargingPileExportDto(); + BeanUtils.copyProperties(tApplyChargingPile,applyChargingPileExportDto); + applyChargingPileExportDto.setLandlordFrontIdCard(new URL(tApplyChargingPile.getLandlordFrontIdCard())); + applyChargingPileExportDto.setLandlordBackIdCard(new URL(tApplyChargingPile.getLandlordBackIdCard())); + applyChargingPileExportDto.setAgentBackIdCard(new URL(tApplyChargingPile.getAgentBackIdCard())); + applyChargingPileExportDto.setAgentFrontIdCard(new URL(tApplyChargingPile.getAgentFrontIdCard())); + List<URL> urls = new ArrayList<>(); + urls.add(new URL("https://img-blog.csdnimg.cn/direct/c11088e1790049a5b84a0fda21a271b1.png")); + urls.add(new URL("https://img-blog.csdnimg.cn/direct/c11088e1790049a5b84a0fda21a271b1.png")); + urls.add(new URL("https://img-blog.csdnimg.cn/direct/c11088e1790049a5b84a0fda21a271b1.png")); + applyChargingPileExportDto.setUrls(urls); + exportDtos.add(applyChargingPileExportDto); + + } + + // excel模板封装 + ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(response.getOutputStream()); + InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" +"充电桩申请记录" + ".xlsx"); + // 自动释放资源 + try (ExcelWriter excelWriter = excelWriterBuilder.withTemplate(stream).build()) { + WriteSheet writeSheet = EasyExcelFactory.writerSheet().build(); + excelWriter.fill(exportDtos, writeSheet); + excelWriter.finish(); + } catch (Exception e) { + return R.fail("excel导出失败!"); + } + } catch (IOException e) { + return R.fail("excel导出失败!"); + } + return R.ok(); } @ApiOperation(tags = {"后台-申请表单-申请建桩"},value = "详情") diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/TApplyChargingPileExportDto.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/TApplyChargingPileExportDto.java new file mode 100644 index 0000000..73df50f --- /dev/null +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/TApplyChargingPileExportDto.java @@ -0,0 +1,113 @@ +package com.ruoyi.chargingPile.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BasePojo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.net.URL; +import java.time.LocalDate; +import java.util.List; + +@Data + +public class TApplyChargingPileExportDto extends BasePojo { + @ApiModelProperty(value = "用户id") + @TableField("app_user_id") + private Long appUserId; + + @ApiModelProperty(value = "用电地址") + @NotBlank(message = "用电地址不能为空") + @TableField("address") + private String address; + + @ApiModelProperty(value = "申请容量") + @TableField("capacity") + private BigDecimal capacity; + + @ApiModelProperty(value = "用电时间") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @TableField("consumption_time") + private LocalDate consumptionTime; + + @ApiModelProperty(value = "户主经办(0=关,1=开)") + @TableField("landlord_handling") + private Integer landlordHandling; + + @ApiModelProperty(value = "户名") + @TableField("landlord_name") + private String landlordName; + + @ApiModelProperty(value = "户主身份证号码") + @TableField("landlord_id_card") + private String landlordIdCard; + + @ApiModelProperty(value = "户主手机号") + @TableField("landlord_phone") + private String landlordPhone; + + @ApiModelProperty(value = "户主身份证正面") + @TableField("landlord_front_id_card") + private URL landlordFrontIdCard; + + @ApiModelProperty(value = "户主身份证反面") + @TableField("landlord_back_id_card") + private URL landlordBackIdCard; + + @ApiModelProperty(value = "产权证明") + @TableField("title_certificate") + private String titleCertificate; + + @ApiModelProperty(value = "营业执照") + @TableField("business_license") + private String businessLicense; + + @ApiModelProperty(value = "充电桩用户(0=关,1=开)") + @TableField("charging_pile_user") + private Integer chargingPileUser; + + @ApiModelProperty(value = "固定车位产权") + @TableField("fixed_parking_property_rights") + private String fixedParkingPropertyRights; + + @ApiModelProperty(value = "施工证明") + @TableField("construction_certificate") + private String constructionCertificate; + + @ApiModelProperty(value = "经办人姓名") + @TableField("agent_name") + private String agentName; + + @ApiModelProperty(value = "经办人身份证号") + @TableField("agent_id_card") + private String agentIdCard; + + @ApiModelProperty(value = "经办人手机号") + @TableField("agent_phone") + private String agentPhone; + + @ApiModelProperty(value = "经办人身份证正面") + @TableField("agent_front_id_card") + private URL agentFrontIdCard; + + @ApiModelProperty(value = "经办人身份证背面") + @TableField("agent_back_id_card") + private URL agentBackIdCard; + + @ApiModelProperty(value = "是否有充电桩(0=否,1=是)") + @TableField("charging_pile") + private Integer chargingPile; + + @ApiModelProperty(value = "补充资料") + @TableField("further_information") + private String furtherInformation; + + @ApiModelProperty(value = "备注") + @TableField("remark") + private String remark; + private List<URL> urls; +} diff --git "a/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\345\205\205\347\224\265\346\241\251\347\224\263\350\257\267\350\256\260\345\275\225.xlsx" "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\345\205\205\347\224\265\346\241\251\347\224\263\350\257\267\350\256\260\345\275\225.xlsx" new file mode 100644 index 0000000..1456be1 --- /dev/null +++ "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\345\205\205\347\224\265\346\241\251\347\224\263\350\257\267\350\256\260\345\275\225.xlsx" Binary files differ diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index d8c37ed..1b3e8bd 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java @@ -11,6 +11,7 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TOrderEvaluate; +import com.ruoyi.order.api.query.ChargingOrderQuery; import com.ruoyi.order.api.query.TChargingCountQuery; import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.dto.GetMyChargingOrderList; @@ -71,8 +72,9 @@ @ResponseBody @PostMapping(value = "/chargingOrder") @ApiOperation(value = "充电桩订单列表", tags = {"管理后台-订单管理"}) - public AjaxResult<PageInfo<ChargingOrderVO>> chargingOrder(@RequestBody OrderEvaluateVo dto){ - return AjaxResult.success(); + public AjaxResult<PageInfo<ChargingOrderVO>> chargingOrder(@RequestBody ChargingOrderQuery dto){ + PageInfo<ChargingOrderVO> res = chargingOrderService.chargingOrder(dto); + return AjaxResult.success(res); } 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 690d828..de60d7f 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 @@ -16,11 +16,10 @@ import com.ruoyi.order.dto.ExchangeOrderGoodsInfo; import com.ruoyi.order.dto.GetMyExchangeOrder; import com.ruoyi.order.dto.MyExchangeOrderList; -import com.ruoyi.order.service.TChargingOrderService; 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 com.ruoyi.common.core.dto.ExchangeDto; +import com.ruoyi.common.core.utils.OrderCodeUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.util.StringUtils; @@ -153,34 +152,37 @@ @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()); + public R<Long> getById(@RequestParam("goodId") Integer goodId,@RequestParam("userId") Long userId,@RequestParam("goodType") Integer goodType){ + if (goodType==1){ + return R.ok(exchangeOrderService.lambdaQuery().eq(TExchangeOrder::getGoodsId,goodId).eq(TExchangeOrder::getAppUserId,userId).ne(TExchangeOrder::getStatus,4).count()); + }else { + return R.ok(exchangeOrderService.lambdaQuery().eq(TExchangeOrder::getCouponId,goodId).eq(TExchangeOrder::getAppUserId,userId).ne(TExchangeOrder::getStatus,4).count()); + } } @PostMapping("/create") public R<Long> exchangeCreate(@RequestBody ExchangeDto exchangeDto){ TExchangeOrder tExchangeOrder = new TExchangeOrder(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - String code = "DH" + Math.random() * 1000 + sdf.format(new Date()); - tExchangeOrder.setCode(code); + tExchangeOrder.setCode(OrderCodeUtil.getOrderCode("DH")); tExchangeOrder.setAppUserId(exchangeDto.getUserId()); - tExchangeOrder.setOrderType(0); - tExchangeOrder.setGoodsId(0); - tExchangeOrder.setCouponId(0); - tExchangeOrder.setPurchaseQuantity(0); - tExchangeOrder.setAppUserAddressId(0L); - tExchangeOrder.setPoints(0); + tExchangeOrder.setOrderType(exchangeDto.getGoodType()); + if (exchangeDto.getGoodType()==1) { + tExchangeOrder.setGoodsId(exchangeDto.getGoodId()); + }else { + tExchangeOrder.setCouponId(exchangeDto.getGoodId()); + } + tExchangeOrder.setPurchaseQuantity(1); + tExchangeOrder.setAppUserAddressId(Long.valueOf(exchangeDto.getAddressId())); + tExchangeOrder.setPoints(exchangeDto.getPoint()); 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); + if (exchangeDto.getGoodType()==1){ + tExchangeOrder.setStatus(0); + }else { + tExchangeOrder.setStatus(3); + } tExchangeOrder.setCreateTime(LocalDateTime.now()); tExchangeOrder.setDelFlag(false); + exchangeOrderService.save(tExchangeOrder); return R.ok(); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java index 2cb8469..d36e263 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java @@ -1,7 +1,10 @@ package com.ruoyi.order.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TChargingOrder; +import com.ruoyi.order.api.query.ChargingOrderQuery; +import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.dto.GetNoInvoicedOrder; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -42,4 +45,7 @@ */ List<TChargingOrder> getNoInvoicedOrder(@Param("appUserId") Long appUserId, @Param("month") String month, @Param("pageCurr") Integer pageCurr, @Param("pageSize") Integer pageSize); + + List<ChargingOrderVO> chargingOrder(@Param("pageInfo") PageInfo<ChargingOrderVO> pageInfo, ChargingOrderQuery dto, String startTime1, String startTime2, String endTime1, String endTime11); + } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java index 25c5c91..06c75b4 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java @@ -3,7 +3,10 @@ import com.baomidou.mybatisplus.extension.service.IService; 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.order.api.model.TChargingOrder; +import com.ruoyi.order.api.query.ChargingOrderQuery; +import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.dto.*; import org.springframework.web.bind.annotation.RequestBody; @@ -78,4 +81,6 @@ * @return */ AjaxResult stopCharging(String id); + + PageInfo<ChargingOrderVO> chargingOrder(ChargingOrderQuery dto); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index d5521a8..f203995 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java @@ -17,20 +17,25 @@ import com.ruoyi.chargingPile.api.model.TChargingPile; 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.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; +import com.ruoyi.order.api.query.ChargingOrderQuery; +import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.dto.*; import com.ruoyi.order.mapper.TChargingOrderMapper; import com.ruoyi.order.service.TChargingOrderAccountingStrategyService; import com.ruoyi.order.service.TChargingOrderService; +import com.ruoyi.other.api.domain.TVip; import com.ruoyi.payment.api.feignClient.WxPaymentClient; import com.ruoyi.payment.api.vo.NotifyV3PayDecodeRespBody; import com.ruoyi.payment.api.vo.PaymentOrder; import io.seata.spring.annotation.GlobalTransactional; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; @@ -386,4 +391,27 @@ // todo 待完善 return AjaxResult.success(); } + + @Override + public PageInfo<ChargingOrderVO> chargingOrder(ChargingOrderQuery dto) { + String startTime1 = null; + String startTime2 = null; + String endTime1 = null; + String endTime2 = null; + + if (StringUtils.hasLength(dto.getStartTime())){ + String[] split = dto.getStartTime().split(" - "); + startTime1 = split[0]; + startTime2 = split[1]; + } + if (StringUtils.hasLength(dto.getEndTime())){ + String[] split = dto.getEndTime().split(" - "); + endTime1 = split[0]; + endTime2 = split[1]; + } + PageInfo<ChargingOrderVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); + List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2); + pageInfo.setRecords(list); + return pageInfo; + } } 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 08f6eae..17dc6c4 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 @@ -1,6 +1,7 @@ package com.ruoyi.other.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.account.api.dto.GrantCouponDto; import com.ruoyi.account.api.feignClient.AppCouponClient; import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery; @@ -9,10 +10,12 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.other.api.domain.Region; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TGoods; import com.ruoyi.other.api.dto.GoodsDTO; import com.ruoyi.other.query.CouponQuery; +import com.ruoyi.other.service.IRegionService; import com.ruoyi.other.service.TActivityService; import com.ruoyi.other.service.TCouponService; import com.ruoyi.other.service.TGoodsService; @@ -23,6 +26,7 @@ import io.swagger.annotations.ApiParam; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -31,6 +35,7 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * <p> @@ -112,9 +117,10 @@ } - + @Autowired + private IRegionService regionService; @ApiOperation(tags = {"管理后台-优惠券管理"},value = "发放优惠券") - @GetMapping(value = "/grantCoupon") + @PostMapping(value = "/grantCoupon") public AjaxResult grantCoupon(@RequestBody GrantCouponDto dto) { TCoupon byId = tCouponService.getById(dto.getCouponId()); Integer waysToObtain = byId.getWaysToObtain(); @@ -127,18 +133,36 @@ dto.setEndTime(LocalDateTime.now().plusDays(byId.getDays())); break; } + if (StringUtils.hasLength(dto.getProvinceCode())){ + for (String s : dto.getProvinceCode().split(",")) { + Region code = regionService.getOne(new QueryWrapper<Region>() + .eq("code", s)); + List<String> collect = regionService.list(new QueryWrapper<Region>() + .eq("parent_id", code.getId())).stream().map(Region::getCode).collect(Collectors.toList()); + StringBuilder temp = new StringBuilder(); + for (String string : collect) { + temp.append(string).append(","); + } + if (StringUtils.hasLength(dto.getCityCode())){ + String s1 = dto.getCityCode() + "," + temp; + // 去除最后一位字符 + dto.setCityCode(s1.substring(0, s1.length() - 1)); + }else{ + String substring = temp.substring(0, temp.length() - 1); + dto.setCityCode(substring); + } + } + + } appCouponClient.grantCoupon(dto); return AjaxResult.success(); } - - @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券列表分页查询") @PostMapping(value = "/pageList") public AjaxResult<PageInfo<TCoupon>> pageList(@RequestBody CouponQuery dto) { return AjaxResult.ok(tCouponService.pageList(dto)); } - /** * 小程序远程调用 获取优惠券信息 @@ -153,8 +177,6 @@ return R.ok(list); } - - /** * 根据id获取优惠券信息 * @param id @@ -165,5 +187,6 @@ TCoupon coupon = tCouponService.getById(id); return R.ok(coupon); } + } 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 a834bb4..55fb297 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,6 +1,9 @@ package com.ruoyi.other.controller; +import java.time.LocalDateTime; +import com.ruoyi.account.api.dto.GrantCouponDto; +import com.ruoyi.account.api.feignClient.AppCouponClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.common.core.domain.R; @@ -9,13 +12,13 @@ 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.TCoupon; import com.ruoyi.other.api.domain.TGoods; +import com.ruoyi.common.core.dto.ExchangeDto; import com.ruoyi.other.api.dto.AdvertisingDTO; -import com.ruoyi.order.api.vo.ExchangeDto; import com.ruoyi.other.api.dto.GoodsDTO; import com.ruoyi.other.service.TActivityService; -import com.ruoyi.other.service.TAdvertisingService; +import com.ruoyi.other.service.TCouponService; import com.ruoyi.other.service.TGoodsService; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -45,6 +48,10 @@ private AppUserClient appUserClient; @Resource private OrderClient orderClient; + @Resource + private AppCouponClient appCouponClient; + @Resource + private TCouponService couponService; @@ -100,29 +107,48 @@ @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(); + Integer point = 0; + + if (exchangeDto.getGoodType()==1) { + //查询当前商品信息 + TGoods good = goodsService.getById(exchangeDto.getGoodId()); + point = good.getRedeemPoints(); + //检查当前用户是否到达兑换上限 + Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId,exchangeDto.getGoodType()).getData(); + if (good.getLimitExchangeTimes() != -1 && count >= good.getLimitExchangeTimes()) { + return AjaxResult.error("当前用户已到达兑换上限"); + } TAppUser user = appUserClient.getUserById(userId).getData(); if (user.getPoints()<good.getRedeemPoints()){ return AjaxResult.error("当前用户积分不足"); + } + }else { + TCoupon coupon = couponService.getById(exchangeDto.getGoodId()); + point = coupon.getRedeemPoints(); + + Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId,exchangeDto.getGoodType()).getData(); + if (coupon.getInventoryQuantity() != -1 && count >= coupon.getInventoryQuantity()) { + return AjaxResult.error("当前用户已到达兑换上限"); + } } - //检查当前用户是否到达兑换上限 - Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId).getData(); - if (good.getLimitExchangeTimes()!=-1&&count>=good.getLimitExchangeTimes()){ - return AjaxResult.error("当前用户已到达兑换上限"); - } + exchangeDto.setPoint(point); //生成积分兑换成功的订单 -// orderClient.exchangeCreate(exchangeDto); - - //如果是优惠卷,赠送优惠卷给用户 - - - - + orderClient.exchangeCreate(exchangeDto); + if (exchangeDto.getGoodType()==2) { + //如果是优惠卷,赠送优惠卷给用户 + GrantCouponDto grantCouponDto = new GrantCouponDto(); + grantCouponDto.setUserIds(userId.toString()); + grantCouponDto.setCouponId(exchangeDto.getGoodId()); + grantCouponDto.setWaysToObtain(1); + grantCouponDto.setEndTime(LocalDateTime.now()); + appCouponClient.grantCoupon(grantCouponDto); + } //生成消耗积分的记录 + + + return AjaxResult.success(); @@ -132,7 +158,7 @@ /** * 根据id获取商品信息 * @param id - * @return1 + * @return */ @PostMapping("/getGoodsById/{id}") public R<TGoods> getGoodsById(@PathVariable Integer id){ -- Gitblit v1.7.1