数据库表新增一个字段的相关流程

数据库新增一个字段 red_sum_omission

查询相关的文件要改
	实体 SsqBaseRedBlue 新增属性 redSumOmission
	mapper.xml 增加字段与属性的映射关系
	
插入相关:
	1 zst-scheduler/.../SsqBaseRedBlueSis.java中加一句:
		baseRedBlue.setRedSumOmission(MissionCal.calRedHeMission(lastSsqBaseRedBlue.getRedSumOmission(),winNumbersRed));
	2 MissionCal中需要添加上面的方法 MissionCal.calRedHeMission
	/**
	 * 红球和值 遗漏计算
	 *
	 * @param oldMission
	 *            旧遗漏值
	 * @param winNumbers
	 * @return
	 */
	public static String calRedHeMission(String oldMission, String[] winNumbers) {

		Map<Integer, Integer> missionMap = BallProperties.getMissionMap(oldMission);

		int he = BallProperties.getHe(winNumbers);
		// 40及以下 41-45 46-50 51-55 56-60 61-65 66-70 71-75 76-80 81-85 86-90 91-95 96-100 101-105 106-110
		// 111-115 116-120 121-125 126-130 131-135 136-140 141-145 146-450 151-155 156-160 161-165 166及以上

		int index = 0;
		if (he <= 40) {
			index = 0;
		} else if(he>=41 && he<=165){
			index = ((he-1)-40)/5+1;
		} else if(he >= 166){
			index = 26;
		}
		missionMap.put(index, 0);

		oldMission = BallProperties.getMissionByMap(oldMission, missionMap);

		return oldMission;
	}


        新增一个字段,那么这个字段的值都是null,可能需要进行一次初始化进行填充
	初始化的执行需要写在admin-web工程里
		1 首先找到初始化的字段相关的页面,比如 red_sum_omission 字段是加载走势图相关表中的,所以找到走势图相关的页面,比如我这是加到:彩期管理->走势图数据修复的菜单中,加了个按钮
		2 这个按钮调用到ZstController中,新增一个初始化该字段的方法,在该方法中调用zst-client工程里的远程服务,去调用到zst-server去访问数据库进行该字段的初始化
		3 要调用到zst-client,需要做到以下几步:
			3.1 在admin-web的applicationContext.xml中导入zst-client的配置文件context.xml(其实就相当于在admin-web中配置了服务消费者一样,然后admin-web作为消费者就可以调用提供者了)
				<import resource="classpath*:/zstClientConfig/context.xml" />
			3.2 admin-web的pom.xml中引入zst-client的依赖
				<dependency>
					<groupId>com.aicai.zst</groupId>
					<artifactId>zst-client</artifactId>
					<version>1.0.0-SNAPSHOT</version>
				</dependency>
			3.3 在ZstController中注入FcSsqAnalysisDataService接口,通过该接口调用zst中的方法
				FcSsqAnalysisDataService接口是zst-common中的类,为什么admin-web中可以调用呢,是因为admin-web的pom文件中依赖了zst-client,而zst-client又依赖了zst-common,因此这里可以调用
		4 上面实现了从admin-web调用到zst服务,接下来如果要在本地跑,需要分别在2个tomcat中部署(deployment)一下admin-web和zst-server工程,然后启动这2个tomcat,然后访问admin-web去点击那个加的按钮,然后调用到zst服务进行初始化操作
			在启动服务之前,修改一下zst-server(服务提供者)和zst-client(服务消费者)的dubbo的注册中心配置:<dubbo:registry group=".../lc">,2边的要一样,这样就会注册和订阅到同一个dubbo服务,具体可见博客https://blog.csdn.net/liucai1018/article/details/103786836
		5 在启动admin-web时报错:读取不到zst-client的xdiamond上配置的变量值,于是引起下面要做的一个事情
			在admin-web中通过配置去连接XDiamond(之前是通过appHome):
				5.1 pom文件依赖:
					<!-- 配置中心 xdiamond -->
					<dependency>
						<groupId>io.github.xdiamond</groupId>
						<artifactId>xdiamond-client</artifactId>
						<version>0.0.1-SNAPSHOT</version>
					</dependency>
				5.2 admin-web下resources目录下新建spring-env.xml,配置连接XDiamond:下面的要修改一下groupId,artifactId,version为自己项目的内容,对应的值可以到admin-web的pom文件中找
					<?xml version="1.0" encoding="UTF-8"?>
					<beans xmlns="http://www.springframework.org/schema/beans"
						   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
						   xsi:schemaLocation="http://www.springframework.org/schema/beans
							http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

						<bean id="xDiamondConfig" class="io.github.xdiamond.client.spring.XDiamondConfigFactoryBean">
							<property name="serverHost" value="${xdiamond.server.host:xdiamond.daily.inzwc.com}" />
							<property name="serverPort" value="5678" />
							<property name="groupId" value="com.aicai.admin" />
							<property name="artifactId" value="admin-web" />
							<property name="version" value="2.0-SNAPSHOT" />
							<property name="profile" value="${xdiamond.project.profile:daily}" />
							<property name="secretKey" value="${xdiamond.project.secretkey:}"></property>
						</bean>

						<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
							<property name="ignoreUnresolvablePlaceholders" value="true" />
							<property name="properties">
								<bean id="xDiamondProperties" class="java.util.Properties"
									  factory-bean="xDiamondConfig" factory-method="getProperties">
								</bean>
							</property>
						</bean>
					</beans>
				5.3 在applicationContext.xml中导入spring-env.xml
				5.4 到XDiamond系统上->项目管理->新建一个Project
					将内容填写一些,ownerGroup这里选择"技术中心"
				5.5 连接远程服务器,修改beta和线上服务器的opt/tomcat.../bin下的setenv.sh文件下的值:(daily可以不加是因为上面配置文件给了默认值)
					-Dxdiamond.server.host=xdiamond.inzwc.com (对应各个环境下 xDiamond server的ip)
					-Dxdiamond.project.profile=product 
					-Dxdiamond.project.secretkey=b8ylj4r0OcBMgdNU"
					如果这几个没有的话就加一下
				可以了,到时候上beta和线上的需要再在XDiamond上新增一下,以及修改一下对应环境的远程服务器内容
	最终执行初始化的逻辑代码写在zst-server中:
		FcSsqAnalysisDataManagerImpl 类 initRedSumOmission 方法
		

发布了98 篇原创文章 · 获赞 9 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/liucai1018/article/details/103850700