分销二维码接口

This commit is contained in:
张松 2025-10-28 15:03:58 +08:00
parent b355cd0ba7
commit 30c513d71d
3 changed files with 105 additions and 73 deletions

View File

@ -40,78 +40,78 @@ public class DistributionController {
@Resource
private AppWxServiceImpl appWxService;
// /**
// * 配置信息详情
// */
// @SaAdminCheckPermission(value = "distribution:detail", name = "分销配置")
// @GetMapping
// public CzgResult<MkDistributionConfigVO> detail() {
// return CzgResult.success(configService.detail(StpKit.USER.getShopId()));
// }
//
// /**
// * 配置信息修改
// *
// * @return 是否成功
// */
// @SaAdminCheckPermission(value = "distribution:edit", name = "分销修改")
// @SaCheckMainShop
// @PutMapping
// public CzgResult<Boolean> edit( @RequestBody MkDistributionConfigDTO dto) {
// return CzgResult.success(configService.edit(StpKit.USER.getShopId(), dto));
// }
//
//
// /**
// * 现金充值
// * @param payParam 充值信息
// * @return 是否成功
// */
// @PostMapping("/cashPay")
// public CzgResult<Boolean> cashPayOrder(@Validated @RequestBody MkDistributionPayDTO payParam) {
// AssertUtil.isNull(payParam.getShopId(), "店铺id不能为空");
// AssertUtil.isNull(payParam.getAmount(), "充值金额不能为空");
// AssertUtil.isTrue(payParam.getAmount().compareTo(BigDecimal.ZERO) == 0, "金额不为0");
// return CzgResult.success(distributionUserService.cashPayOrder(StpKit.USER.getLoginIdAsLong(), payParam));
// }
//
// /**
// * 金额记录
// * @param type manual_recharge充值 self_recharge自助充值 refund退款 manual_sub手动扣减 sub统扣减
// * @param key 搜索
// */
// @GetMapping("/flow")
// public CzgResult<Map<String, Object>> flow(@RequestParam(required = false) Long shopId, @RequestParam(required = false) String type, @RequestParam(required = false) String key) {
// return CzgResult.success(distributionAmountFlowService.pageInfo(StpKit.USER.isAdmin() ? shopId : StpKit.USER.getShopId(), type, key));
// }
//
// /**
// * 开通记录
// * @param startTime 开始时间
// * @param endTime 结束时间
// * @param key 用户id昵称
// */
// @GetMapping("openFlow")
// public CzgResult<Map<String, Object>> openFlow(@RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) String key) {
// return CzgResult.success(distributionAmountFlowService.openPageInfo(StpKit.USER.getShopId(),
// StrUtil.isNotBlank(startTime) ? DateUtil.parseLocalDateTime(startTime) : null, StrUtil.isNotBlank(endTime) ? DateUtil.parseLocalDateTime(endTime) : null, key));
// }
//
//
// /**
// * 分销明细
// * @param startTime 开始时间
// * @param endTime 结束时间
// * @param key 用户id昵称
// * @param status pending待入账 success已入账
// */
// @GetMapping("distributionFlow")
// public CzgResult<Map<String, Object>> distributionFlow(@RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime,
// @RequestParam(required = false) String key, @RequestParam(required = false) String status,
// @RequestParam(required = false) Long id) {
// return CzgResult.success(distributionFlowService.pageInfo(StpKit.USER.getShopId(),
// StrUtil.isNotBlank(startTime) ? DateUtil.parseLocalDateTime(startTime) : null, StrUtil.isNotBlank(endTime) ? DateUtil.parseLocalDateTime(endTime) : null, key, status, id));
// }
/**
* 配置信息详情
*/
@SaAdminCheckPermission(value = "distribution:detail", name = "分销配置")
@GetMapping
public CzgResult<MkDistributionConfigVO> detail() {
return CzgResult.success(configService.detail(StpKit.USER.getShopId()));
}
/**
* 配置信息修改
*
* @return 是否成功
*/
@SaAdminCheckPermission(value = "distribution:edit", name = "分销修改")
@SaCheckMainShop
@PutMapping
public CzgResult<Boolean> edit( @RequestBody MkDistributionConfigDTO dto) {
return CzgResult.success(configService.edit(StpKit.USER.getShopId(), dto));
}
/**
* 现金充值
* @param payParam 充值信息
* @return 是否成功
*/
@PostMapping("/cashPay")
public CzgResult<Boolean> cashPayOrder(@Validated @RequestBody MkDistributionPayDTO payParam) {
AssertUtil.isNull(payParam.getShopId(), "店铺id不能为空");
AssertUtil.isNull(payParam.getAmount(), "充值金额不能为空");
AssertUtil.isTrue(payParam.getAmount().compareTo(BigDecimal.ZERO) == 0, "金额不为0");
return CzgResult.success(distributionUserService.cashPayOrder(StpKit.USER.getLoginIdAsLong(), payParam));
}
/**
* 金额记录
* @param type manual_recharge充值 self_recharge自助充值 refund退款 manual_sub手动扣减 sub统扣减
* @param key 搜索
*/
@GetMapping("/flow")
public CzgResult<Map<String, Object>> flow(@RequestParam(required = false) Long shopId, @RequestParam(required = false) String type, @RequestParam(required = false) String key) {
return CzgResult.success(distributionAmountFlowService.pageInfo(StpKit.USER.isAdmin() ? shopId : StpKit.USER.getShopId(), type, key));
}
/**
* 开通记录
* @param startTime 开始时间
* @param endTime 结束时间
* @param key 用户id昵称
*/
@GetMapping("openFlow")
public CzgResult<Map<String, Object>> openFlow(@RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) String key) {
return CzgResult.success(distributionAmountFlowService.openPageInfo(StpKit.USER.getShopId(),
StrUtil.isNotBlank(startTime) ? DateUtil.parseLocalDateTime(startTime) : null, StrUtil.isNotBlank(endTime) ? DateUtil.parseLocalDateTime(endTime) : null, key));
}
/**
* 分销明细
* @param startTime 开始时间
* @param endTime 结束时间
* @param key 用户id昵称
* @param status pending待入账 success已入账
*/
@GetMapping("distributionFlow")
public CzgResult<Map<String, Object>> distributionFlow(@RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime,
@RequestParam(required = false) String key, @RequestParam(required = false) String status,
@RequestParam(required = false) Long id) {
return CzgResult.success(distributionFlowService.pageInfo(StpKit.USER.getShopId(),
StrUtil.isNotBlank(startTime) ? DateUtil.parseLocalDateTime(startTime) : null, StrUtil.isNotBlank(endTime) ? DateUtil.parseLocalDateTime(endTime) : null, key, status, id));
}
/**
@ -136,7 +136,7 @@ public class DistributionController {
*/
@GetMapping("/rechargeQrCode")
public CzgResult<String> rechargeQrCode(@RequestParam BigDecimal amount) {
return CzgResult.success(appWxService.genCode("pages/pay", "amount=" + amount + "&shopId=" + StpKit.USER.getShopId()));
return CzgResult.success(configService.rechargeQrCode(StpKit.USER.getShopId(), amount));
}

