diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/properties/AliPayProperties.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/properties/AliPayProperties.java index 44d11e9f3..d435f161e 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/properties/AliPayProperties.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/properties/AliPayProperties.java @@ -36,5 +36,9 @@ public class AliPayProperties { * 回调地址. */ private String notifyUrl; + /** + * 回调地址. + */ + private String refundNotify; } diff --git a/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/request/member/AlipayNotifyParamRequest.java b/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/request/member/AlipayNotifyParamRequest.java deleted file mode 100644 index 7a91102f1..000000000 --- a/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/request/member/AlipayNotifyParamRequest.java +++ /dev/null @@ -1,47 +0,0 @@ -package cn.iocoder.yudao.module.shop.request.member; - -import lombok.Data; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.util.Date; - -/** - * @Title:AlipayNotifyParamRequest - * @Description: TODO - * @author: tangqian - * @date: 2023/5/19 10:27 - * @version: V1.0.0 - */ -@Data -@Accessors(chain = true) -public class AlipayNotifyParamRequest implements Serializable { - private static final long serialVersionUID = 5839750515063699319L; - private String appId; - private String tradeNo; // 支付宝交易凭证号 - private String outTradeNo; // 原支付请求的商户订单号 - private String outBizNo; // 商户业务ID,主要是退款通知中返回退款申请的流水号 - private String buyerId; // 买家支付宝账号对应的支付宝唯一用户号。以2088开头的纯16位数字 - private String buyerLogonId; // 买家支付宝账号 - private String sellerId; // 卖家支付宝用户号 - private String sellerEmail; // 卖家支付宝账号 - private String tradeStatus; // 交易目前所处的状态,见交易状态说明 - private String totalAmount; // 本次交易支付的订单金额 - private String receiptAmount; // 商家在交易中实际收到的款项 - private String buyerPayAmount; // 用户在交易中支付的金额 - private String refundFee; // 退款通知中,返回总退款金额,单位为元,支持两位小数 - private String subject; // 商品的标题/交易标题/订单标题/订单关键字等 - private String body; // 该订单的备注、描述、明细等。对应请求时的body参数,原样通知回来 - private Date gmtCreate; // 该笔交易创建的时间。格式为yyyy-MM-dd HH:mm:ss - private Date gmtPayment; // 该笔交易的买家付款时间。格式为yyyy-MM-dd HH:mm:ss - private Date notifyTime; // 通知时间。格式为yyyy-MM-dd HH:mm:ss - private Date gmtRefund; // 该笔交易的退款时间。格式为yyyy-MM-dd HH:mm:ss.S - private Date gmtClose; // 该笔交易结束时间。格式为yyyy-MM-dd HH:mm:ss - private String fundBillList; // 支付成功的各个渠道金额信息,array - private String passbackParams; // 公共回传参数,如果请求时传递了该参数,则返回给商户时会在异步通知时将该参数原样返回。 - private String authAppId; - private String notifyId; - private String notifyType; - private String version; - private String invoiceAmount;//交易中可给用户开具发票的金额 -} diff --git a/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/request/member/OrderContentRequest.java b/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/request/member/OrderContentRequest.java index 9120c416d..73c9fe6d7 100644 --- a/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/request/member/OrderContentRequest.java +++ b/yudao-module-mall/yudao-module-shop-api/src/main/java/cn/iocoder/yudao/module/shop/request/member/OrderContentRequest.java @@ -7,6 +7,7 @@ import lombok.experimental.Accessors; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; import java.io.Serializable; import java.util.List; @@ -43,7 +44,7 @@ public class OrderContentRequest implements Serializable { private static final long serialVersionUID = -4967251473044468810L; @Schema(description = "订单id") @NotNull(message = "挡位id不能为空") - private String gearId; + private Long gearId; @Schema(description = "档位名称") @NotEmpty(message = "挡位名称不能为空") diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/notify/WxPayNotifyController.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/notify/WxPayNotifyController.java index ac69a1215..5b338c907 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/notify/WxPayNotifyController.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/notify/WxPayNotifyController.java @@ -1,8 +1,12 @@ package cn.iocoder.yudao.module.shop.controller.admin.notify; +import cn.hutool.core.util.NumberUtil; import cn.hutool.json.JSONUtil; +import cn.iocoder.yudao.module.shop.dal.dataobject.recharge.RechargeOrderDO; +import cn.iocoder.yudao.module.shop.dal.mysql.recharge.RechargeOrderMapper; import cn.iocoder.yudao.module.shop.service.order.StoreOrderService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.binarywang.wxpay.bean.notify.OriginNotifyResponse; import com.github.binarywang.wxpay.bean.notify.SignatureHeader; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyV3Result; @@ -19,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; /** @@ -38,6 +43,8 @@ public class WxPayNotifyController { @Autowired private StoreOrderService storeOrderService; + @Autowired + private RechargeOrderMapper rechargeOrderMapper; /** @@ -113,13 +120,21 @@ public class WxPayNotifyController { log.info("退款原始通知=" + JSONUtil.toJsonPrettyStr(jsonData)); try { //解密后的数据 - v3Result = wxPayService.parseRefundNotifyV3Result(JSONUtil.toJsonPrettyStr(notifyResponse), this.getRequestHeader(request)); + v3Result = wxPayService.parseRefundNotifyV3Result(jsonData, this.getRequestHeader(request)); WxPayRefundNotifyV3Result.DecryptNotifyResult result = v3Result.getResult(); log.info("退款通知=" + JSONUtil.toJsonPrettyStr(result)); //退款状态 - if (StringUtils.equals("SUCCESS", result.getRefundId())) { + if (StringUtils.equals("SUCCESS", result.getRefundStatus())) { log.info("微信退款回调成功"); // 验证相关参数-金额 + // 用户支付金额 + BigDecimal payerTotal = NumberUtil.div(result.getAmount().getPayerTotal() + "", "100", 2); + // 处理相关逻辑 + RechargeOrderDO orderDO = rechargeOrderMapper.selectOne(Wrappers.lambdaQuery().eq(RechargeOrderDO::getOrderId, result.getOutRefundNo())); + if (payerTotal.compareTo(orderDO.getPayPrice()) != 0) { + log.error("支付金额不匹配,订单实际支付金额:{},微信入参验证金额:{}", orderDO.getPayPrice(), payerTotal); + return "failure"; + } // 修改订单状态 // 写入 response.setStatus(HttpServletResponse.SC_OK); diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/RechargeOrderController.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/RechargeOrderController.java index bdd09c73c..cb28ea2cd 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/RechargeOrderController.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/RechargeOrderController.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.shop.controller.admin.recharge; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; import cn.iocoder.yudao.module.shop.controller.admin.recharge.method.Excel; import cn.iocoder.yudao.module.shop.convert.recharge.RechargeOrderInfoConvert; import cn.iocoder.yudao.module.shop.dal.dataobject.recharge.RechargeOrderInfoDO; @@ -46,7 +48,7 @@ public class RechargeOrderController { @PostMapping("/create") @Operation(summary = "创建订单") @PreAuthorize("@ss.hasPermission('shop:recharge-order:create')") - public CommonResult createRechargeOrder(@Valid @RequestBody RechargeOrderCreateReqVO createReqVO) { + public CommonResult createRechargeOrder(@Valid @RequestBody RechargeOrderCreateReqVO createReqVO) { return success(rechargeOrderService.createRechargeOrder(createReqVO)); } @@ -88,7 +90,9 @@ public class RechargeOrderController { @GetMapping("/page") @Operation(summary = "获得订单分页") @PreAuthorize("@ss.hasPermission('shop:recharge-order:query')") + @TenantIgnore public CommonResult> getRechargeOrderPage(@Valid RechargeOrderPageReqVO pageVO) { + pageVO.setTenantId(SecurityFrameworkUtils.getLoginUser().getTenantId()); PageResult pageResult = rechargeOrderService.getRechargeOrderPage(pageVO); return success(pageResult); } @@ -98,18 +102,17 @@ public class RechargeOrderController { @Operation(summary = "导出订单 Excel") @PreAuthorize("@ss.hasPermission('shop:recharge-order:export')") @OperateLog(type = EXPORT) + @TenantIgnore public void exportRechargeOrderExcel(@Valid RechargeOrderExportReqVO exportReqVO, HttpServletResponse response) throws IOException { - List list = rechargeOrderService.getRechargeOrderList(exportReqVO); - ArrayList s = new ArrayList<>(); + List list = rechargeOrderService.findListExcel(exportReqVO); + ArrayList s = new ArrayList<>(); list.forEach(x -> { - s.add(x.getOrderId()); + s.add(x.getId()); }); - List infoList = rechargeOrderInfoService.getRechargeOrderInfoList(s); + List infoList = rechargeOrderInfoService.getRechargeOrderInfoListExcel(s); // 导出 Excel - List datas = RechargeOrderConvert.INSTANCE.convertList02(list); - List infoDatas = RechargeOrderInfoConvert.INSTANCE.convertList02(infoList); - Excel.orderExport(response, datas, infoDatas); + Excel.orderExport(response, list, infoList); } } diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/RechargeOrderInfoController.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/RechargeOrderInfoController.java index df0328b74..e6873800b 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/RechargeOrderInfoController.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/RechargeOrderInfoController.java @@ -27,6 +27,7 @@ import cn.iocoder.yudao.module.shop.controller.admin.recharge.vo.*; import cn.iocoder.yudao.module.shop.dal.dataobject.recharge.RechargeOrderInfoDO; import cn.iocoder.yudao.module.shop.convert.recharge.RechargeOrderInfoConvert; import cn.iocoder.yudao.module.shop.service.recharge.RechargeOrderInfoService; +import sun.rmi.runtime.Log; @Tag(name = "管理后台 - 订单购物详情") @RestController @@ -40,7 +41,7 @@ public class RechargeOrderInfoController { @PostMapping("/create") @Operation(summary = "创建订单购物详情") @PreAuthorize("@ss.hasPermission('shop:recharge-order-info:create')") - public CommonResult createRechargeOrderInfo(@Valid @RequestBody RechargeOrderInfoCreateReqVO createReqVO) { + public CommonResult createRechargeOrderInfo(@Valid @RequestBody RechargeOrderInfoCreateReqVO createReqVO) { return success(rechargeOrderInfoService.createRechargeOrderInfo(createReqVO)); } diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeGearBaseVO.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeGearBaseVO.java index 72e41fd50..6292f3dc8 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeGearBaseVO.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeGearBaseVO.java @@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.shop.controller.admin.recharge.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; + +import java.math.BigDecimal; import java.util.*; import java.time.LocalDateTime; import java.time.LocalDateTime; @@ -24,6 +26,13 @@ public class RechargeGearBaseVO { @Schema(description = "档位显示金额", required = true) @NotNull(message = "档位显示金额不能为空") - private Integer gearAmount; + private BigDecimal gearAmount; + + /** + * 返费金额 + */ + @Schema(description = "返费金额", required = true) + @NotNull(message = "返费金额不能为空") + private BigDecimal refundAmount; } diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeGearRespVO.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeGearRespVO.java index 0c1ac5524..9a6adde4d 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeGearRespVO.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeGearRespVO.java @@ -11,7 +11,7 @@ import java.time.LocalDateTime; public class RechargeGearRespVO extends RechargeGearBaseVO { @Schema(description = "主键", required = true, example = "3324") - private String id; + private Long id; @Schema(description = "创建时间", required = true) private LocalDateTime createTime; diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderExcelVO.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderExcelVO.java index de6e69d19..6ded77f0b 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderExcelVO.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderExcelVO.java @@ -14,36 +14,43 @@ import java.time.LocalDateTime; @Data public class RechargeOrderExcelVO { - @ExcelProperty("订单号") + + @ExcelProperty("订单id") + private Long id; + + @ExcelProperty("订单编号") private String orderId; - @ExcelProperty("第三方支付流水号") + @ExcelProperty("交易流水号") private String paySerialNumber; + @ExcelProperty("商户名称") + private String tenantName; - @ExcelProperty("支付时间") + @ExcelProperty("订单支付时间") private LocalDateTime payTime; - //:0-普通订单,1-视频号订单 + + @ExcelProperty("交易完成时间") + private LocalDateTime payCompleteTime; @ExcelProperty("订单类型") - private Integer type; - //(0:待发货;1:待收货;2:已收货,待评价;3:已完成;) + private String type="普通订单"; @ExcelProperty("订单状态") - private String status; + private String status="已经完成"; @ExcelProperty("配送方式") - private String deliveryType; + private String deliveryType="快递(系统快递)(系统快递)"; - @ExcelProperty("用户姓名") + @ExcelProperty("姓名") private String realName; - @ExcelProperty("用户电话") + @ExcelProperty("充值号码") private String userPhone; - @ExcelProperty("确认手机号") + @ExcelProperty("确认号码") private String confirmPhone; @ExcelProperty("地址") private String address; - @ExcelProperty("备注") + @ExcelProperty("给卖家留言") private String mark; @ExcelProperty("取货地址") @@ -59,7 +66,7 @@ public class RechargeOrderExcelVO { private String remark; @ExcelProperty("产品合计金额") - private BigDecimal proTotalPrice; + private BigDecimal totalPrice; @ExcelProperty("运费") private BigDecimal shipPrice; @@ -74,6 +81,6 @@ public class RechargeOrderExcelVO { private String promoter; @ExcelProperty("组织名称") - private Integer depName; + private String depName; } diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderExportReqVO.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderExportReqVO.java index f6a846bfe..b2da768c3 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderExportReqVO.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderExportReqVO.java @@ -18,12 +18,19 @@ public class RechargeOrderExportReqVO { @Schema(description = "订单号", example = "3697") private String orderId; + @Schema(description = "租户id") + private Long tenantId; + @Schema(description = "用户id", example = "28969") private Integer uid; @Schema(description = "用户姓名", example = "张三") private String realName; + + @Schema(description = "推广员名称", example = "张三") + private String nickname; + @Schema(description = "用户电话") private String userPhone; diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderInfoExcelVO.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderInfoExcelVO.java index e5908d7e0..cd216ffe8 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderInfoExcelVO.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderInfoExcelVO.java @@ -18,7 +18,7 @@ import com.alibaba.excel.annotation.ExcelProperty; @Data public class RechargeOrderInfoExcelVO { - @ExcelProperty("订单号") + @ExcelProperty("订单编号") private String orderNo; @ExcelProperty("商户名称") @@ -31,18 +31,19 @@ public class RechargeOrderInfoExcelVO { private String shopOption; @ExcelProperty("产品分类") - private String productCategory; + private String productCategory="话费"; - @ExcelProperty("产品价格") + @ExcelProperty("产品单价") private BigDecimal price; @ExcelProperty("产品数量") - private Integer payNum; - + private Integer payNum=1; + @ExcelProperty("配送价格/运费") + private BigDecimal freight=new BigDecimal(0); @ExcelProperty("合计金额") private BigDecimal proTotalPrice; - @ExcelProperty("支付金额") + @ExcelProperty("实付金额") private BigDecimal payPrice; @ExcelProperty("售后状态") diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderPageReqVO.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderPageReqVO.java index a66c4b2a1..6df2e0ff5 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderPageReqVO.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/admin/recharge/vo/RechargeOrderPageReqVO.java @@ -20,6 +20,9 @@ public class RechargeOrderPageReqVO extends PageParam { @Schema(description = "订单号", example = "3697") private String orderId; + @Schema(description = "租户id") + private Long tenantId; + @Schema(description = "用户id", example = "28969") private Integer uid; diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/app/banner/AppBannerController.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/app/banner/AppBannerController.java new file mode 100644 index 000000000..672d10db1 --- /dev/null +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/app/banner/AppBannerController.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.shop.controller.app.banner; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; +import cn.iocoder.yudao.module.shop.controller.admin.banner.vo.BannerPageReqVO; +import cn.iocoder.yudao.module.shop.controller.admin.banner.vo.BannerRespVO; +import cn.iocoder.yudao.module.shop.convert.banner.BannerConvert; +import cn.iocoder.yudao.module.shop.dal.dataobject.banner.BannerDO; +import cn.iocoder.yudao.module.shop.service.banner.BannerService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "用户APP - 商户Banner 管理") +@RestController +@RequestMapping("/market/banner") +@Validated +public class AppBannerController { + + @Resource + private BannerService bannerService; + + + + @PostMapping("/list") + @Operation(summary = "获得 Banner 列表") + public CommonResult> getBannerList(@RequestBody@Valid BannerPageReqVO pageVO) { + pageVO.setTenantId(TenantContextHolder.getTenantId()); + pageVO.setPageSize(5); + PageResult pageResult = bannerService.getBannerPage(pageVO); + return success(BannerConvert.INSTANCE.convertPage(pageResult)); + } + +} diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/app/buy/TopUpOrderController.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/app/buy/TopUpOrderController.java index 9e1dad4cd..4b944f022 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/app/buy/TopUpOrderController.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/controller/app/buy/TopUpOrderController.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.shop.controller.app.buy; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; +import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; import cn.iocoder.yudao.module.shop.request.member.OrderContentRequest; import cn.iocoder.yudao.module.shop.request.member.RefundRequest; import cn.iocoder.yudao.module.shop.response.member.InitOrderResponse; @@ -38,6 +39,7 @@ public class TopUpOrderController { log.info("initOrder会员充值===>{}", request); return CommonResult.success(storeOrderService.memberTopUp(request, servletRequest)); } + @TenantIgnore @PreAuthenticated @Operation(summary = "退款") @RequestMapping(value = "/memberRefund", method = RequestMethod.POST) @@ -45,6 +47,7 @@ public class TopUpOrderController { log.info("memberRefund会员退款===>{}", request); return CommonResult.success(storeOrderService.memberRefund(request, servletRequest)); } + @TenantIgnore @PreAuthenticated @Operation(summary = "申请退款") @RequestMapping(value = "/memberApplyRefund", method = RequestMethod.POST) diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RechargeGearDO.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RechargeGearDO.java index de83afb1a..9cfe1775d 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RechargeGearDO.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RechargeGearDO.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.shop.dal.dataobject.recharge; import lombok.*; + +import java.math.BigDecimal; import java.util.*; import java.time.LocalDateTime; import java.time.LocalDateTime; @@ -38,6 +40,12 @@ public class RechargeGearDO extends BaseDO { /** * 档位显示金额 */ - private Integer gearAmount; + private BigDecimal gearAmount; + + /** + * 返费金额 + */ + private BigDecimal refundAmount; + } diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RechargeOrderDO.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RechargeOrderDO.java index d4d8d4efe..f6b920dd8 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RechargeOrderDO.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RechargeOrderDO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.shop.dal.dataobject.recharge; +import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; import lombok.*; import java.util.*; import java.math.BigDecimal; @@ -29,13 +30,13 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @Builder @NoArgsConstructor @AllArgsConstructor -public class RechargeOrderDO extends BaseDO { +public class RechargeOrderDO extends TenantBaseDO { /** * 订单ID */ - @TableId - private Integer id; + @TableId(type=IdType.ASSIGN_ID) + private Long id; /** * 订单号 */ @@ -169,4 +170,14 @@ public class RechargeOrderDO extends BaseDO { private String updater; private Boolean deleted; + /** + * 推广员id + */ + private Long promoterId; + + /** + * 组织id + */ + private Long deptId; + } diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RechargeOrderInfoDO.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RechargeOrderInfoDO.java index 9abb9b89c..cb5425226 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RechargeOrderInfoDO.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RechargeOrderInfoDO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.shop.dal.dataobject.recharge; +import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -22,21 +23,21 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @Builder @NoArgsConstructor @AllArgsConstructor -public class RechargeOrderInfoDO extends BaseDO { +public class RechargeOrderInfoDO extends TenantBaseDO { /** * 主键 */ - @TableId - private Integer id; + @TableId(type = IdType.ASSIGN_ID) + private Long id; /** * 充值订单id */ - private Integer rechargeOrderId; + private Long rechargeOrderId; /** * 充值档位 */ - private Integer rechargeGearId; + private Long rechargeGearId; /** * 订单号 */ @@ -74,5 +75,19 @@ public class RechargeOrderInfoDO extends BaseDO { private String updater; private LocalDateTime createTime; private LocalDateTime updateTime; + /** + * 推广员id + */ + private Long promoterId; + + /** + * 组织id + */ + private Long deptId; + + /** + * 用户id + */ + private Long uid; } diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RefundFeeRecordDO.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RefundFeeRecordDO.java index 9c166651b..05c38e2b4 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RefundFeeRecordDO.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/dataobject/recharge/RefundFeeRecordDO.java @@ -26,7 +26,7 @@ public class RefundFeeRecordDO extends BaseDO { /** * 主键 */ - @TableId + @TableId(type = IdType.ASSIGN_ID) private Long id; /** * 档位记录id diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/mysql/recharge/RechargeOrderInfoMapper.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/mysql/recharge/RechargeOrderInfoMapper.java index 83e868442..9ea497efe 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/mysql/recharge/RechargeOrderInfoMapper.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/mysql/recharge/RechargeOrderInfoMapper.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.shop.dal.dataobject.recharge.RechargeOrderInfoDO; import org.apache.ibatis.annotations.Mapper; import cn.iocoder.yudao.module.shop.controller.admin.recharge.vo.*; +import org.apache.ibatis.annotations.Param; /** * 订单购物详情 Mapper @@ -54,4 +55,7 @@ public interface RechargeOrderInfoMapper extends BaseMapperX getRechargeOrderInfoListExcel(@Param("ids") List ids); + + } diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/mysql/recharge/RechargeOrderMapper.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/mysql/recharge/RechargeOrderMapper.java index 0219fc5da..764bd206b 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/mysql/recharge/RechargeOrderMapper.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/dal/mysql/recharge/RechargeOrderMapper.java @@ -57,6 +57,9 @@ public interface RechargeOrderMapper extends BaseMapperX { .orderByDesc(RechargeOrderDO::getId)); } IPage findListPage(IPage page, @Param("data") RechargeOrderPageReqVO data); + + + List findListExcel(@Param("data") RechargeOrderExportReqVO data); default List selectList(RechargeOrderExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(RechargeOrderDO::getOrderId, reqVO.getOrderId()) diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/impl/StoreOrderServiceImpl.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/impl/StoreOrderServiceImpl.java index 9146cdb12..2d810972a 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/impl/StoreOrderServiceImpl.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/order/impl/StoreOrderServiceImpl.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.shop.service.order.impl; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; @@ -15,9 +14,11 @@ import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.pay.properties.AliPayProperties; import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; -import cn.iocoder.yudao.module.infra.api.config.ApiConfigApi; +import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; +import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; import cn.iocoder.yudao.module.member.api.user.MemberUserApi; import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; +import cn.iocoder.yudao.module.member.api.user.dto.PromoterDTO; import cn.iocoder.yudao.module.shop.dal.dataobject.express.ExpressDO; import cn.iocoder.yudao.module.shop.dal.dataobject.order.StoreOrder; import cn.iocoder.yudao.module.shop.dal.dataobject.recharge.PhoneRecordDO; @@ -27,7 +28,6 @@ import cn.iocoder.yudao.module.shop.dal.mysql.order.StoreOrderMapper; import cn.iocoder.yudao.module.shop.dal.mysql.recharge.PhoneRecordMapper; import cn.iocoder.yudao.module.shop.dal.mysql.recharge.RechargeOrderInfoMapper; import cn.iocoder.yudao.module.shop.dal.mysql.recharge.RechargeOrderMapper; -import cn.iocoder.yudao.module.shop.request.member.AlipayNotifyParamRequest; import cn.iocoder.yudao.module.shop.request.member.OrderContentRequest; import cn.iocoder.yudao.module.shop.request.member.RefundRequest; import cn.iocoder.yudao.module.shop.request.order.StoreOrderRefundRequest; @@ -43,7 +43,9 @@ import cn.iocoder.yudao.module.shop.service.order.StoreOrderService; import cn.iocoder.yudao.module.shop.service.order.StoreOrderStatusService; import cn.iocoder.yudao.module.shop.support.StrategySupport; import cn.iocoder.yudao.module.shop.support.pay.IPayStrategy; -import cn.iocoder.yudao.module.shop.utils.*; +import cn.iocoder.yudao.module.shop.utils.CommonPage; +import cn.iocoder.yudao.module.shop.utils.OrderUtil; +import cn.iocoder.yudao.module.shop.utils.RedisUtil; import cn.iocoder.yudao.module.shop.vo.order.LogisticsResultVo; import cn.iocoder.yudao.module.shop.vo.order.StoreDateRangeSqlPram; import cn.iocoder.yudao.module.shop.vo.order.StoreOrderInfoOldVo; @@ -61,7 +63,6 @@ import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken; import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.common.service.WxOAuth2Service; import me.chanjar.weixin.mp.api.WxMpService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -75,12 +76,12 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.BufferedWriter; import java.io.IOException; -import java.io.OutputStreamWriter; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -1150,16 +1151,18 @@ public class StoreOrderServiceImpl extends ServiceImpl>>>>>>>>>>>>>支付宝订单交易成功!订单号:{}<<<<<<<<<<<<<<<<<<<<", orderId); return "success"; } else { @@ -1253,6 +1267,8 @@ public class StoreOrderServiceImpl extends ServiceImpl params = new HashMap(); Map requestParams = request.getParameterMap(); for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) { @@ -1338,7 +1354,8 @@ public class StoreOrderServiceImpl extends ServiceImpl orderInfos = request.getOrderInfos(); orderDO.setOrderId(code); @@ -1357,6 +1374,9 @@ public class StoreOrderServiceImpl extends ServiceImpl infoDOS = new ArrayList<>(); orderInfos.forEach(info -> { @@ -1368,16 +1388,32 @@ public class StoreOrderServiceImpl extends ServiceImpl orderInfos = request.getOrderInfos(); + Assert.isTrue(!CollectionUtils.isEmpty(orderInfos), "订单信息不能为空!"); + List collect = orderInfos.stream().map(OrderContentRequest.OrderInfo::getGearId).collect(Collectors.toList()); + List infoDOS = rechargeOrderInfoMapper.selectList(Wrappers.lambdaQuery() + .eq(RechargeOrderInfoDO::getUid, user.getId()) + .in(RechargeOrderInfoDO::getRechargeGearId, collect)); + if (!CollectionUtils.isEmpty(infoDOS)) { + Map> collect1 = infoDOS.stream().collect(Collectors.groupingBy(RechargeOrderInfoDO::getRechargeGearId)); + orderInfos.forEach(info -> { + Assert.isTrue(CollectionUtils.isEmpty(collect1.get(info.getGearId())), "该挡位:" + info.getName() + "你已购买,请勿重复操作"); + }); + } if (StringUtils.isNotBlank(request.getUserPhone()) && StringUtils.isNotBlank(request.getConfirmPhone())) { Assert.isTrue(StringUtils.equals(request.getUserPhone(), request.getConfirmPhone()), "输入号码不一致!"); + Assert.isTrue(Pattern.matches("^[1][3,4,5,7,8][0,1,2,4,5,6,7,8,9][0-9]{8}$", request.getUserPhone()), "手机号前三位不能是190或193!"); MemberUserRespDTO userByMobile = userService.getUserByMobile(request.getUserPhone()); // 初始化一个账号 if (Objects.isNull(userByMobile)) { diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeGearServiceImpl.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeGearServiceImpl.java index 42beda78e..dab8315ec 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeGearServiceImpl.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeGearServiceImpl.java @@ -106,7 +106,7 @@ public class RechargeGearServiceImpl implements RechargeGearService { RechargeOrderDO orderDO = orderMapper.selectOne(Wrappers.lambdaQuery().eq(RechargeOrderDO::getUid, loginUser.getId()).last("LIMIT 1")); if (Objects.nonNull(orderDO)) { List infoDOS = orderInfoMapper.selectList(Wrappers.lambdaQuery().eq(RechargeOrderInfoDO::getOrderNo, orderDO.getOrderId())); - Map> collect = infoDOS.stream().collect(Collectors.groupingBy(RechargeOrderInfoDO::getRechargeGearId)); + Map> collect = infoDOS.stream().collect(Collectors.groupingBy(RechargeOrderInfoDO::getRechargeGearId)); rechargeGearRespVOS.forEach(vo -> { List infoDOS1 = collect.get(vo.getId()); if (!CollectionUtils.isEmpty(infoDOS1)) { diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderInfoService.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderInfoService.java index 07247bf0c..0a7a8688e 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderInfoService.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderInfoService.java @@ -19,7 +19,7 @@ public interface RechargeOrderInfoService { * @param createReqVO 创建信息 * @return 编号 */ - Integer createRechargeOrderInfo(@Valid RechargeOrderInfoCreateReqVO createReqVO); + Long createRechargeOrderInfo(@Valid RechargeOrderInfoCreateReqVO createReqVO); /** * 更新订单购物详情 @@ -67,6 +67,6 @@ public interface RechargeOrderInfoService { */ List getRechargeOrderInfoList(RechargeOrderInfoExportReqVO exportReqVO); - List getRechargeOrderInfoList(List ids); + List getRechargeOrderInfoListExcel(List ids); } diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderInfoServiceImpl.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderInfoServiceImpl.java index 16a7e0063..1250e2714 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderInfoServiceImpl.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderInfoServiceImpl.java @@ -29,7 +29,7 @@ public class RechargeOrderInfoServiceImpl implements RechargeOrderInfoService { private RechargeOrderInfoMapper rechargeOrderInfoMapper; @Override - public Integer createRechargeOrderInfo(RechargeOrderInfoCreateReqVO createReqVO) { + public Long createRechargeOrderInfo(RechargeOrderInfoCreateReqVO createReqVO) { // 插入 RechargeOrderInfoDO rechargeOrderInfo = RechargeOrderInfoConvert.INSTANCE.convert(createReqVO); rechargeOrderInfoMapper.insert(rechargeOrderInfo); @@ -81,8 +81,8 @@ public class RechargeOrderInfoServiceImpl implements RechargeOrderInfoService { } @Override - public List getRechargeOrderInfoList(List s) { - return rechargeOrderInfoMapper.selectList(s); + public List getRechargeOrderInfoListExcel(List s) { + return rechargeOrderInfoMapper.getRechargeOrderInfoListExcel(s); } } diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderService.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderService.java index de52e31cd..70d26799f 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderService.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderService.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.shop.controller.admin.recharge.vo.*; import cn.iocoder.yudao.module.shop.dal.dataobject.recharge.RechargeOrderDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.shop.response.member.MemberHeadResponse; +import org.apache.ibatis.annotations.Param; /** * 订单 Service 接口 @@ -20,7 +21,7 @@ public interface RechargeOrderService { * @param createReqVO 创建信息 * @return 编号 */ - Integer createRechargeOrder(@Valid RechargeOrderCreateReqVO createReqVO); + Long createRechargeOrder(@Valid RechargeOrderCreateReqVO createReqVO); /** * 更新订单 @@ -68,6 +69,8 @@ public interface RechargeOrderService { */ List getRechargeOrderList(RechargeOrderExportReqVO exportReqVO); + List findListExcel(RechargeOrderExportReqVO data); + List memberOrderInfo(); MemberHeadResponse memberHeadInfo(); diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderServiceImpl.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderServiceImpl.java index 5a0e0d073..25ee53bcc 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderServiceImpl.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/service/recharge/RechargeOrderServiceImpl.java @@ -45,7 +45,7 @@ public class RechargeOrderServiceImpl implements RechargeOrderService { private RechargeOrderInfoMapper infoMapper; @Override - public Integer createRechargeOrder(RechargeOrderCreateReqVO createReqVO) { + public Long createRechargeOrder(RechargeOrderCreateReqVO createReqVO) { // 插入 RechargeOrderDO rechargeOrder = RechargeOrderConvert.INSTANCE.convert(createReqVO); rechargeOrderMapper.insert(rechargeOrder); @@ -98,6 +98,11 @@ public class RechargeOrderServiceImpl implements RechargeOrderService { return rechargeOrderMapper.selectList(exportReqVO); } + @Override + public List findListExcel(RechargeOrderExportReqVO data) { + return rechargeOrderMapper.findListExcel(data); + } + @Override public List memberOrderInfo() { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/support/pay/AliPayStrategy.java b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/support/pay/AliPayStrategy.java index 4f562faa0..ffd6cfaeb 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/support/pay/AliPayStrategy.java +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/java/cn/iocoder/yudao/module/shop/support/pay/AliPayStrategy.java @@ -72,7 +72,7 @@ public class AliPayStrategy implements IPayStrategy { bizContent.put("trade_no", orderDO.getPaySerialNumber()); bizContent.put("refund_amount", orderDO.getPayPrice()); bizContent.put("out_request_no", orderDO.getOrderId()); - + bizContent.put("notify_url",aliPayProperties.getRefundNotify()); request.setBizContent(bizContent.toString()); AlipayTradeRefundResponse response = null; try { diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/resources/mapper/recharge/RechargeOrderInfoMapper.xml b/yudao-module-mall/yudao-module-shop-biz/src/main/resources/mapper/recharge/RechargeOrderInfoMapper.xml index 067e4bf52..db6c2be2d 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/resources/mapper/recharge/RechargeOrderInfoMapper.xml +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/resources/mapper/recharge/RechargeOrderInfoMapper.xml @@ -9,4 +9,33 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + + + diff --git a/yudao-module-mall/yudao-module-shop-biz/src/main/resources/mapper/recharge/RechargeOrderMapper.xml b/yudao-module-mall/yudao-module-shop-biz/src/main/resources/mapper/recharge/RechargeOrderMapper.xml index fa2d4d137..09dcad21f 100644 --- a/yudao-module-mall/yudao-module-shop-biz/src/main/resources/mapper/recharge/RechargeOrderMapper.xml +++ b/yudao-module-mall/yudao-module-shop-biz/src/main/resources/mapper/recharge/RechargeOrderMapper.xml @@ -22,6 +22,8 @@ a.user_phone, a.confirm_phone, a.pay_type, + a.total_price, + a.pay_price, a.paid, d.parent_organization_name from cy_recharge_order a @@ -33,11 +35,14 @@ and a.order_id like CONCAT('%',#{data.orderId},'%') - - and a.pay_serial_number like CONCAT('%',#{data.payserialNumber},'%') + + and a.tenant_id =#{data.tenantId} + + + and a.pay_serial_number like CONCAT('%',#{data.paySerialNumber},'%') - and a.nickname like CONCAT('%',#{data.nickname},'%') + and b.nickname like CONCAT('%',#{data.nickname},'%') and a.real_name like CONCAT('%',#{data.realName},'%') @@ -53,4 +58,82 @@ + + + + + and a.paid=1 + + and a.order_id like CONCAT('%',#{data.orderId},'%') + + + and a.tenant_id =#{data.tenantId} + + + and a.pay_serial_number like CONCAT('%',#{data.paySerialNumber},'%') + + + and b.nickname like CONCAT('%',#{data.nickname},'%') + + + and a.real_name like CONCAT('%',#{data.realName},'%') + + + and a.user_phone like CONCAT('%',#{data.userPhone},'%') + + + and a.pay_time >=#{data.payTime[0]} + + + and a.pay_time <=#{data.payTime[1]} + + + diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApi.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApi.java index 5499cccf3..8e511b3a4 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApi.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApi.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.member.api.user; import cn.iocoder.yudao.module.member.api.user.dto.MemberUserBillDTO; import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; +import cn.iocoder.yudao.module.member.api.user.dto.PromoterDTO; import java.util.Collection; import java.util.List; @@ -80,4 +81,6 @@ public interface MemberUserApi { void saveMemberUser(String phone); + + PromoterDTO getPromoterDOByUserId(Long userId); } diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/dto/MemberUserRespDTO.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/dto/MemberUserRespDTO.java index 78d070873..a9ea59d13 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/dto/MemberUserRespDTO.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/dto/MemberUserRespDTO.java @@ -36,5 +36,8 @@ public class MemberUserRespDTO { */ private String mobile; - + /** + * 推广员id + */ + private Long promoterId; } diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/dto/PromoterDTO.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/dto/PromoterDTO.java new file mode 100644 index 000000000..aec281dd2 --- /dev/null +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/dto/PromoterDTO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.api.user.dto; + +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +/** + * @Title:PromoterDTO + * @Description: TODO + * @author: tangqian + * @date: 2023/5/19 14:06 + * @version: V1.0.0 + */ +@Data +public class PromoterDTO { + /** + * 编号 + */ + private Long id; + /** + * 组织id + */ + private Long deptId; + /** + * 会员id + */ + private Long userId; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApiImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApiImpl.java index 50858f1cf..4079e1408 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApiImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApiImpl.java @@ -4,8 +4,11 @@ import cn.iocoder.yudao.framework.common.exception.ServiceException; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; +import cn.iocoder.yudao.module.member.api.user.dto.PromoterDTO; import cn.iocoder.yudao.module.member.convert.user.UserConvert; +import cn.iocoder.yudao.module.member.dal.dataobject.promoter.PromoterDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; +import cn.iocoder.yudao.module.member.service.promoter.PromoterService; import cn.iocoder.yudao.module.member.service.user.MemberUserService; import com.thoughtworks.xstream.core.SecurityUtils; import org.springframework.stereotype.Service; @@ -26,6 +29,8 @@ public class MemberUserApiImpl implements MemberUserApi { @Resource private MemberUserService userService; + @Resource + private PromoterService promoterService; @Override @TenantIgnore @@ -102,6 +107,16 @@ public class MemberUserApiImpl implements MemberUserApi { userService.saveMemberUser(phone); } + @Override + @TenantIgnore + public PromoterDTO getPromoterDOByUserId(Long userId) { + PromoterDTO promoterDTO = new PromoterDTO(); + PromoterDO promoterDO = promoterService.getPromoterDOByUserId(userId); + promoterDTO.setDeptId(promoterDO.getDeptId()); + promoterDO.setId(promoterDO.getId()); + return promoterDTO; + } + /** * 获取个人资料 * diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/promoter/vo/PromoterRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/promoter/vo/PromoterRespVO.java index 69f37c119..f00ad8a4b 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/promoter/vo/PromoterRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/promoter/vo/PromoterRespVO.java @@ -13,6 +13,9 @@ public class PromoterRespVO extends PromoterBaseVO { private Long id; @Schema(description = "组织名称", required = true, example = "18443") private String orgName; - @Schema(description = "组织名称", required = true, example = "18443") + @Schema(description = "用户id", required = true, example = "18443") private String userId; + + @Schema(description = "组织简称", required = true, example = "18443") + private String deptName; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserController.java index 1d193a120..9121908f6 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserController.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; +import cn.iocoder.yudao.module.member.controller.admin.promoter.vo.PromoterRespVO; import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserInfoReqVO; import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserInfoRespVO; import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserUpdateMobileReqVO; @@ -76,6 +77,9 @@ public class AppUserController { AppUserInfoRespVO appUserInfoRespVO = UserConvert.INSTANCE.convert(user); if(promoterService.checkIsPromoterByUserId(getLoginUserId())){ appUserInfoRespVO.setUserType(UserTypeEnum.PROMOTER); + PromoterRespVO promoterRespVO = promoterService.getPromoterInfo(getLoginUserId()); + appUserInfoRespVO.setDeptName(promoterRespVO.getDeptName()); + appUserInfoRespVO.setParentDeptName(promoterRespVO.getOrgName()); }else{ appUserInfoRespVO.setUserType(UserTypeEnum.MEMBER); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/AppUserInfoRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/AppUserInfoRespVO.java index 8a11fad60..050bcfdc2 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/AppUserInfoRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/AppUserInfoRespVO.java @@ -12,6 +12,8 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class AppUserInfoRespVO { + @Schema(description = "用户id", required = true, example = "芋艿") + private Long userId; @Schema(description = "用户昵称", required = true, example = "芋艿") private String nickname; @@ -23,4 +25,10 @@ public class AppUserInfoRespVO { @Schema(description = "用户类型", required = true, example = "15601691300") private UserTypeEnum userType; + + @Schema(description = "组织", required = true, example = "15601691300") + private String deptName; + + @Schema(description = "组织全称", required = true, example = "15601691300") + private String parentDeptName; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberUserDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberUserDO.java index 3a58d39a3..4d24edc43 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberUserDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberUserDO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.member.dal.dataobject.user; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -29,7 +30,7 @@ public class MemberUserDO extends TenantBaseDO { /** * 用户ID */ - @TableId + @TableId(type = IdType.ASSIGN_ID) private Long id; /** * 用户昵称 diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/promoter/PromoterMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/promoter/PromoterMapper.java index 394215498..c440161cf 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/promoter/PromoterMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/promoter/PromoterMapper.java @@ -25,6 +25,9 @@ public interface PromoterMapper extends BaseMapperX { .orderByDesc(PromoterDO::getId)); } IPage findListPage(IPage page, @Param("data") PromoterPageReqVO data); + + PromoterRespVO getPromoterInfo(@Param("userId") Long userId); + default List selectList(PromoterExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(PromoterDO::getDeptId, reqVO.getDeptId()) diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java index b93e6ce5a..3a6df452f 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java @@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.member.controller.app.auth.vo.*; import cn.iocoder.yudao.module.member.convert.auth.AuthConvert; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper; +import cn.iocoder.yudao.module.member.service.promoter.PromoterService; import cn.iocoder.yudao.module.member.service.user.MemberUserService; import cn.iocoder.yudao.module.system.api.logger.LoginLogApi; import cn.iocoder.yudao.module.system.api.logger.dto.LoginLogCreateReqDTO; @@ -39,6 +40,7 @@ import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; /** @@ -69,6 +71,9 @@ public class MemberAuthServiceImpl implements MemberAuthService { @Resource private MemberUserMapper userMapper; + @Resource + private PromoterService promoterService; + @Override public AppAuthLoginRespVO login(AppAuthLoginReqVO reqVO) { // 使用手机 + 密码,进行登录。 diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/promoter/PromoterService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/promoter/PromoterService.java index d43e6bcae..298117795 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/promoter/PromoterService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/promoter/PromoterService.java @@ -77,6 +77,8 @@ public interface PromoterService { */ List getPromoterList(PromoterExportReqVO exportReqVO); + PromoterRespVO getPromoterInfo(Long userId); + /** * 批量导入推广员列表 * @@ -85,5 +87,5 @@ public interface PromoterService { * @return 导入结果 */ PromoterImportRespVO importUserList(List importUsers, boolean isUpdateSupport); - + PromoterDO getPromoterDOByUserId(Long userId); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/promoter/PromoterServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/promoter/PromoterServiceImpl.java index 93c891c78..d80564ea5 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/promoter/PromoterServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/promoter/PromoterServiceImpl.java @@ -16,6 +16,7 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; + import javax.annotation.Resource; import javax.validation.Validator; @@ -24,6 +25,7 @@ import org.springframework.validation.annotation.Validated; import java.time.LocalDateTime; import java.util.*; + import cn.iocoder.yudao.module.member.controller.admin.promoter.vo.*; import cn.iocoder.yudao.module.member.dal.dataobject.promoter.PromoterDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -62,20 +64,20 @@ public class PromoterServiceImpl implements PromoterService { public Long createPromoter(PromoterCreateReqVO createReqVO) { //判断手机号是否注册 MemberUserDO memberUserDO = memberUserService.getUserByMobile(createReqVO.getMobile()); - if(memberUserDO==null){ + if (memberUserDO == null) { //创建用户 memberUserDO = new MemberUserDO(); memberUserDO.setNickname(createReqVO.getNickname()); memberUserDO.setMobile(createReqVO.getMobile()); memberUserDO.setStatus(createReqVO.getStatus()); - memberUserDO.setPassword(createReqVO.getMobile().substring(createReqVO.getMobile().length()-6)); - memberUserService.createUserIfAbsent(createReqVO.getMobile(),createReqVO.getNickname(),getClientIP()); + memberUserDO.setPassword(createReqVO.getMobile().substring(createReqVO.getMobile().length() - 6)); + memberUserService.createUserIfAbsent(createReqVO.getMobile(), createReqVO.getNickname(), getClientIP()); } // 插入 PromoterDO promoter = PromoterConvert.INSTANCE.convert(createReqVO); promoter.setTenantId(SecurityFrameworkUtils.getLoginUser().getTenantId()); - Long count = promoterMapper.selectCount(Wrappers.lambdaQuery(PromoterDO.class).eq(PromoterDO::getUserId,memberUserDO.getId())); - if(count>0){ + Long count = promoterMapper.selectCount(Wrappers.lambdaQuery(PromoterDO.class).eq(PromoterDO::getUserId, memberUserDO.getId())); + if (count > 0) { throw new ServiceException(PROMOTER_EXISTS); } promoter.setUserId(memberUserDO.getId()); @@ -94,9 +96,9 @@ public class PromoterServiceImpl implements PromoterService { PromoterDO updateObj = PromoterConvert.INSTANCE.convert(updateReqVO); promoterMapper.updateById(updateObj); MemberUserDO memberUserDO = memberUserService.getUserByMobile(updateReqVO.getMobile()); - if(memberUserDO!=null&&!promoterDO.getUserId().equals(memberUserDO.getId())){ + if (memberUserDO != null && !promoterDO.getUserId().equals(memberUserDO.getId())) { throw new ServiceException(ErrorCodeConstants.USER_PHONE_EXISTS); - }else { + } else { memberUserDO.setMobile(updateReqVO.getMobile()); memberUserDO.setNickname(updateReqVO.getNickname()); memberUserService.updateById(memberUserDO); @@ -131,8 +133,8 @@ public class PromoterServiceImpl implements PromoterService { */ @Override public Boolean checkIsPromoterByUserId(Long userId) { - Long count = this.promoterMapper.selectCount(Wrappers.lambdaQuery(PromoterDO.class).eq(PromoterDO::getUserId,userId)); - return count>0; + Long count = this.promoterMapper.selectCount(Wrappers.lambdaQuery(PromoterDO.class).eq(PromoterDO::getUserId, userId)); + return count > 0; } @Override @@ -143,14 +145,14 @@ public class PromoterServiceImpl implements PromoterService { @Override public PageResult getPromoterPage(PromoterPageReqVO pageReqVO) { Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); - if(StrUtil.isNotBlank(pageReqVO.getDeptId())){ + if (StrUtil.isNotBlank(pageReqVO.getDeptId())) { DeptRespDTO deptRespDTO = deptApi.getDept(Long.parseLong(pageReqVO.getDeptId())); - if(deptRespDTO!=null){ + if (deptRespDTO != null) { pageReqVO.setDeptId(deptRespDTO.getParentOrganizationIds()); } } - promoterMapper.findListPage(page,pageReqVO); + promoterMapper.findListPage(page, pageReqVO); return new PageResult<>(page.getRecords(), page.getTotal()); } @@ -159,6 +161,11 @@ public class PromoterServiceImpl implements PromoterService { return promoterMapper.selectList(exportReqVO); } + @Override + public PromoterRespVO getPromoterInfo(Long userId) { + return promoterMapper.getPromoterInfo(userId); + } + /** * 批量导入推广员列表 * @@ -174,37 +181,37 @@ public class PromoterServiceImpl implements PromoterService { PromoterImportRespVO respVO = PromoterImportRespVO.builder().createUsernames(new ArrayList<>()) .updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build(); List deptRespDTOList = deptApi.getDeptList(); - Map nameList = deptRespDTOList.stream().collect(toMap(DeptRespDTO::getParentOrganizationName, value -> value,(value1,value2)->value1)); + Map nameList = deptRespDTOList.stream().collect(toMap(DeptRespDTO::getParentOrganizationName, value -> value, (value1, value2) -> value1)); importUsers.forEach(importUser -> { try { - ValidationUtils.validate(validator,importUser); + ValidationUtils.validate(validator, importUser); } catch (ServiceException ex) { respVO.getFailureUsernames().put(importUser.getNickName(), ex.getMessage()); return; } //判断手机号是否注册 MemberUserDO memberUserDO = memberUserService.getUserByMobile(importUser.getMobile()); - if(memberUserDO==null){ + if (memberUserDO == null) { //创建用户 memberUserDO = new MemberUserDO(); memberUserDO.setNickname(importUser.getNickName()); memberUserDO.setMobile(importUser.getMobile()); - memberUserDO.setPassword(importUser.getMobile().substring(importUser.getMobile().length()-6)); + memberUserDO.setPassword(importUser.getMobile().substring(importUser.getMobile().length() - 6)); memberUserDO.setStatus(1); - memberUserService.createUserIfAbsent(importUser.getMobile(),importUser.getNickName(),getClientIP()); + memberUserService.createUserIfAbsent(importUser.getMobile(), importUser.getNickName(), getClientIP()); } // 插入 PromoterDO promoter = new PromoterDO(); promoter.setTenantId(SecurityFrameworkUtils.getLoginUser().getTenantId()); promoter.setUserId(memberUserDO.getId()); promoter.setCreateTime(LocalDateTime.now()); - Long count = promoterMapper.selectCount(Wrappers.lambdaQuery(PromoterDO.class).eq(PromoterDO::getUserId,memberUserDO.getId())); - if(count>0){ + Long count = promoterMapper.selectCount(Wrappers.lambdaQuery(PromoterDO.class).eq(PromoterDO::getUserId, memberUserDO.getId())); + if (count > 0) { respVO.getFailureUsernames().put(importUser.getNickName(), "已经是推广员"); return; } DeptRespDTO deptRespDTO = nameList.get(importUser.getOrgName()); - if(deptRespDTO==null){ + if (deptRespDTO == null) { respVO.getFailureUsernames().put(importUser.getNickName(), "组织不存在"); return; } @@ -215,6 +222,12 @@ public class PromoterServiceImpl implements PromoterService { }); return respVO; } + + @Override + public PromoterDO getPromoterDOByUserId(Long userId) { + return promoterMapper.selectOne(Wrappers.lambdaQuery().eq(PromoterDO::getUserId, userId).last("LIMIT 1")); + } + /** * 对密码进行加密 * diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/promoter/PromoterMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/promoter/PromoterMapper.xml index ab426817b..1c0cf75cc 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/promoter/PromoterMapper.xml +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/promoter/PromoterMapper.xml @@ -29,4 +29,14 @@ + + + diff --git a/yudao-module-system/yudao-module-system-biz/pom.xml b/yudao-module-system/yudao-module-system-biz/pom.xml index 898029163..11d488395 100644 --- a/yudao-module-system/yudao-module-system-biz/pom.xml +++ b/yudao-module-system/yudao-module-system-biz/pom.xml @@ -115,6 +115,10 @@ org.springframework.boot spring-boot-starter-mail + + com.github.binarywang + wx-java-mp-spring-boot-starter + diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/TenantController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/TenantController.java index efc531911..7a2d21906 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/TenantController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/TenantController.java @@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.system.service.tenant.TenantService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; +import me.chanjar.weixin.mp.api.WxMpService; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -36,6 +37,7 @@ public class TenantController { @Resource private TenantService tenantService; + @GetMapping("/get-id-by-name") @PermitAll @Operation(summary = "使用租户名,获得租户编号", description = "登录界面,根据用户的租户名,获得租户编号") @@ -108,6 +110,4 @@ public class TenantController { List datas = TenantConvert.INSTANCE.convertList02(list); ExcelUtils.write(response, "租户.xls", "数据", TenantExcelVO.class, datas); } - - } diff --git a/yudao-ui-admin/src/views/shop/rechargeGear/index.vue b/yudao-ui-admin/src/views/shop/rechargeGear/index.vue index d16508727..37f70a36c 100644 --- a/yudao-ui-admin/src/views/shop/rechargeGear/index.vue +++ b/yudao-ui-admin/src/views/shop/rechargeGear/index.vue @@ -31,6 +31,8 @@ + +