Skip to content

Commit

Permalink
cron task and [cardrecharge and levelcost fix]
Browse files Browse the repository at this point in the history
  • Loading branch information
harveyprince committed Mar 22, 2015
1 parent 898fcde commit e842334
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 1 deletion.
Binary file modified build/classes/com/cinemaonline/dao/VipDao.class
Binary file not shown.
Binary file modified build/classes/com/cinemaonline/dao/impl/VipDaoImpl.class
Binary file not shown.
Binary file modified build/classes/com/cinemaonline/service/impl/VipServiceImpl.class
Binary file not shown.
3 changes: 3 additions & 0 deletions src/com/cinemaonline/dao/VipDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ public interface VipDao {
public void update(VipInfo info);

public VipInfo getVipInfoById(String userid);

public List<VipInfo> getVipForLevelPay();
// card
public VipCard insertCard(VipCard info);

Expand All @@ -28,4 +30,5 @@ public interface VipDao {
public VipRecord insertRecord(VipRecord info);

public List<VipRecord> getRecordsById(String userid);

}
29 changes: 29 additions & 0 deletions src/com/cinemaonline/dao/impl/VipDaoImpl.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.cinemaonline.dao.impl;

import java.util.Date;
import java.util.List;

import org.hibernate.Query;
Expand Down Expand Up @@ -236,4 +237,32 @@ public List<VipRecord> getRecordsById(String userid) {
}
}

@Override
public List<VipInfo> getVipForLevelPay() {
// TODO Auto-generated method stub
Session session = baseDao.getNewSession();
Date time = new Date();
long timestamp = time.getTime()-365*24*60*60*1000;
String sql = "select a.* from VipInfo as a inner join (select max(r.recordTime) e,r.vipId from VipRecord as r where r.purpose='lvcost' group by r.vipId having e<?) as v on a.vipId = v.vipId where a.vipStatus<4";
List list = null;
try{
Query query = session.createSQLQuery(sql).addEntity(VipInfo.class);
query.setParameter(0, timestamp);
list = query.list();
}catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
if(list!=null){
if(list.size()>0){
return list;
}else{
return null;
}
}else{
return null;
}
}

}
12 changes: 11 additions & 1 deletion src/com/cinemaonline/service/impl/CronServiceImpl.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,31 @@
package com.cinemaonline.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.cinemaonline.dao.VipDao;
import com.cinemaonline.model.VipInfo;
import com.cinemaonline.service.CronService;
import com.cinemaonline.service.VipService;

@Service
public class CronServiceImpl implements CronService {

@Autowired
private VipDao vipDao;
@Autowired
private VipService vipService;
@Override
public void vipLevelCostJudge() {
// TODO Auto-generated method stub
// 以年为周期,采用365天计数
// 获取超过365天未缴费的会员,并分析状态
// 获取超过365天未缴费的会员,并分析状态[不获取4停止\5取消]
List<VipInfo> viplist = vipDao.getVipForLevelPay();
for(VipInfo vip:viplist){
vipService.cardLevelCost(vip.getVipId());
}
}


Expand Down
30 changes: 30 additions & 0 deletions src/com/cinemaonline/service/impl/VipServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,22 @@ public OperaResult cardLevelCost(String userid) {
info.setCostNum(userinfo.getVipCard().getVipLevel().getCost());
info.setPurpose("lvcost");
result = cardBalanceOpera(info);
if(result.getResult()){
if(userinfo.getVipStatus()==2){
userinfo.setVipStatus(1);
vipDao.update(userinfo);
}
return result;
}else{
//lvcost失败,会员状态暂停[如果状态已经为暂停,则停止会员记录]
if(userinfo.getVipStatus()==1){
userinfo.setVipStatus(2);
}
if(userinfo.getVipStatus()==2){
userinfo.setVipStatus(4);
}
vipDao.update(userinfo);
}
return result;
}

Expand All @@ -112,6 +128,15 @@ public OperaResult cardBalanceOpera(VipOperaInfo info_const) {
// TODO Auto-generated method stub
OperaResult result = new OperaResult();
VipInfo info = vipDao.getVipInfoById(info_const.getUserid());
if(info.getVipStatus()>=4){
result.setResult(false);
result.setComment("vip has been canceled");
return result;
}
if(info.getVipStatus()==2&&info_const.isCost()){
result.setResult(false);
result.setComment("vip has been frozed");
}
VipCard card = info.getVipCard();
double moneyleft = card.getBalance();
double numopera = info_const.getNum();
Expand All @@ -129,6 +154,11 @@ public OperaResult cardBalanceOpera(VipOperaInfo info_const) {
opinfo.setComment("not enough");
}
recordService.insertVipRecord(opinfo);
if(info.getVipStatus()==2){
if(card.getBalance()>=card.getVipLevel().getCost()){
cardLevelCost(info.getVipId());
}
}
return result;
}

Expand Down

0 comments on commit e842334

Please sign in to comment.