提交新功能 分销商 积分 会员体系

This commit is contained in:
xwxuan
2024-02-08 20:44:58 +08:00
parent 0e255d6c3a
commit 6f5e6e4662
928 changed files with 39318 additions and 1408 deletions

View File

@ -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>

View File

@ -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);
}
}

View File

@ -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')")

View File

@ -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);
}
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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<>();
/**

View File

@ -72,4 +72,11 @@ public interface ConfigService {
List<ConfigDO> getConfigList(@Valid ConfigExportReqVO reqVO);
/**
* 根据分类,获得参数配置
*
* @param category 分类
* @return 参数配置
*/
List<ConfigDO> getConfigByCategory(String category);
}

View File

@ -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);