View File

@ -19,4 +19,6 @@ public interface MkDistributionConfigService extends IService<MkDistributionConf
MkDistributionConfigVO detail(Long shopId);
Boolean edit(Long shopId, MkDistributionConfigDTO dto);
String rechargeQrCode(Long shopId, BigDecimal amount);
}

View File

@ -1,6 +1,8 @@
package com.czg.service.market.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.codec.Base64Encoder;
import cn.hutool.extra.qrcode.QrCodeUtil;
import com.czg.market.dto.MkDistributionConfigDTO;
import com.czg.market.entity.MkDistributionConfig;
import com.czg.market.entity.MkDistributionLevelConfig;
@ -16,6 +18,11 @@ import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.math.BigDecimal;
/**
* 分销配置 服务层实现
*
@ -55,4 +62,27 @@ public class MkDistributionConfigServiceImpl extends ServiceImpl<MkDistributionC
return updateById(config);
}
@Override
public String rechargeQrCode(Long shopId, BigDecimal amount) {
try {
// 生成二维码图片
BufferedImage image = QrCodeUtil.generate(
"https://cashier.sxczgkj.com/payTest?shopId=" + shopId + "&amount=" + amount,
500,
500
);
// 转为字节流
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(image, "png", os);
// Base64
String base64 = Base64Encoder.encode(os.toByteArray());
return "data:image/png;base64," + base64;
} catch (Exception e) {
throw new RuntimeException("生成二维码失败", e);
}
}
}