提交新功能 分销商 积分 会员体系
This commit is contained in:
@ -117,6 +117,12 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.binarywang</groupId>
|
||||
<artifactId>weixin-java-miniapp</artifactId>
|
||||
<version>4.4.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
@ -0,0 +1,25 @@
|
||||
package co.yixiang.yshop.module.infra.api.config;
|
||||
|
||||
import co.yixiang.yshop.module.infra.api.config.dto.ConfigDTO;
|
||||
import co.yixiang.yshop.module.infra.convert.config.ConfigConvert;
|
||||
import co.yixiang.yshop.module.infra.dal.dataobject.config.ConfigDO;
|
||||
import co.yixiang.yshop.module.infra.service.config.ConfigService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author pepis
|
||||
* @apiNote
|
||||
**/
|
||||
@Service
|
||||
public class ConfigApiImpl implements ConfigApi {
|
||||
@Resource
|
||||
private ConfigService configService;
|
||||
|
||||
@Override
|
||||
public ConfigDTO getConfigByKey(String key) {
|
||||
ConfigDO configDO = configService.getConfigByKey(key);
|
||||
return ConfigConvert.INSTANCE.convert2DTO(configDO);
|
||||
}
|
||||
}
|
@ -81,6 +81,14 @@ public class ConfigController {
|
||||
return success(config.getValue());
|
||||
}
|
||||
|
||||
@GetMapping(value = "/get-value-by-category")
|
||||
@Operation(summary = "根据参数分类查询参数值")
|
||||
@Parameter(name = "category", description = "分类", required = true, example = "url")
|
||||
public CommonResult<List<ConfigRespVO>> getConfigCategory(@RequestParam("category") String category) {
|
||||
List<ConfigDO> configs = configService.getConfigByCategory(category);
|
||||
return success(ConfigConvert.INSTANCE.convertList02(configs));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获取参数配置分页")
|
||||
@PreAuthorize("@ss.hasPermission('infra:config:query')")
|
||||
|
@ -0,0 +1,70 @@
|
||||
package co.yixiang.yshop.module.infra.controller.app.qrcode;
|
||||
|
||||
import cn.binarywang.wx.miniapp.api.WxMaQrcodeService;
|
||||
import cn.binarywang.wx.miniapp.api.WxMaService;
|
||||
import cn.binarywang.wx.miniapp.bean.WxMaCodeLineColor;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.qrcode.QrCodeUtil;
|
||||
import cn.hutool.extra.qrcode.QrConfig;
|
||||
import co.yixiang.yshop.framework.common.exception.ServiceException;
|
||||
import co.yixiang.yshop.framework.common.pojo.CommonResult;
|
||||
import co.yixiang.yshop.module.infra.controller.app.qrcode.vo.QrCodeGenerateDTO;
|
||||
import co.yixiang.yshop.module.infra.controller.app.qrcode.vo.QrCodeGenerateMiniDTO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Base64;
|
||||
|
||||
import static cn.hutool.core.img.ImgUtil.IMAGE_TYPE_JPG;
|
||||
|
||||
/**
|
||||
* @author pepis
|
||||
* @apiNote
|
||||
**/
|
||||
@Tag(name = "用户 APP - 二维码")
|
||||
@RestController
|
||||
@RequestMapping("/infra/QrCode")
|
||||
@Validated
|
||||
@Slf4j
|
||||
public class QrCodeController {
|
||||
|
||||
@Resource
|
||||
private WxMaService wxMaService;
|
||||
|
||||
@PostMapping("generate")
|
||||
@Operation(summary = "生成二维码")
|
||||
public CommonResult<String> generate(@RequestBody QrCodeGenerateDTO dto){
|
||||
String content = dto.getContent();
|
||||
if(StrUtil.isBlank(content)){
|
||||
throw new ServiceException();
|
||||
}
|
||||
String base64 = QrCodeUtil.generateAsBase64(content, QrConfig.create(), IMAGE_TYPE_JPG);
|
||||
return CommonResult.success(base64);
|
||||
}
|
||||
|
||||
@PostMapping("generate-mini")
|
||||
@Operation(summary = "生成小程序码")
|
||||
public CommonResult<String> generateMini(@RequestBody QrCodeGenerateMiniDTO dto){
|
||||
try {
|
||||
WxMaQrcodeService wxMaQrcodeService = wxMaService.getQrcodeService();
|
||||
/* 获取二维码字节数组 */
|
||||
byte[] bytes = wxMaQrcodeService.createWxaCodeUnlimitBytes
|
||||
(dto.getName(), dto.getPath(), false,"trial",430, true,
|
||||
new WxMaCodeLineColor("0", "0", "0"), true);
|
||||
return CommonResult.success(Base64.getEncoder().encodeToString(bytes));
|
||||
|
||||
} catch (Exception ex) {
|
||||
log.info("生成小程序码失败,message:{}", ex.getMessage());
|
||||
return CommonResult.success(null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package co.yixiang.yshop.module.infra.controller.app.qrcode.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author pepis
|
||||
* @apiNote
|
||||
**/
|
||||
@Data
|
||||
public class QrCodeGenerateDTO {
|
||||
@Schema(description = "二维码内容")
|
||||
private String content;
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package co.yixiang.yshop.module.infra.controller.app.qrcode.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author pepis
|
||||
* @apiNote
|
||||
**/
|
||||
@Data
|
||||
public class QrCodeGenerateMiniDTO {
|
||||
|
||||
@Schema(description = "标头")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "小程序跳转地址")
|
||||
private String path;
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package co.yixiang.yshop.module.infra.convert.config;
|
||||
|
||||
import co.yixiang.yshop.framework.common.pojo.PageResult;
|
||||
import co.yixiang.yshop.module.infra.api.config.dto.ConfigDTO;
|
||||
import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigCreateReqVO;
|
||||
import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigExcelVO;
|
||||
import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigRespVO;
|
||||
@ -30,4 +31,8 @@ public interface ConfigConvert {
|
||||
@Mapping(source = "configKey", target = "key")
|
||||
List<ConfigExcelVO> convertList(List<ConfigDO> list);
|
||||
|
||||
ConfigDTO convert2DTO(ConfigDO configDO);
|
||||
|
||||
@Mapping(source = "configKey", target = "key")
|
||||
List<ConfigRespVO> convertList02(List<ConfigDO> configs);
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ public class CodegenBuilder {
|
||||
*/
|
||||
public static final String TENANT_ID_FIELD = "tenantId";
|
||||
/**
|
||||
* {@link BaseDO} 的字段
|
||||
* {@link co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO} 的字段
|
||||
*/
|
||||
public static final Set<String> BASE_DO_FIELDS = new HashSet<>();
|
||||
/**
|
||||
|
@ -72,4 +72,11 @@ public interface ConfigService {
|
||||
List<ConfigDO> getConfigList(@Valid ConfigExportReqVO reqVO);
|
||||
|
||||
|
||||
/**
|
||||
* 根据分类,获得参数配置
|
||||
*
|
||||
* @param category 分类
|
||||
* @return 参数配置
|
||||
*/
|
||||
List<ConfigDO> getConfigByCategory(String category);
|
||||
}
|
||||
|
@ -84,6 +84,11 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
return configMapper.selectList(reqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ConfigDO> getConfigByCategory(String category) {
|
||||
return configMapper.selectList(ConfigDO::getCategory,category);
|
||||
}
|
||||
|
||||
private void validateConfigForCreateOrUpdate(Long id, String key) {
|
||||
// 校验自己存在
|
||||
validateConfigExists(id);
|
||||
|
Reference in New Issue
Block a user