zhuyifan

农信点餐小程序

Showing 38 changed files with 918 additions and 32 deletions
......@@ -6,13 +6,12 @@
*/
plugins {
// Apply the application plugin to add support for building a CLI application in Java.
id 'java'
id 'idea'
id 'application'
id 'org.springframework.boot' version '2.3.3.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'com.google.protobuf' version '0.9.3'
id 'org.springframework.boot' version '2.5.12'
id 'io.spring.dependency-management' version '1.1.6'
id 'com.google.protobuf' version '0.9.4'
}
repositories {
......@@ -29,8 +28,8 @@ application {
}
ext {
grpcVersion = '1.39.0'
protobufVersion = '3.17.2'
grpcVersion = '1.62.2'
protobufVersion = '3.25.3'
}
dependencies {
......@@ -55,20 +54,13 @@ dependencies {
testImplementation "io.grpc:grpc-testing:${grpcVersion}"
}
static def isAppleSilicon() {
// 检测 macOS 并且使用的是 Apple Silicon 架构
return System.getProperty('os.name').toLowerCase().contains('mac') && System.getProperty('os.arch').equals('aarch64')
}
def protocPlatform = isAppleSilicon() ? ':osx-x86_64' : '';
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:${protobufVersion}${protocPlatform}"
artifact = "com.google.protobuf:protoc:${protobufVersion}"
}
plugins {
grpc {
artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}${protocPlatform}"
artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}"
}
}
generateProtoTasks {
......@@ -87,6 +79,13 @@ tasks.withType(JavaCompile).configureEach {
it.options.fork = true
}
tasks {
compileJava {
dependsOn generateProto
source fileTree('build/generated/source/proto/main/java')
}
}
sourceSets {
main {
java {
......
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.jvmargs=-Xmx4096m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.incremental=true
org.gradle.configureondemand=true
org.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64
\ No newline at end of file
org.gradle.configuration-cache=true
\ No newline at end of file
......
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-6.9-bin.zip
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.11-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#org.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64
\ No newline at end of file
......
......@@ -9,6 +9,7 @@ import brave.propagation.B3Propagation;
import brave.propagation.CurrentTraceContext;
import brave.propagation.TraceContext;
import brave.sampler.Sampler;
import com.tianting.infoloop.service.grpc.MealOrderGrpcService;
import com.tianting.infoloop.service.grpc.OrderGrpcService;
import io.grpc.Server;
import io.grpc.ServerInterceptor;
......@@ -64,10 +65,12 @@ public class AppConfig implements ApplicationContextAware {
@Bean
public Server serviceServer(@Value(SERVICE_PORT) final int port,
final ServerInterceptor serverInterceptor,
final OrderGrpcService orderGrpcService) {
final OrderGrpcService orderGrpcService,
final MealOrderGrpcService mealOrderGrpcService) {
return NettyServerBuilder
.forPort(port)
.addService(ServerInterceptors.intercept(orderGrpcService, serverInterceptor))
.addService(ServerInterceptors.intercept(mealOrderGrpcService, serverInterceptor))
.build();
}
}
......
package com.tianting.infoloop.mapper;
import com.tianting.infoloop.inject.MyBaseMapper;
import com.tianting.infoloop.model.db.Diner;
/**
* @author zhuyf
* @description 针对表【diners(就餐人表)】的数据库操作Mapper
* @createDate 2025-04-10 13:22:20
* @Entity com.tianting.infoloop.model.db.Diner
*/
public interface DinerMapper extends MyBaseMapper<Diner> {
}
package com.tianting.infoloop.mapper;
import com.tianting.infoloop.inject.MyBaseMapper;
import com.tianting.infoloop.model.db.GradeClass;
/**
* @author zhuyf
* @description 针对表【grade_classes(年级班级表)】的数据库操作Mapper
* @createDate 2025-04-10 13:22:20
* @Entity com.tianting.infoloop.model.db.GradeClass
*/
public interface GradeClassMapper extends MyBaseMapper<GradeClass> {
}
package com.tianting.infoloop.mapper;
import com.tianting.infoloop.inject.MyBaseMapper;
import com.tianting.infoloop.model.db.MealMenuRecord;
/**
* @author zhuyf
* @description 针对表【meal_menu_records(餐单记录表)】的数据库操作Mapper
* @createDate 2025-04-10 13:22:20
* @Entity com.tianting.infoloop.model.db.MealMenuRecord
*/
public interface MealMenuRecordMapper extends MyBaseMapper<MealMenuRecord> {
}
package com.tianting.infoloop.mapper;
import com.tianting.infoloop.inject.MyBaseMapper;
import com.tianting.infoloop.model.db.MealOrder;
/**
* @author zhuyf
* @description 针对表【meal_orders(订餐记录表)】的数据库操作Mapper
* @createDate 2025-04-10 13:22:20
* @Entity com.tianting.infoloop.model.db.MealOrder
*/
public interface MealOrderMapper extends MyBaseMapper<MealOrder> {
}
package com.tianting.infoloop.mapper;
import com.tianting.infoloop.inject.MyBaseMapper;
import com.tianting.infoloop.model.db.MpAccountDinerRef;
/**
* @author zhuyf
* @description 针对表【mp_account_diner_refs(小程序账号和就餐人关联表)】的数据库操作Mapper
* @createDate 2025-04-10 13:22:20
* @Entity com.tianting.infoloop.model.db.MpAccountDinerRef
*/
public interface MpAccountDinerRefMapper extends MyBaseMapper<MpAccountDinerRef> {
}
package com.tianting.infoloop.mapper;
import com.tianting.infoloop.inject.MyBaseMapper;
import com.tianting.infoloop.model.db.MpAccount;
/**
* @author zhuyf
* @description 针对表【mp_accounts(小程序账号表)】的数据库操作Mapper
* @createDate 2025-04-10 13:22:20
* @Entity com.tianting.infoloop.model.db.MpAccount
*/
public interface MpAccountMapper extends MyBaseMapper<MpAccount> {
}
package com.tianting.infoloop.model.db;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @TableName diners
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName(value ="diners")
public class Diner extends Model<Diner> implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer enterpriseId;
private Integer clientId;
private Integer classId;
private String studentNo;
private String name;
private Integer createdBy;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createdAt;
private Integer creationSource;
private Integer updatedBy;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updatedAt;
private Integer updateSource;
@TableLogic
private Boolean isDeleted;
}
\ No newline at end of file
package com.tianting.infoloop.model.db;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @TableName grade_classes
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName(value ="grade_classes")
public class GradeClass extends Model<GradeClass> implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer enterpriseId;
private Integer clientId;
private String gradeName;
private String className;
private String fullName;
private Integer createdBy;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createdAt;
private Integer creationSource;
private Integer updatedBy;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updatedAt;
private Integer updateSource;
private Boolean isDeleted;
}
\ No newline at end of file
package com.tianting.infoloop.model.db;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @TableName meal_menu_records
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName(value ="meal_menu_records")
public class MealMenuRecord extends Model<MealMenuRecord> implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer enterpriseId;
private Integer clientId;
private String name;
private String imageUrl;
private Integer createdBy;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createdAt;
private Integer creationSource;
private Integer updatedBy;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updatedAt;
private Integer updateSource;
private Boolean isDeleted;
}
\ No newline at end of file
package com.tianting.infoloop.model.db;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @TableName meal_orders
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName(value ="meal_orders")
public class MealOrder extends Model<MealOrder> implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer enterpriseId;
private Integer clientId;
private Integer menuId;
private Integer accountId;
private Integer orderMethod;
private Integer dinerId;
private String dinerName;
private String clientName;
private String gradeName;
private String className;
private String studentNo;
private LocalDateTime reserveDate;
private String meals;
private Integer createdBy;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createdAt;
private Integer creationSource;
private Integer updatedBy;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updatedAt;
private Integer updateSource;
private Boolean isDeleted;
}
\ No newline at end of file
package com.tianting.infoloop.model.db;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @TableName mp_accounts
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName(value ="mp_accounts")
public class MpAccount extends Model<MpAccount> implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer enterpriseId;
private String openId;
private String unionId;
private String nickname;
private String avatarUrl;
private Integer gender;
private String phoneNumber;
private Integer status;
private Integer createdBy;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createdAt;
private Integer creationSource;
private Integer updatedBy;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updatedAt;
private Integer updateSource;
private Boolean isDeleted;
}
\ No newline at end of file
package com.tianting.infoloop.model.db;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @TableName mp_account_diner_refs
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName(value ="mp_account_diner_refs")
public class MpAccountDinerRef extends Model<MpAccountDinerRef> implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer enterpriseId;
private Integer accountId;
private Integer dinerId;
private Integer createdBy;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createdAt;
private Integer creationSource;
}
\ No newline at end of file
package com.tianting.infoloop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tianting.infoloop.model.db.Diner;
/**
* @author zhuyf
* @description 针对表【diners(就餐人表)】的数据库操作Service
* @createDate 2025-04-10 13:22:20
*/
public interface DinerService extends IService<Diner> {
}
package com.tianting.infoloop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tianting.infoloop.model.db.GradeClass;
/**
* @author zhuyf
* @description 针对表【grade_classes(年级班级表)】的数据库操作Service
* @createDate 2025-04-10 13:22:20
*/
public interface GradeClassService extends IService<GradeClass> {
}
package com.tianting.infoloop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tianting.infoloop.model.db.MealMenuRecord;
/**
* @author zhuyf
* @description 针对表【meal_menu_records(餐单记录表)】的数据库操作Service
* @createDate 2025-04-10 13:22:20
*/
public interface MealMenuRecordService extends IService<MealMenuRecord> {
}
package com.tianting.infoloop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tianting.infoloop.model.db.MealOrder;
/**
* @author zhuyf
* @description 针对表【meal_orders(订餐记录表)】的数据库操作Service
* @createDate 2025-04-10 13:22:20
*/
public interface MealOrderService extends IService<MealOrder> {
}
package com.tianting.infoloop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tianting.infoloop.model.db.MpAccountDinerRef;
/**
* @author zhuyf
* @description 针对表【mp_account_diner_refs(小程序账号和就餐人关联表)】的数据库操作Service
* @createDate 2025-04-10 13:22:20
*/
public interface MpAccountDinerRefService extends IService<MpAccountDinerRef> {
}
package com.tianting.infoloop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tianting.infoloop.model.db.MpAccount;
/**
* @author zhuyf
* @description 针对表【mp_accounts(小程序账号表)】的数据库操作Service
* @createDate 2025-04-10 13:22:20
*/
public interface MpAccountService extends IService<MpAccount> {
}
package com.tianting.infoloop.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tianting.infoloop.mapper.DinerMapper;
import com.tianting.infoloop.model.db.Diner;
import com.tianting.infoloop.service.DinerService;
import org.springframework.stereotype.Service;
/**
* @author zhuyf
* @description 针对表【diners(就餐人表)】的数据库操作Service实现
* @createDate 2025-04-10 13:22:20
*/
@Service
public class DinerServiceImpl extends ServiceImpl<DinerMapper, Diner>
implements DinerService{
}
package com.tianting.infoloop.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tianting.infoloop.mapper.GradeClassMapper;
import com.tianting.infoloop.model.db.GradeClass;
import com.tianting.infoloop.service.GradeClassService;
import org.springframework.stereotype.Service;
/**
* @author zhuyf
* @description 针对表【grade_classes(年级班级表)】的数据库操作Service实现
* @createDate 2025-04-10 13:22:20
*/
@Service
public class GradeClassServiceImpl extends ServiceImpl<GradeClassMapper, GradeClass>
implements GradeClassService{
}
package com.tianting.infoloop.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tianting.infoloop.mapper.MealMenuRecordMapper;
import com.tianting.infoloop.model.db.MealMenuRecord;
import com.tianting.infoloop.service.MealMenuRecordService;
import org.springframework.stereotype.Service;
/**
* @author zhuyf
* @description 针对表【meal_menu_records(餐单记录表)】的数据库操作Service实现
* @createDate 2025-04-10 13:22:20
*/
@Service
public class MealMenuRecordServiceImpl extends ServiceImpl<MealMenuRecordMapper, MealMenuRecord>
implements MealMenuRecordService{
}
package com.tianting.infoloop.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tianting.infoloop.mapper.MealOrderMapper;
import com.tianting.infoloop.model.db.MealOrder;
import com.tianting.infoloop.service.MealOrderService;
import org.springframework.stereotype.Service;
/**
* @author zhuyf
* @description 针对表【meal_orders(订餐记录表)】的数据库操作Service实现
* @createDate 2025-04-10 13:22:20
*/
@Service
public class MealOrderServiceImpl extends ServiceImpl<MealOrderMapper, MealOrder>
implements MealOrderService{
}
package com.tianting.infoloop.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tianting.infoloop.mapper.MpAccountDinerRefMapper;
import com.tianting.infoloop.model.db.MpAccountDinerRef;
import com.tianting.infoloop.service.MpAccountDinerRefService;
import org.springframework.stereotype.Service;
/**
* @author zhuyf
* @description 针对表【mp_account_diner_refs(小程序账号和就餐人关联表)】的数据库操作Service实现
* @createDate 2025-04-10 13:22:20
*/
@Service
public class MpAccountDinerRefServiceImpl extends ServiceImpl<MpAccountDinerRefMapper, MpAccountDinerRef>
implements MpAccountDinerRefService{
}
package com.tianting.infoloop.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tianting.infoloop.mapper.MpAccountMapper;
import com.tianting.infoloop.model.db.MpAccount;
import com.tianting.infoloop.service.MpAccountService;
import org.springframework.stereotype.Service;
/**
* @author zhuyf
* @description 针对表【mp_accounts(小程序账号表)】的数据库操作Service实现
* @createDate 2025-04-10 13:22:20
*/
@Service
public class MpAccountServiceImpl extends ServiceImpl<MpAccountMapper, MpAccount>
implements MpAccountService{
}
......@@ -3,6 +3,9 @@ package com.tianting.infoloop.utils;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
......@@ -23,6 +26,8 @@ import java.util.List;
public class ProtoBeanUtil {
private static Gson gson = getGson();
/**
* protoBean -> string
*
......@@ -31,13 +36,68 @@ public class ProtoBeanUtil {
*/
public static String protoToJson(MessageOrBuilder sourceMessage) {
try {
return JsonFormat.printer().print(sourceMessage);
return JsonFormat.printer().includingDefaultValueFields().print(sourceMessage);
} catch (Exception e) {
throw new IllegalArgumentException("ProtoBeanUtil->toJson->errorMessage:proto序列化string异常", e);
}
}
private static Gson gson = getGson();
@SuppressWarnings("unchecked")
public static <T extends Message> T jsonToProto(String json, Class<T> protoBean) {
try {
Constructor<T> declaredConstructor = protoBean.getDeclaredConstructor((Class<?>[]) null);
declaredConstructor.setAccessible(Boolean.TRUE);
T instance = declaredConstructor.newInstance();
final var builder = instance.toBuilder();
if (json == null || json.isEmpty() || json.trim().equals("{}")) {
return (T) builder.build();
}
JsonFormat.parser().ignoringUnknownFields().merge(json, builder);
return (T) builder.build();
} catch (Exception e) {
throw new IllegalArgumentException("json to proto error", e);
}
}
@SuppressWarnings("unchecked")
public static <T extends Message> List<T> jsonToProtoList(String jsonArray, Class<T> protoBean) {
try {
if (jsonArray == null || jsonArray.isEmpty() || jsonArray.trim().equals("[]")) {
return new ArrayList<>();
}
Constructor<T> declaredConstructor = protoBean.getDeclaredConstructor();
declaredConstructor.setAccessible(true);
List<T> protoList = new ArrayList<>();
JsonArray jsonElements = JsonParser.parseString(jsonArray).getAsJsonArray();
for (JsonElement jsonElement : jsonElements) {
T instance = declaredConstructor.newInstance();
Message.Builder builder = instance.toBuilder();
JsonFormat.parser().ignoringUnknownFields().merge(jsonElement.toString(), builder);
protoList.add((T) builder.build());
}
return protoList;
} catch (Exception e) {
throw new IllegalArgumentException("jsonArray to protoList error", e);
}
}
public static String protoListToJson(List<? extends Message> sourceList) {
try {
StringBuilder jsonArrayBuilder = new StringBuilder();
jsonArrayBuilder.append("[");
for (int i = 0; i < sourceList.size(); i++) {
String json = protoToJson(sourceList.get(i));
jsonArrayBuilder.append(json);
if (i < sourceList.size() - 1) {
jsonArrayBuilder.append(",");
}
}
jsonArrayBuilder.append("]");
return jsonArrayBuilder.toString();
} catch (Exception e) {
throw new IllegalArgumentException("ProtoList to jsonArray error", e);
}
}
/**
* @desc: String 转 Builder对象
......
This diff is collapsed. Click to expand it.
......@@ -7,20 +7,13 @@ spring.main.web-application-type=none
spring.application.name=order-service
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/cater?autoReconnect=true&tcpKeepAlive=true&rewriteBatchedStatements=true&statementInterceptors=com.tianting.infoloop.tracing.MysqlZipkinInterceptor&useSSL=false
spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/test?autoReconnect=true&tcpKeepAlive=true&rewriteBatchedStatements=true&statementInterceptors=com.tianting.infoloop.tracing.MysqlZipkinInterceptor&useSSL=false
spring.datasource.dynamic.datasource.master.username=root
spring.datasource.dynamic.datasource.master.password=QAZwsx098
spring.datasource.dynamic.datasource.slave.url=jdbc:mysql://localhost:3306/cater_slave?autoReconnect=true&tcpKeepAlive=true&statementInterceptors=com.tianting.infoloop.tracing.MysqlZipkinInterceptor&useSSL=false
spring.datasource.dynamic.datasource.master.password=123456
spring.datasource.dynamic.datasource.slave.url=jdbc:mysql://localhost:3306/test?autoReconnect=true&tcpKeepAlive=true&statementInterceptors=com.tianting.infoloop.tracing.MysqlZipkinInterceptor&useSSL=false
spring.datasource.dynamic.datasource.slave.username=root
spring.datasource.dynamic.datasource.slave.password=QAZwsx098
spring.datasource.dynamic.datasource.slave.password=123456
spring.datasource.dynamic.primary=master
#spring.datasource.dynamic.datasource.master.url=jdbc:mysql://rm-uf63gfjzejp163e3g4o.mysql.rds.aliyuncs.com:3306/qingniu?autoReconnect=true&tcpKeepAlive=true&rewriteBatchedStatements=true&statementInterceptors=com.tianting.infoloop.tracing.MysqlZipkinInterceptor&useSSL=false
#spring.datasource.dynamic.datasource.master.username=jj_infoloop_stage
#spring.datasource.dynamic.datasource.master.password=H8kjNeChi1wimXw
#spring.datasource.dynamic.datasource.slave.url=jdbc:mysql://rm-uf63gfjzejp163e3g4o.mysql.rds.aliyuncs.com:3306/qingniu?autoReconnect=true&tcpKeepAlive=true&statementInterceptors=com.tianting.infoloop.tracing.MysqlZipkinInterceptor&useSSL=false
#spring.datasource.dynamic.datasource.slave.username=jj_infoloop_stage
#spring.datasource.dynamic.datasource.slave.password=H8kjNeChi1wimXw
#spring.datasource.dynamic.primary=master
logging.config=classpath:logback-spring.xml
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tianting.infoloop.mapper.DinerMapper">
<resultMap id="BaseResultMap" type="com.tianting.infoloop.model.db.Diner">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterpriseId" jdbcType="INTEGER"/>
<result property="clientId" column="clientId" jdbcType="INTEGER"/>
<result property="classId" column="classId" jdbcType="INTEGER"/>
<result property="studentNo" column="studentNo" jdbcType="VARCHAR"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
<result property="createdBy" column="createdBy" jdbcType="INTEGER"/>
<result property="createdAt" column="createdAt" jdbcType="TIMESTAMP"/>
<result property="creationSource" column="creationSource" jdbcType="INTEGER"/>
<result property="updatedBy" column="updatedBy" jdbcType="INTEGER"/>
<result property="updatedAt" column="updatedAt" jdbcType="TIMESTAMP"/>
<result property="updateSource" column="updateSource" jdbcType="INTEGER"/>
<result property="isDeleted" column="isDeleted" jdbcType="TINYINT"/>
</resultMap>
<sql id="Base_Column_List">
id,enterpriseId,clientId,
classId,studentNo,name,
createdBy,createdAt,creationSource,
updatedBy,updatedAt,updateSource,
isDeleted
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tianting.infoloop.mapper.GradeClassMapper">
<resultMap id="BaseResultMap" type="com.tianting.infoloop.model.db.GradeClass">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterpriseId" jdbcType="INTEGER"/>
<result property="clientId" column="clientId" jdbcType="INTEGER"/>
<result property="gradeName" column="gradeName" jdbcType="VARCHAR"/>
<result property="className" column="className" jdbcType="VARCHAR"/>
<result property="fullName" column="fullName" jdbcType="VARCHAR"/>
<result property="createdBy" column="createdBy" jdbcType="INTEGER"/>
<result property="createdAt" column="createdAt" jdbcType="TIMESTAMP"/>
<result property="creationSource" column="creationSource" jdbcType="INTEGER"/>
<result property="updatedBy" column="updatedBy" jdbcType="INTEGER"/>
<result property="updatedAt" column="updatedAt" jdbcType="TIMESTAMP"/>
<result property="updateSource" column="updateSource" jdbcType="INTEGER"/>
<result property="isDeleted" column="isDeleted" jdbcType="TINYINT"/>
</resultMap>
<sql id="Base_Column_List">
id,enterpriseId,clientId,
gradeName,className,fullName,
createdBy,createdAt,creationSource,
updatedBy,updatedAt,updateSource,
isDeleted
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tianting.infoloop.mapper.MealMenuRecordMapper">
<resultMap id="BaseResultMap" type="com.tianting.infoloop.model.db.MealMenuRecord">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterpriseId" jdbcType="INTEGER"/>
<result property="clientId" column="clientId" jdbcType="INTEGER"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
<result property="imageUrl" column="imageUrl" jdbcType="VARCHAR"/>
<result property="createdBy" column="createdBy" jdbcType="INTEGER"/>
<result property="createdAt" column="createdAt" jdbcType="TIMESTAMP"/>
<result property="creationSource" column="creationSource" jdbcType="INTEGER"/>
<result property="updatedBy" column="updatedBy" jdbcType="INTEGER"/>
<result property="updatedAt" column="updatedAt" jdbcType="TIMESTAMP"/>
<result property="updateSource" column="updateSource" jdbcType="INTEGER"/>
<result property="isDeleted" column="isDeleted" jdbcType="TINYINT"/>
</resultMap>
<sql id="Base_Column_List">
id,enterpriseId,clientId,
name,imageUrl,createdBy,
createdAt,creationSource,updatedBy,
updatedAt,updateSource,isDeleted
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tianting.infoloop.mapper.MealOrderMapper">
<resultMap id="BaseResultMap" type="com.tianting.infoloop.model.db.MealOrder">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterpriseId" jdbcType="INTEGER"/>
<result property="clientId" column="clientId" jdbcType="INTEGER"/>
<result property="menuId" column="menuId" jdbcType="INTEGER"/>
<result property="accountId" column="accountId" jdbcType="INTEGER"/>
<result property="orderMethod" column="orderMethod" jdbcType="TINYINT"/>
<result property="dinerId" column="dinerId" jdbcType="INTEGER"/>
<result property="dinerName" column="dinerName" jdbcType="VARCHAR"/>
<result property="clientName" column="clientName" jdbcType="VARCHAR"/>
<result property="gradeName" column="gradeName" jdbcType="VARCHAR"/>
<result property="className" column="className" jdbcType="VARCHAR"/>
<result property="studentNo" column="studentNo" jdbcType="VARCHAR"/>
<result property="reserveDate" column="reserveDate" jdbcType="TIMESTAMP"/>
<result property="meals" column="meals" jdbcType="OTHER"/>
<result property="createdBy" column="createdBy" jdbcType="INTEGER"/>
<result property="createdAt" column="createdAt" jdbcType="TIMESTAMP"/>
<result property="creationSource" column="creationSource" jdbcType="INTEGER"/>
<result property="updatedBy" column="updatedBy" jdbcType="INTEGER"/>
<result property="updatedAt" column="updatedAt" jdbcType="TIMESTAMP"/>
<result property="updateSource" column="updateSource" jdbcType="INTEGER"/>
<result property="isDeleted" column="isDeleted" jdbcType="TINYINT"/>
</resultMap>
<sql id="Base_Column_List">
id,enterpriseId,clientId,
menuId,accountId,orderMethod,
dinerId,dinerName,clientName,
gradeName,className,studentNo,
reserveDate,meals,createdBy,
createdAt,creationSource,updatedBy,
updatedAt,updateSource,isDeleted
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tianting.infoloop.mapper.MpAccountDinerRefMapper">
<resultMap id="BaseResultMap" type="com.tianting.infoloop.model.db.MpAccountDinerRef">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterpriseId" jdbcType="INTEGER"/>
<result property="accountId" column="accountId" jdbcType="INTEGER"/>
<result property="dinerId" column="dinerId" jdbcType="INTEGER"/>
<result property="createdBy" column="createdBy" jdbcType="INTEGER"/>
<result property="createdAt" column="createdAt" jdbcType="TIMESTAMP"/>
<result property="creationSource" column="creationSource" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
id,enterpriseId,accountId,
dinerId,createdBy,createdAt,
creationSource
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tianting.infoloop.mapper.MpAccountMapper">
<resultMap id="BaseResultMap" type="com.tianting.infoloop.model.db.MpAccount">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterpriseId" jdbcType="INTEGER"/>
<result property="openId" column="openId" jdbcType="VARCHAR"/>
<result property="unionId" column="unionId" jdbcType="VARCHAR"/>
<result property="nickname" column="nickname" jdbcType="VARCHAR"/>
<result property="avatarUrl" column="avatarUrl" jdbcType="VARCHAR"/>
<result property="gender" column="gender" jdbcType="TINYINT"/>
<result property="phoneNumber" column="phoneNumber" jdbcType="VARCHAR"/>
<result property="status" column="status" jdbcType="TINYINT"/>
<result property="createdBy" column="createdBy" jdbcType="INTEGER"/>
<result property="createdAt" column="createdAt" jdbcType="TIMESTAMP"/>
<result property="creationSource" column="creationSource" jdbcType="INTEGER"/>
<result property="updatedBy" column="updatedBy" jdbcType="INTEGER"/>
<result property="updatedAt" column="updatedAt" jdbcType="TIMESTAMP"/>
<result property="updateSource" column="updateSource" jdbcType="INTEGER"/>
<result property="isDeleted" column="isDeleted" jdbcType="TINYINT"/>
</resultMap>
<sql id="Base_Column_List">
id,enterpriseId,openId,
unionId,nickname,avatarUrl,
gender,phoneNumber,status,
createdBy,createdAt,creationSource,
updatedBy,updatedAt,updateSource,
isDeleted
</sql>
</mapper>