SmsSignatures.proto
// 针对 (la_sms_signatures)
syntax = "proto3";
package com.zdcloud.zduserservice.dubbo.api;
// [开始 java选项配置]
option java_multiple_files = true;
option java_package = "com.zdcloud.zduserservice.dubbo.api";
option java_outer_classname = "SmsSignaturesProto";
// [结束 java选项配置]
import "google/protobuf/any.proto";
import "google/protobuf/wrappers.proto";
import "google/protobuf/timestamp.proto";//时间
import "zd-api/zd-api-common/src/main/proto/common.proto";//公共模板
import "ScmBusiness.proto";
import "Businesses.proto";
service SmsSignaturesService{
rpc create(SmsSignaturesCreateRequest) returns (com.zdcloud.core.dubbo.api.common.BooleanResult);//创建
rpc delete(SmsSignaturesDetailRequest) returns (com.zdcloud.core.dubbo.api.common.BooleanResult);//删除
rpc update(SmsSignaturesUpdateRequest) returns (com.zdcloud.core.dubbo.api.common.BooleanResult);//修改
rpc detail(SmsSignaturesDetailRequest) returns (SmsSignaturesDetailReply);//查看单个记录详情
rpc list(SmsSignaturesListRequest) returns (SmsSignaturesDetailReplyList);//列表查询
rpc getSmsSignaturesByMall(google.protobuf.Int64Value) returns (google.protobuf.StringValue);//获取商城短信签名
}
//请求参数
message SmsSignaturesDetailRequest {
uint64 id = 1;//主键编号
}
message SmsSignaturesListRequest {
com.zdcloud.core.dubbo.api.common.PageRequest pager=1;
optional uint64 id =2 ;//主键编号
optional string name = 3; //签名 String
optional int64 scmId = 4; //所属租户id Long
optional int64 businessId = 5; //商铺id String
}
//创建请求参数
message SmsSignatures {
int64 id = 1; // Long
int64 scmId = 2; //所属租户id Long
string scmName = 3; //租户名称 String
string businessIds = 4; //商铺id String
string name = 5; //签名 String
google.protobuf.Timestamp createdAt = 6; //创建时间 LocalDateTime
google.protobuf.Timestamp updatedAt = 7; //修改时间 LocalDateTime
google.protobuf.Timestamp deletedAt = 8; //删除时间 LocalDateTime
}
//创建请求参数
message SmsSignaturesCreateRequest {
optional int64 scmId = 1; //所属租户id Long
repeated int64 businessIdList = 2; //商铺id String
optional string name = 3; //签名 String
google.protobuf.Timestamp createdAt = 4; //创建时间 LocalDateTime
google.protobuf.Timestamp updatedAt = 5; //修改时间 LocalDateTime
google.protobuf.Timestamp deletedAt = 6; //删除时间 LocalDateTime
}
//更新请求参数
message SmsSignaturesUpdateRequest {
int64 id = 1; // Long
optional int64 scmId = 2; //所属租户id Long
optional string scmName = 3; //租户名称 String
repeated int64 businessIdList = 4; //商铺id String
optional string name = 5; //签名 String
google.protobuf.Timestamp createdAt = 6; //创建时间 LocalDateTime
google.protobuf.Timestamp updatedAt = 7; //修改时间 LocalDateTime
google.protobuf.Timestamp deletedAt = 8; //删除时间 LocalDateTime
}
//
//
//以下为结果返回
message SmsSignaturesDetailReplyList{
com.zdcloud.core.dubbo.api.common.PageResponse pager=1;
repeated SmsSignaturesDetailReply list=2;
}
message SmsSignaturesDetailReply {
optional int64 id = 1; // Long
optional int64 scmId = 2; //所属租户id Long
optional string scmName = 3; //租户名称 String
repeated int64 businessIdList = 4; //商铺id String
optional string name = 5; //签名 String
google.protobuf.Timestamp createdAt = 6; //创建时间 LocalDateTime
google.protobuf.Timestamp updatedAt = 7; //修改时间 LocalDateTime
google.protobuf.Timestamp deletedAt = 8; //删除时间 LocalDateTime
ScmBusinessBase scmBusiness = 9;
repeated BusinessesDetailReply businesses = 10;
}
package com.zdcloud.zdmallapp.controller;
import cn.hutool.core.lang.Validator;
import com.zdcloud.zduserservice.dubbo.api.OpUserService;
import com.zdcloud.zduserservice.dubbo.api.SendSmsCodeRequest;
import com.zdcloud.zduserservice.dubbo.api.SmsSignaturesService;
import com.zdcloud.zonmind.common.core.util.PhaseUtils;
import com.zdcloud.zonmind.common.core.util.R;
import com.zdcloud.zonmind.common.core.util.SmsMessageSend;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Objects;
@RestController
@RequestMapping("/mall")
@Tag(name = "账户")
@Slf4j
public class MallLoginController {
@Autowired
private SmsMessageSend smsMessageSend;
@DubboReference(check = false)
OpUserService opUserService;
@DubboReference(check = false)
SmsSignaturesService smsSignaturesService;
@Operation(summary = "发送短信验证码")
@GetMapping(value = "/sendSmsCode/{mobile}")
public R sendCode(@PathVariable("mobile") @Parameter(description = "mobile") Long mobile,
@RequestParam(value = "business_id", required = false) Long businessId) {
if (!Validator.isMobile(String.valueOf(mobile))) {
return R.failed("手机号格式不正确");
}
// 获取当前登录的用户信息
log.debug("mobile:{}", mobile);
String code;
if (PhaseUtils.isDevelopmentMode()){
code = "1234";
}else {
String signature;
if (Objects.isNull(businessId)){
signature = "众麦";
}else {
signature = smsSignaturesService.getSmsSignaturesByMall(com.google.protobuf.Int64Value.of(businessId)).getValue();
}
code = String.valueOf(SmsMessageSend.getCode());
String status = smsMessageSend.sendSmsWithModifySignatures(String.valueOf(mobile), code, signature);
log.debug("status:{}", status);
if (!status.equals("success")){
return R.failed("发送短信失败");
}
}
opUserService.setMallLoginCode(SendSmsCodeRequest.newBuilder().setCode(code).setMobile(String.valueOf(mobile)).build());
return R.ok(null,"发送短信成功");
}
}
@DubboService(protocol = "tri")
@Slf4j
public class SmsSignaturesServiceImpl extends DubboSmsSignaturesServiceTriple.SmsSignaturesServiceImplBase{
@Override
public com.google.protobuf.StringValue getSmsSignaturesByMall(com.google.protobuf.Int64Value request){
long businessId = request.getValue();
String signature = "xxx";
Long scmId = JoinWrappers.lambda(Businesses.class)
.select(Businesses::getScmId)
.eq(Businesses::getId, businessId)
.list().stream().map(Businesses::getScmId).findFirst().orElse(null);
if (Objects.isNull(scmId)) {
return com.google.protobuf.StringValue.of(signature);
}
SmsSignatures smsBusinessModel = JoinWrappers.lambda(SmsSignatures.class)
.eq(SmsSignatures::getScmId, scmId)
.and(wrapper -> wrapper
.apply("JSON_CONTAINS(business_ids, CAST({0} AS JSON))", businessId)
.or()
.isNull("business_ids")
).list().stream().findFirst().orElse(null);
if (Objects.nonNull(smsBusinessModel)) {
signature=smsBusinessModel.getName();
}
return com.google.protobuf.StringValue.of(signature);
}
}
tripleConsumerExceptionFilter1=com.zdcloud.zduserservice.filter.TripleConsumerExceptionFilter1
tripleProviderExceptionFilter=com.zdcloud.zduserservice.filter.TripleProviderExceptionFilter
tripleConsumerExceptionFilter=com.zdcloud.zduserservice.filter.TripleConsumerExceptionFilter
