diff --git a/server/like-admin/src/main/java/com/mdd/admin/controller/marketing/MarketingRechargeController.java b/server/like-admin/src/main/java/com/mdd/admin/controller/marketing/MarketingRechargeController.java new file mode 100644 index 00000000..62af4fb9 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/controller/marketing/MarketingRechargeController.java @@ -0,0 +1,36 @@ +package com.mdd.admin.controller.marketing; + +import com.mdd.admin.service.IMarketingRechargeService; +import com.mdd.admin.validate.marketing.MarketingRechargeValidate; +import com.mdd.admin.vo.marketing.MarketingRechargeVo; +import com.mdd.common.core.AjaxResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("api/marketing/recharge") +@Api("营销充值管理") +public class MarketingRechargeController { + + @Resource + IMarketingRechargeService iMarketingRechargeService; + + @GetMapping("/detail") + @ApiModelProperty(value = "充值配置详情") + public AjaxResult detail() { + MarketingRechargeVo vo = iMarketingRechargeService.detail(); + return AjaxResult.success(vo); + } + + @PostMapping("/save") + @ApiModelProperty(value = "充值配置保存") + public AjaxResult save(@Validated @RequestBody MarketingRechargeValidate rechargeValidate) { + iMarketingRechargeService.save(rechargeValidate); + return AjaxResult.success(); + } + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/IMarketingRechargeService.java b/server/like-admin/src/main/java/com/mdd/admin/service/IMarketingRechargeService.java new file mode 100644 index 00000000..eda60416 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/service/IMarketingRechargeService.java @@ -0,0 +1,27 @@ +package com.mdd.admin.service; + +import com.mdd.admin.validate.marketing.MarketingRechargeValidate; +import com.mdd.admin.vo.marketing.MarketingRechargeVo; + +/** + * 营销充值服务接口类 + */ +public interface IMarketingRechargeService { + + /** + * 充值配置详情 + * + * @author fzr + * @return MarketingRechargeVo + */ + MarketingRechargeVo detail(); + + /** + * 充值配置保存 + * + * @author fzr + * @param rechargeValidate 充值参数 + */ + void save(MarketingRechargeValidate rechargeValidate); + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/impl/MarketingRechargeServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/impl/MarketingRechargeServiceImpl.java new file mode 100644 index 00000000..79f3ce5c --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/service/impl/MarketingRechargeServiceImpl.java @@ -0,0 +1,45 @@ +package com.mdd.admin.service.impl; + +import com.mdd.admin.service.IMarketingRechargeService; +import com.mdd.admin.validate.marketing.MarketingRechargeValidate; +import com.mdd.admin.vo.marketing.MarketingRechargeVo; +import com.mdd.common.util.ConfigUtils; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.Map; + +/** + * 营销充值服务实现类 + */ +@Service +public class MarketingRechargeServiceImpl implements IMarketingRechargeService { + + /** + * 充值配置详情 + * + * @author fzr + * @return MarketingRechargeVo + */ + @Override + public MarketingRechargeVo detail() { + Map config = ConfigUtils.get("recharge"); + + MarketingRechargeVo vo = new MarketingRechargeVo(); + vo.setOpenRecharge(Integer.parseInt(config.getOrDefault("openRecharge", "0"))); + vo.setMinRechargeMoney(new BigDecimal(config.getOrDefault("minRechargeMoney", "0"))); + return vo; + } + + /** + * 充值配置保存 + * + * @author fzr + * @param rechargeValidate 充值参数 + */ + @Override + public void save(MarketingRechargeValidate rechargeValidate) { + + } + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/validate/marketing/MarketingRechargeValidate.java b/server/like-admin/src/main/java/com/mdd/admin/validate/marketing/MarketingRechargeValidate.java new file mode 100644 index 00000000..2d05f76f --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/validate/marketing/MarketingRechargeValidate.java @@ -0,0 +1,25 @@ +package com.mdd.admin.validate.marketing; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("订单搜索参数") +public class MarketingRechargeValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "openRecharge参数缺失") + @ApiModelProperty("是否开启充值: 0=否,1=是") + private Integer openRecharge; + + @NotNull(message = "minRechargeMoney参数缺失") + @ApiModelProperty("最低充值金额") + private BigDecimal minRechargeMoney; + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/vo/marketing/MarketingRechargeVo.java b/server/like-admin/src/main/java/com/mdd/admin/vo/marketing/MarketingRechargeVo.java new file mode 100644 index 00000000..68440333 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/vo/marketing/MarketingRechargeVo.java @@ -0,0 +1,22 @@ +package com.mdd.admin.vo.marketing; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("营销充值Vo") +public class MarketingRechargeVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("是否开启充值: 0=否,1=是") + private Integer openRecharge; + + @ApiModelProperty("最低充值金额") + private BigDecimal minRechargeMoney; + +} diff --git a/server/like-front/src/main/java/com/mdd/front/controller/LogsController.java b/server/like-front/src/main/java/com/mdd/front/controller/LogsController.java index 07131f15..d06fb4fe 100644 --- a/server/like-front/src/main/java/com/mdd/front/controller/LogsController.java +++ b/server/like-front/src/main/java/com/mdd/front/controller/LogsController.java @@ -4,7 +4,7 @@ import com.mdd.common.core.AjaxResult; import com.mdd.common.core.PageResult; import com.mdd.front.service.ILogsService; import com.mdd.front.validate.common.PageValidate; -import com.mdd.front.vo.LogRecordDataVo; +import com.mdd.front.vo.RechargeRecordVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.validation.annotation.Validated; @@ -28,7 +28,7 @@ public class LogsController { public AjaxResult userMoney(@Validated PageValidate pageValidate, @RequestParam(defaultValue = "0") Integer type) { - PageResult list = iLogsService.userMoney(pageValidate, type); + PageResult list = iLogsService.userMoney(pageValidate, type); return AjaxResult.success(list); } diff --git a/server/like-front/src/main/java/com/mdd/front/controller/RechargeController.java b/server/like-front/src/main/java/com/mdd/front/controller/RechargeController.java index ef30000f..b545042e 100644 --- a/server/like-front/src/main/java/com/mdd/front/controller/RechargeController.java +++ b/server/like-front/src/main/java/com/mdd/front/controller/RechargeController.java @@ -6,7 +6,8 @@ import com.mdd.front.LikeFrontThreadLocal; import com.mdd.front.service.IRechargeService; import com.mdd.front.validate.RechargeValidate; import com.mdd.front.validate.common.PageValidate; -import com.mdd.front.vo.LogRecordDataVo; +import com.mdd.front.vo.RechargeConfigVo; +import com.mdd.front.vo.RechargeRecordVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.validation.annotation.Validated; @@ -23,12 +24,21 @@ public class RechargeController { @Resource IRechargeService iRechargeService; + @GetMapping("/config") + @ApiOperation(value = "充值配置") + public AjaxResult config() { + Integer userId = LikeFrontThreadLocal.getUserId(); + + RechargeConfigVo vo = iRechargeService.config(userId); + return AjaxResult.success(vo); + } + @GetMapping("/record") @ApiOperation(value = "充值记录") public AjaxResult record(@Validated PageValidate pageValidate) { Integer userId = LikeFrontThreadLocal.getUserId(); - PageResult list = iRechargeService.record(userId, pageValidate); + PageResult list = iRechargeService.record(userId, pageValidate); return AjaxResult.success(list); } diff --git a/server/like-front/src/main/java/com/mdd/front/service/ILogsService.java b/server/like-front/src/main/java/com/mdd/front/service/ILogsService.java index b5eb1baa..f54d5feb 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/ILogsService.java +++ b/server/like-front/src/main/java/com/mdd/front/service/ILogsService.java @@ -2,13 +2,13 @@ package com.mdd.front.service; import com.mdd.common.core.PageResult; import com.mdd.front.validate.common.PageValidate; -import com.mdd.front.vo.LogRecordDataVo; +import com.mdd.front.vo.RechargeRecordVo; /** * 日志接口服务类 */ public interface ILogsService { - PageResult userMoney(PageValidate pageValidate, Integer type); + PageResult userMoney(PageValidate pageValidate, Integer type); } diff --git a/server/like-front/src/main/java/com/mdd/front/service/IRechargeService.java b/server/like-front/src/main/java/com/mdd/front/service/IRechargeService.java index 7a2ea607..ad768987 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/IRechargeService.java +++ b/server/like-front/src/main/java/com/mdd/front/service/IRechargeService.java @@ -3,7 +3,8 @@ package com.mdd.front.service; import com.mdd.common.core.PageResult; import com.mdd.front.validate.RechargeValidate; import com.mdd.front.validate.common.PageValidate; -import com.mdd.front.vo.LogRecordDataVo; +import com.mdd.front.vo.RechargeConfigVo; +import com.mdd.front.vo.RechargeRecordVo; import java.util.Map; @@ -12,14 +13,24 @@ import java.util.Map; */ public interface IRechargeService { + /** + * 充值配置 + * + * @author fzr + * @param userId 用户ID + * @return RechargeConfigVo + */ + RechargeConfigVo config(Integer userId); + /** * 充值记录 * + * @author fzr * @param userId 用户ID * @param pageValidate 分页参数 * @return PageResult */ - PageResult record(Integer userId, PageValidate pageValidate); + PageResult record(Integer userId, PageValidate pageValidate); /** * 充值下单 diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/LogsServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/LogsServiceImpl.java index 216af9f3..25229221 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/impl/LogsServiceImpl.java +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/LogsServiceImpl.java @@ -10,7 +10,7 @@ import com.mdd.common.mapper.log.LogMoneyMapper; import com.mdd.common.util.TimeUtils; import com.mdd.front.service.ILogsService; import com.mdd.front.validate.common.PageValidate; -import com.mdd.front.vo.LogRecordDataVo; +import com.mdd.front.vo.RechargeRecordVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -24,7 +24,7 @@ public class LogsServiceImpl implements ILogsService { LogMoneyMapper logMoneyMapper; @Override - public PageResult userMoney(PageValidate pageValidate, Integer type) { + public PageResult userMoney(PageValidate pageValidate, Integer type) { Integer pageNo = pageValidate.getPageNo(); Integer pageSize = pageValidate.getPageSize(); @@ -36,9 +36,9 @@ public class LogsServiceImpl implements ILogsService { IPage iPage = logMoneyMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper); - List list = new LinkedList<>(); + List list = new LinkedList<>(); for (LogMoney logMoney : iPage.getRecords()) { - LogRecordDataVo vo = new LogRecordDataVo(); + RechargeRecordVo vo = new RechargeRecordVo(); vo.setId(logMoney.getId()); vo.setAction(logMoney.getAction()); diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/RechargeServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/RechargeServiceImpl.java index 8263e04f..f4781891 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/impl/RechargeServiceImpl.java +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/RechargeServiceImpl.java @@ -5,16 +5,22 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mdd.common.core.PageResult; import com.mdd.common.entity.RechargeOrder; +import com.mdd.common.entity.user.User; import com.mdd.common.enums.PaymentEnum; +import com.mdd.common.exception.OperateException; import com.mdd.common.mapper.RechargeOrderMapper; +import com.mdd.common.mapper.user.UserMapper; +import com.mdd.common.util.ConfigUtils; import com.mdd.common.util.TimeUtils; import com.mdd.front.service.IRechargeService; import com.mdd.front.validate.RechargeValidate; import com.mdd.front.validate.common.PageValidate; -import com.mdd.front.vo.LogRecordDataVo; +import com.mdd.front.vo.RechargeConfigVo; +import com.mdd.front.vo.RechargeRecordVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; @@ -29,6 +35,28 @@ public class RechargeServiceImpl implements IRechargeService { @Resource RechargeOrderMapper rechargeOrderMapper; + @Resource + UserMapper userMapper; + + /** + * 充值配置 + * + * @author fzr + * @param userId 用户ID + * @return RechargeConfigVo + */ + @Override + public RechargeConfigVo config(Integer userId) { + User user = userMapper.selectById(userId); + Map config = ConfigUtils.get("recharge"); + + RechargeConfigVo vo = new RechargeConfigVo(); + vo.setOpenRecharge(Integer.parseInt(config.getOrDefault("openRecharge", "0"))); + vo.setMinRechargeMoney(new BigDecimal(config.getOrDefault("minRechargeMoney", "0"))); + vo.setUserMoney(user.getMoney()); + return vo; + } + /** * 充值记录 * @@ -38,7 +66,7 @@ public class RechargeServiceImpl implements IRechargeService { * @return PageResult */ @Override - public PageResult record(Integer userId, PageValidate pageValidate) { + public PageResult record(Integer userId, PageValidate pageValidate) { Integer pageNo = pageValidate.getPageNo(); Integer pageSize = pageValidate.getPageSize(); @@ -49,9 +77,9 @@ public class RechargeServiceImpl implements IRechargeService { IPage iPage = rechargeOrderMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper); - List list = new LinkedList<>(); + List list = new LinkedList<>(); for (RechargeOrder rechargeOrder : iPage.getRecords()) { - LogRecordDataVo vo = new LogRecordDataVo(); + RechargeRecordVo vo = new RechargeRecordVo(); vo.setId(rechargeOrder.getId()); vo.setAction(1); vo.setOrderAmount(rechargeOrder.getOrderAmount()); @@ -74,6 +102,15 @@ public class RechargeServiceImpl implements IRechargeService { */ @Override public Map placeOrder(Integer userId, Integer terminal, RechargeValidate rechargeValidate) { + RechargeConfigVo config = this.config(userId); + if (config.getOpenRecharge().equals(0)) { + throw new OperateException("充值功能已关闭"); + } + + if (rechargeValidate.getOrderAmount().compareTo(config.getMinRechargeMoney()) < 0) { + throw new OperateException("充值金额不能少于" + config.getMinRechargeMoney()); + } + RechargeOrder order = new RechargeOrder(); order.setUserId(userId); order.setOrderTerminal(terminal); diff --git a/server/like-front/src/main/java/com/mdd/front/vo/RechargeConfigVo.java b/server/like-front/src/main/java/com/mdd/front/vo/RechargeConfigVo.java new file mode 100644 index 00000000..d597308f --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/vo/RechargeConfigVo.java @@ -0,0 +1,25 @@ +package com.mdd.front.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel(value = "充值配置Vo") +public class RechargeConfigVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("是否开启充值: 0=否,1=是") + private Integer openRecharge; + + @ApiModelProperty("最低充值金额") + private BigDecimal minRechargeMoney; + + @ApiModelProperty("用户钱包") + private BigDecimal userMoney; + +} diff --git a/server/like-front/src/main/java/com/mdd/front/vo/LogRecordDataVo.java b/server/like-front/src/main/java/com/mdd/front/vo/RechargeRecordVo.java similarity index 78% rename from server/like-front/src/main/java/com/mdd/front/vo/LogRecordDataVo.java rename to server/like-front/src/main/java/com/mdd/front/vo/RechargeRecordVo.java index 0798e645..529abdfc 100644 --- a/server/like-front/src/main/java/com/mdd/front/vo/LogRecordDataVo.java +++ b/server/like-front/src/main/java/com/mdd/front/vo/RechargeRecordVo.java @@ -8,8 +8,10 @@ import java.io.Serializable; import java.math.BigDecimal; @Data -@ApiModel(value = "日志记录Vo") -public class LogRecordDataVo implements Serializable { +@ApiModel(value = "充值记录Vo") +public class RechargeRecordVo implements Serializable { + + private static final long serialVersionUID = 1L; @ApiModelProperty(value = "ID") private Integer id;