diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/PayController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/PayController.java new file mode 100644 index 0000000..38fd87d --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/PayController.java @@ -0,0 +1,11 @@ +package com.ruoyi.xq.controller.app; + +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/pay") +@Tag(name = "支付接口") +public class PayController { +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/VipController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/VipAppController.java similarity index 98% rename from ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/VipController.java rename to ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/VipAppController.java index 9f59e9c..25ac32b 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/VipController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/VipAppController.java @@ -26,7 +26,7 @@ import java.util.List; @RestController @RequestMapping("/api/vip") @Tag(name = "VIP相关接口") -public class VipController { +public class VipAppController { @Autowired private VipPriceService vipPriceService; diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/WxTransAppController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/WxTransAppController.java new file mode 100644 index 0000000..5d5a07b --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/WxTransAppController.java @@ -0,0 +1,53 @@ +package com.ruoyi.xq.controller.app; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.helper.LoginHelper; +import com.ruoyi.xq.domain.WxTransOrder; +import com.ruoyi.xq.dto.app.pay.OrderCreateVo; +import com.ruoyi.xq.dto.app.wxtrans.GenWxTransOrderReq; +import com.ruoyi.xq.dto.app.wxtrans.WxTransPriceAppVo; +import com.ruoyi.xq.enums.common.SystemConfigEnum; +import com.ruoyi.xq.manager.SystemConfigManager; +import com.ruoyi.xq.service.WxTransOrderService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; + +@RestController +@RequestMapping("/api/wxTrans") +@Tag(name = "微信交换接口") +public class WxTransAppController { + + @Autowired + private WxTransOrderService wxTransOrderService; + @Autowired + private SystemConfigManager systemConfigManager; + + @GetMapping("/get/price") + @Operation(summary = "获取微信交换单价") + @Log(title = "获取微信交换单价", businessType = BusinessType.OTHER, isSaveDb = false) + public R getPrice(){ + WxTransPriceAppVo vo = new WxTransPriceAppVo(); + BigDecimal price = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.WX_TRANS_PRICE); + vo.setPrice(price); + return R.ok(vo); + } + + @PostMapping("/order/create") + @Operation(summary = "生成微信交换订单") + @Log(title = "生成微信交换订单", businessType = BusinessType.OTHER, isSaveDb = false) + public R createVipOrder(@RequestBody GenWxTransOrderReq req){ + Long userId = LoginHelper.getUserId(); + WxTransOrder vipOrder = wxTransOrderService.createVipOrder(userId, req.getWxTransNum()); + OrderCreateVo result = new OrderCreateVo(); + result.setPrice(vipOrder.getWxPrice()); + result.setOrderNo(vipOrder.getOrderNo()); + result.setOrderName(vipOrder.getOrderName()); + return R.ok(result); + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/wxtrans/GenWxTransOrderReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/wxtrans/GenWxTransOrderReq.java new file mode 100644 index 0000000..c611c91 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/wxtrans/GenWxTransOrderReq.java @@ -0,0 +1,10 @@ +package com.ruoyi.xq.dto.app.wxtrans; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class GenWxTransOrderReq { + @Schema(description = "wx交换次数") + private Integer wxTransNum; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/wxtrans/WxTransPriceAppVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/wxtrans/WxTransPriceAppVo.java new file mode 100644 index 0000000..fd499a6 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/wxtrans/WxTransPriceAppVo.java @@ -0,0 +1,12 @@ +package com.ruoyi.xq.dto.app.wxtrans; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class WxTransPriceAppVo { + @Schema(description = "价格") + private BigDecimal price; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/SystemConfigEnum.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/SystemConfigEnum.java index 965b9ab..074097c 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/SystemConfigEnum.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/SystemConfigEnum.java @@ -11,7 +11,10 @@ import lombok.Setter; * @author ZL */ public enum SystemConfigEnum { + // TODO 限制为两位小数 + WX_TRANS_PRICE("0.01", "微信交换次数价格", SystemConfigGroupEnum.BUSINESS, null), RANK_LOVE_DAY_AWARD("138,108,88,58,38,28,28,28,28,28,28", "魅力榜日榜前10名奖励", SystemConfigGroupEnum.BUSINESS, new NumberListSystemConfigCheck(10)), + RANK_LOVE_WEEK_AWARD("888,588,388,288,188,138,138,138,138,138,138,138", "魅力榜周榜前10名奖励",SystemConfigGroupEnum.BUSINESS, new NumberListSystemConfigCheck(10)), RANK_INVITE_DAY_AWARD("138,108,88,58,38,28,28,28,28,28,28", "邀请榜日榜前10名奖励",SystemConfigGroupEnum.BUSINESS,new NumberListSystemConfigCheck(10)), RANK_INVITE_WEEK_AWARD("888,588,388,288,188,138,138,138,138,138,138,138", "邀请榜周榜前10名奖励",SystemConfigGroupEnum.BUSINESS,new NumberListSystemConfigCheck(10)), diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/wxtrans/WxTransSourceEnum.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/wxtrans/WxTransSourceEnum.java new file mode 100644 index 0000000..119d269 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/wxtrans/WxTransSourceEnum.java @@ -0,0 +1,19 @@ +package com.ruoyi.xq.enums.wxtrans; + +import lombok.Getter; + +@Getter +public enum WxTransSourceEnum { + ORDER(1,"订单"), + VIP(2,"VIP"), + ADMIN(3,"后台管理新增"), + + ; + private final Integer code; + private final String text; + + WxTransSourceEnum(Integer code, String text) { + this.code = code; + this.text = text; + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/WxTransOrderService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/WxTransOrderService.java index b9e3076..6c38003 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/WxTransOrderService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/WxTransOrderService.java @@ -11,4 +11,5 @@ import com.ruoyi.xq.domain.WxTransOrder; */ public interface WxTransOrderService extends IService { + WxTransOrder createVipOrder(Long userId, Integer wxTransNum); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/WxTransOrderServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/WxTransOrderServiceImpl.java index fd3e5af..b3e94ee 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/WxTransOrderServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/WxTransOrderServiceImpl.java @@ -1,11 +1,23 @@ package com.ruoyi.xq.service.impl; +import cn.hutool.core.util.NumberUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.xq.domain.User; import com.ruoyi.xq.domain.WxTransOrder; +import com.ruoyi.xq.enums.common.OrderTypeEnum; +import com.ruoyi.xq.enums.common.SystemConfigEnum; +import com.ruoyi.xq.enums.pay.PayStatusEnum; +import com.ruoyi.xq.enums.wxtrans.WxTransSourceEnum; +import com.ruoyi.xq.manager.OrderNoUtil; +import com.ruoyi.xq.manager.SystemConfigManager; import com.ruoyi.xq.mapper.WxTransOrderMapper; +import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.service.WxTransOrderService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; + /** * 微信交换订单Service业务层处理 * @@ -15,4 +27,26 @@ import org.springframework.stereotype.Service; @Service public class WxTransOrderServiceImpl extends ServiceImpl implements WxTransOrderService { + @Autowired + private SystemConfigManager systemConfigManager; + @Autowired + private UserService userService; + + @Override + public WxTransOrder createVipOrder(Long userId, Integer wxTransNum) { + BigDecimal price = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.WX_TRANS_PRICE); + String orderNo = OrderNoUtil.gen(OrderTypeEnum.VIP); + User user = userService.getById(userId); + WxTransOrder order = new WxTransOrder(); + order.setUserId(user.getId()); + order.setUsercode(user.getUsercode()); + order.setWxNum(wxTransNum); + order.setWxPrice(NumberUtil.add(price,wxTransNum)); + order.setOrderName("微信交换订单"); + order.setOrderNo(orderNo); + order.setPayStatus(PayStatusEnum.READY_PAY.getCode()); + order.setSource(WxTransSourceEnum.ORDER.getCode()); + this.save(order); + return order; + } }