58红包系统开发【伍子胥:l47-l8lO-5ll3可微】
<h1>红包系统说明:</h1>
红包系统是有maven3+spring3.2.4.RELEASE+mybaits3.3.0+mysql5.6架构
整个系统的架构比较简单入门,凡是有一点java基础的朋友,很容易入门二次开发
<h2>安装说明:</h2>
1.0安装java
此系统要求java版本为1.6以上,目前最新版为java1.9版本,比较常用版本为java1.8版本,为了配合后面maven最新版,官方建议安装java1.7或java1.8.首先在www.oracle.com中下载对应操作系统的java版本,这里以windows为例,然后傻瓜式下一步,配置环境变量JAVA_HOME和path,不会的可以查看
https://jingyan.baidu.com/article/925f8cb836b26ac0dde0569e.html(有详细说明)
2.0安装maven3
进入Apache官方下载maven3,目前最新版为maven3.5.0下载地址为[这里](http://maven.apache.org/download.cgi),配置MAVEN_HOME环境变量和path变量,这个和配置java环境变量是一致的这里不再详细说明,可以参考官方安装说明http://maven.apache.org/install.html
3.0安装git版本
这里对于git不做过多的说明,不了解的朋友可以查看这里https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
4.0 MySQL安装
MySQL版本没有要求,这里以MySQL5.7.18.1(目前为最新版)为例,到这里https://dev.mysql.com/downloads/installer/傻瓜式安装不会的请参考这里http://jingyan.baidu.com/article/e75057f2c7d4ebebc91a89cb.html?st=2&os=0&bd_page_type=1&net_type=2
然后创建数据redpacket编码方式设置为UTF-8,根据E:myprojectRedPacketdb下的RedPacket.sql创建表信息
5.0本地安装项目
进入要存放代码的目录,这里我们以E:myproject为例
cmd命令进入当前目录或右键点击git bash here进入当前目录
执行命令git init(初始化git环境)
克隆代码到本地执行命令git clone https://github.com/java110/RedPacket.git
修改在E:myprojectRedPacketetc目录下db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://135.192.86.200:31057/redpacket?useUnicode=yes&characterEncoding=UTF8&autoReconnect=true
username=red
password=red#123
修改为自己的MySQL信息,135.192.86.200修改为自己数据库地址,31057修改为自己数据库端口(如果数据库信息没有修改默认为3306)
填写自己的数据库用户名和密码
进入RedPacket目录执行mvn clean install命令
在target目录下会有打包好的war文件(E:myprojectRedPackettargetRedPacket-0.0.1-SNAPSHOT.war)
6.0下载安装Tomcat
官方获取Tomcat,这里以Tomcat8为例http://tomcat.apache.org/download-80.cgi下载解压,将上一步生成的RedPacket-0.0.1-SNAPSHOT.war的war包
改名为RedPacket.war放入到解压后的Tomcat目录下webapps下,然后再bin目录下运行startup.bat启动
7.0访问项目
该项目是对接微信和支付宝,所以必须要求有微信公众号或支付宝服务窗,微信对接地址为:http://ip:port/RedPacket/WGatewayController.indexPage
这里ip:port ip对应公网ip port对应公网开放端口,微信目前只支持80端口,所以这个对接时请修改为80,首页访问地址为:http://ip:port/RedPacket/WIndexPacketController.indexPage
支付宝对接地址为:http://ip:port/RedPacket/GatewayController.indexPage这里ip:port ip对应公网ip port对应公网开放端口,所以这个对接时请修改为80,首页访问地址为:http://ip:port/RedPacket/IndexPacketController.indexPage
如果没有微信公众号和支付宝服务窗的情况下需要测试时,baseController类下的方法
public boolean loginValidate(HttpServletRequest request){
//生产获取用户
User user=this.getUser();
//测试获取用户
//User user=this.getTestUser();
if(user==null){
return false;
}
return true;
}
public class RedPackageActivity{
private String id;
//红包总金额
private Integer totalAmount;
//红包总数量
private Integer totalNumber;
//版本,用于控制并发
private int version;
//红包剩余金额
private Integer surplusAmount;
//红包剩余数量
private Integer surplusNumber;
public RedPackageActivity(){
setId(genId());
}
public void init(Integer totalAmount,Integer totalNumber){
if(totalAmount<totalNumber){
throw new IllegalArgumentException();
}
setTotalAmount(totalAmount);
setTotalNumber(totalNumber);
//最开始的时候,剩余金额和剩余数量与总金额和总数量一致
setSurplusAmount(totalAmount);
setSurplusNumber(totalNumber);
}
public void draw(Consumer<RedPackage>consumer){
draw(getSurplusNumber(),consumer);
}
public void draw(int size,Consumer<RedPackage>consumer){
for(int i=0;i<size;i++){
consumer.accept(draw());
}
}
private RedPackage draw(){
if(hasNext()){
RedPackage redPackage=new RedPackage();
redPackage.setActivityId(getId());
redPackage.setId(genId());
redPackage.setAmount(nextAmount());
redPackage.init();
//更新剩余数量
updateSurplus(redPackage);
return redPackage;
}else{
return null;
}
}
private void updateSurplus(RedPackage redPackage){
setSurplusNumber(getSurplusNumber()-1);
setSurplusAmount(getSurplusAmount()-redPackage.getAmount());
}
private int nextAmount(){
if(surplusNumber==totalNumber-1){
return totalAmount-surplusAmount;
}else{
return totalAmount/totalNumber;
}
}
private boolean hasNext(){
return surplusNumber>0;
}
public boolean hasBalance(){
return hasNext();
}
}
public interface RedPackageApplication{
RedPackageActivity createActivity(int total,int size);
UserRedPackage draw(String activityId,String userId);
List<UserRedPackage>getByUser(String userId);
List<UserRedPackage>getByUserAndActivity(String userId,String activity);
}
注释生产获取用户,放开测试用获取用户,并且在数据库表t_user表中插入数据如下:
insert into t_user(name,passwd,phone,userId,wOpenId,zOpenId,email)
values('java110官方测试','123456','15897089471','10020160223001','123','','928255095 qq.com');
<h2>二次开发项目搭建:</h2>
1.0开发工具选择
官方是由Myeclipse 8.5开发,二次开发完全可以用eclipse或任意版本的MyEclipse开发,配置maven信息,按maven导入就可以了,各位idea的朋友只需要导入项目是选择以eclipse方式导入也是可以的
————————————————
版权声明:本文为CSDN博主「qq_25500575」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_25500575/article/details/72792525



