dubbo、proto3和spring boot、cloud写法

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值