This commit is contained in:
徐唯轩
2023-11-14 16:32:59 +08:00
parent 441dad9ef6
commit 751ed76e37
298 changed files with 10073 additions and 3527 deletions

View File

@ -26,4 +26,9 @@ public interface DictTypeConstants {
String SMS_SEND_STATUS = "system_sms_send_status"; // 短信发送状态
String SMS_RECEIVE_STATUS = "system_sms_receive_status"; // 短信接收状态
String USER_AGREEMENT = "user_agreement"; // 用户协议
String PRIVACY_AGREEMENT = "privacy_agreement"; // 隐私协议
String DEFAULT_HEAD = "default_head"; // 用户默认头像
}

View File

@ -0,0 +1,28 @@
package co.yixiang.yshop.module.system.enums.agreement;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 通知类型
*
* @author yshop
*/
@Getter
@AllArgsConstructor
public enum AgreementTypeEnum {
USER(1, "用户协议"),
PRIVACY(2, "隐私协议");
/**
* 类型
*/
private final Integer type;
/**
* 描述
*/
private final String des;
}

View File

@ -49,8 +49,8 @@ public class DictDataController {
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除字典数据")
@DeleteMapping("/delete")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('system:dict:delete')")
public CommonResult<Boolean> deleteDictData(Long id) {

View File

@ -25,7 +25,6 @@ public class DictDataBaseVO {
@Schema(description = "字典值", required = true, example = "iocoder")
@NotBlank(message = "字典键值不能为空")
@Size(max = 100, message = "字典键值长度不能超过100个字符")
private String value;
@Schema(description = "字典类型", required = true, example = "sys_common_sex")

View File

@ -35,14 +35,14 @@ public class SmsCallbackController {
return success(true);
}
@PostMapping("/tencent")
@PermitAll
@Operation(summary = "腾讯云短信的回调", description = "参见 https://cloud.tencent.com/document/product/382/52077 文档")
@OperateLog(enable = false)
public CommonResult<Boolean> receiveTencentSmsStatus(HttpServletRequest request) throws Throwable {
String text = ServletUtils.getBody(request);
smsSendService.receiveSmsStatus(SmsChannelEnum.TENCENT.getCode(), text);
return success(true);
}
// @PostMapping("/tencent")
// @PermitAll
// @Operation(summary = "腾讯云短信的回调", description = "参见 https://cloud.tencent.com/document/product/382/52077 文档")
// @OperateLog(enable = false)
// public CommonResult<Boolean> receiveTencentSmsStatus(HttpServletRequest request) throws Throwable {
// String text = ServletUtils.getBody(request);
// smsSendService.receiveSmsStatus(SmsChannelEnum.TENCENT.getCode(), text);
// return success(true);
// }
}

View File

@ -1,4 +1,42 @@
package co.yixiang.yshop.module.system.controller.app.dict;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.data.DictDataRespVO;
import co.yixiang.yshop.module.system.service.dict.DictDataService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.annotation.security.PermitAll;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@Tag(name = "用户 APP - 数据字典")
@RestController
@RequestMapping("/system/dict-data")
@Validated
public class AppDictDataController {
@Resource
private DictDataService dictDataService;
@GetMapping("/agreement/{type}")
@Operation(summary = "获得协议", description = "包括用户协议和隐私协议")
// 无需添加权限认证,因为前端全局都需要
@PermitAll
public void getAgreement(@PathVariable Integer type, HttpServletResponse response) throws IOException {
response.setHeader("Content-Type","text/html;charset=UTF-8");
DictDataRespVO dict = dictDataService.getAgreement(type);
PrintWriter writer = response.getWriter();
writer.write(dict.getValue());
writer.flush();
// return success(dictDataService.getAgreement(type));
}
}

View File

@ -9,7 +9,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 针对 {@link SmsSendMessage} 的消费者
* 针对 {@link SmsSendMessage} 发送短信的消费者
*
* @author zzf
*/

View File

@ -1,10 +1,8 @@
package co.yixiang.yshop.module.system.service.dict;
import co.yixiang.yshop.framework.common.pojo.PageResult;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.data.DictDataExportReqVO;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.data.DictDataPageReqVO;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.data.DictDataUpdateReqVO;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.data.*;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.type.DictTypeSimpleRespVO;
import co.yixiang.yshop.module.system.dal.dataobject.dict.DictDataDO;
import java.util.Collection;
@ -105,4 +103,18 @@ public interface DictDataService {
* @return 字典数据
*/
DictDataDO parseDictData(String dictType, String label);
/**
* 获得协议
*
* @return 字典类型列表
*/
DictDataRespVO getAgreement(Integer type);
/**
* 获得用户默认头像
* @return
*/
DictDataRespVO getDefaultHead();
}

View File

@ -4,14 +4,14 @@ import cn.hutool.core.collection.CollUtil;
import co.yixiang.yshop.framework.common.enums.CommonStatusEnum;
import co.yixiang.yshop.framework.common.pojo.PageResult;
import co.yixiang.yshop.framework.common.util.collection.CollectionUtils;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.data.DictDataExportReqVO;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.data.DictDataPageReqVO;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.data.DictDataUpdateReqVO;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.data.*;
import co.yixiang.yshop.module.system.controller.admin.dict.vo.type.DictTypeSimpleRespVO;
import co.yixiang.yshop.module.system.convert.dict.DictDataConvert;
import co.yixiang.yshop.module.system.dal.dataobject.dict.DictDataDO;
import co.yixiang.yshop.module.system.dal.dataobject.dict.DictTypeDO;
import co.yixiang.yshop.module.system.dal.mysql.dict.DictDataMapper;
import co.yixiang.yshop.module.system.enums.agreement.AgreementTypeEnum;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.annotations.VisibleForTesting;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -23,6 +23,9 @@ import java.util.List;
import java.util.Map;
import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception;
import static co.yixiang.yshop.module.system.enums.DictTypeConstants.PRIVACY_AGREEMENT;
import static co.yixiang.yshop.module.system.enums.DictTypeConstants.USER_AGREEMENT;
import static co.yixiang.yshop.module.system.enums.DictTypeConstants.DEFAULT_HEAD;
import static co.yixiang.yshop.module.system.enums.ErrorCodeConstants.*;
/**
@ -181,4 +184,23 @@ public class DictDataServiceImpl implements DictDataService {
return dictDataMapper.selectByDictTypeAndLabel(dictType, label);
}
}
@Override
public DictDataRespVO getAgreement(Integer type) {
LambdaQueryWrapper<DictDataDO> qw = new LambdaQueryWrapper<>();
if (type.equals(AgreementTypeEnum.USER.getType())) {
qw.eq(DictDataDO::getLabel, USER_AGREEMENT);
} else {
qw.eq(DictDataDO::getLabel, PRIVACY_AGREEMENT);
}
DictDataDO dictDataDO = dictDataMapper.selectOne(qw);
return DictDataConvert.INSTANCE.convert(dictDataDO);
}
@Override
public DictDataRespVO getDefaultHead(){
LambdaQueryWrapper<DictDataDO> qw = new LambdaQueryWrapper<>();
DictDataDO dictDataDO = dictDataMapper.selectOne(qw.eq(DictDataDO::getLabel,DEFAULT_HEAD));
return DictDataConvert.INSTANCE.convert(dictDataDO);
}
}