淘宝客小程序制作(3)-API编写及部署

前提:淘宝客类的小程序微信是不能上线的,这里只是学习使用,请谨慎订阅,不过API可以使用在自己的网站或者APP里面

学习对象: 具有自己的网站或着线上有自己的APP的开发人员

小程序效果如图:

在这里插入图片描述

改章节所需条件:

编程工具:IntelliJ IDEA 2019.2.4 x64
语言:java
API框架:springBoot

1、创建一个新的java项目

1.1目录结构如下:

在这里插入图片描述

1.1.1 修改pom.xml,引用项目中使用的资源及项目的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.2.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>包名</groupId>
	<artifactId>项目名称</artifactId>
	<version>0.0.1</version>
	<name>coupon</name>
	<description>Coupon project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
		<!--  fastjson -->
		<fastjson.version>1.2.28</fastjson.version>
	</properties>
	<dependencies>
		<!-- -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- 支持web模块 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>${lombok.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>${fastjson.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.http</groupId>
			<artifactId>legacy</artifactId>
			<version>1.0.1</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/src/main/resources/lib/org.apache.http.legacy.jar</systemPath>
		</dependency>
		<dependency>
			<groupId>com.taobao.api</groupId>
			<artifactId>tbk</artifactId>
			<version>1.0.0</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/src/main/resources/lib/taobao-sdk-java-auto_1468685308771-20191224.jar</systemPath>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<includeSystemScope>true</includeSystemScope>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

### 1.1.2主函数的端口重定向

```java
@SpringBootApplication
public class CouponApplication {

	public static void main(String[] args) {
		SpringApplication.run(CouponApplication.class, args);
	}
	/**
	 * http重定向到https
	 * @return
	 */
	@Bean
	public TomcatServletWebServerFactory servletContainer() {
		TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
			@Override
			protected void postProcessContext(Context context) {
				SecurityConstraint constraint = new SecurityConstraint();
				constraint.setUserConstraint("CONFIDENTIAL");
				SecurityCollection collection = new SecurityCollection();
				collection.addPattern("/*");
				constraint.addCollection(collection);
				context.addConstraint(constraint);
			}
		};
		tomcat.addAdditionalTomcatConnectors(httpConnector());
		return tomcat;
	}

	@Bean
	public Connector httpConnector() {
		Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
		connector.setScheme("http");
		//Connector监听的http的端口号
		connector.setPort(8080);
		connector.setSecure(false);
		//监听到http的端口号后转向到的https的端口号
		connector.setRedirectPort(8443);
		return connector;
	}
}

1.1.3 API的编写

1.1.3.1 TaobaoController .java

@RestController
public class TaobaoController {

    @Autowired
    TaobaoService resourceService = TaobaoService.getInstance();

    /**
     * 根据推广链接生成淘宝口令,复制到淘宝应用即可
     *
     * @param createPWDBean
     * @return
     */
    @RequestMapping(value = "/api/createpwd", method = RequestMethod.GET)
    @ResponseBody
    public String createpwd(CreatePWDBean createPWDBean) {
        return resourceService.createPWD(createPWDBean);
    }

    /**
     * 根据关键字获取推广链接,产品列表
     * 常用
     * @param materialOptimusBean
     * @return
     */
    @RequestMapping(value = "/api/moptimus", method = RequestMethod.GET)
    @ResponseBody
    public String dgMaterialOptimus(MaterialOptimusBean materialOptimusBean) {
        return resourceService.dGMaterialOptimus(materialOptimusBean);
    }
}

1.1.3.2 TaobaoService.java

@Service
public class TaobaoService {
    private static final String url = "https://eco.taobao.com/router/rest";
    private static final String appkey = "xxx";//淘宝开发后台获取
    private static final String secret = "xxx";//淘宝开发后台获取
    private TaobaoClient client;
    //adzone_id 获取推广位ID的方式 https://baichuan.bbs.taobao.com/detail.html?spm=a3c0d.7998981.0.0.2d772f453XCdqI&postId=7332467
pid:mm_xxx_xxx_xxx     adzone_id 是第三个xxx
    private Long mAdzoneId = xxxL;

    //将双重检查改成懒汉模式,保证线程安全的问题。
    private static class HdAtlasClient {
        private static TaobaoService instance = new TaobaoService();
    }

    public static TaobaoService getInstance() {
        return HdAtlasClient.instance;
    }

    private TaobaoService() {
        if (client == null) {
            client = new DefaultTaobaoClient(url, appkey, secret);
        }
    }

    /**
     * 淘宝口令生成
     * String userId, String text, String url, String logoUrl
     */
    public synchronized String createPWD(CreatePWDBean createPWDBean) {
        TbkTpwdCreateRequest req = new TbkTpwdCreateRequest();
        req.setUserId(createPWDBean.getUserId());
        req.setText(createPWDBean.getText());
        req.setUrl(createPWDBean.getUrl());
        req.setLogo(createPWDBean.getLogoUrl());
        req.setExt("{}");
        TbkTpwdCreateResponse rsp = null;
        try {
            rsp = client.execute(req);
        } catch (ApiException e) {
            e.printStackTrace();
        }
        return rsp.getBody();
    }

    
    /**
     * 淘宝客-推广者-物料精选:taobao.tbk.dg.optimus.material(适用于自己推广的媒体使用)
     * 淘宝客-服务商-物料精选:taobao.tbk.sc.optimus.material(适用于工具服务商使用)
     */
   
    public synchronized String dGMaterialOptimus(MaterialOptimusBean materialOptimusBean) {
        TbkDgMaterialOptimusRequest req = new TbkDgMaterialOptimusRequest();
        req.setAdzone_id(mAdzoneId);
        req.setPage_no(Long.parseLong(materialOptimusBean.getPage_no()) );
        req.setPage_size(Long.parseLong(materialOptimusBean.getPage_size()) );
        req.setQ(materialOptimusBean.getKey());
        req.setHas_coupon(true);
        TbkResponse rsp = null;
        try {
            rsp = client.execute(req);
        } catch (ApiException e) {
            e.printStackTrace();
        }
        return rsp.getBody();
    }
}

其中对应的接口:
1、taobao.tbk.tpwd.create
2、 taobao.tbk.dg.material.optional

后端详细项目下载地址待整理:服务器源代码提取码: cjxt ;解压密码:654321

2、打包成jar,并部署

2.1打包成jar

如图:
在这里插入图片描述

2.2 部署程序

2.2.1

//这样启动方式在关闭客户端项目就停止了,当你的项目需要永久的运行的时候,就需要使用下面的方法
java -jar xxx.jar

2.2.2

nohup java -jar xxx.jar > system.log 2>&1 &

nohup java -jar coupon-0.0.1.jar &


kill -9 
nohup java -jar springboot_demo-1.0.0.jar & 
tail -100f nohup.out #进入日志查看

运行命令后,在同级目录下会出现system.log文件,这个文件就项目的日志文件。
使用命令:ps -a可以查看Java程序运行的进程号,用于停止程序,不过当程序有好几个的时候,用命令:ps -ef|grep java这个命令会将搜索Java相关的所以进程号,根据jar包名称找到需要停止的进程号,使用命令:kill -9 11759杀死进程,11759是进程号。(PS:杀死进程时一定要注意不要看错了进程号,以免杀错!!

ps -ef|grep java
kill -9 11759
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记住我的名字啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值