StdCourseServiceImpl

本文介绍了一个用于生成学生购买课程记录的服务实现。该服务通过递归遍历课程树,并标记已购买的课程节点,最终返回一个包含课程及其购买状态的列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




public class StdCourseServiceImpl implements IStdCourseService {
@Setter
@Getter
private ICourseDao coursedao;

@Setter
@Getter
private IStdCourseDao stdCourseDao;
private int mStdId;

//leaf 0 是根 1是叶子
private boolean[] aryNodeStatus = new boolean[100];
private List<CourseIsBuy> ListBuyTree = new ArrayList<CourseIsBuy>();

public void CreateCourseBuyRec(Course cs, boolean isBuy, boolean isRoot) {
CourseIsBuy ss = new CourseIsBuy();
ss.setCs(cs);
ss.setIsBuyed(isBuy);
ss.setIsRootCourse(isRoot);
ListBuyTree.add(ss);

}

public List<CourseIsBuy> findTreeForBuy(int stdId) {
mStdId = stdId;
ListBuyTree.clear();

List<Course> list = (List<Course>) stdCourseDao.findStdCourseByPid(0);
if(list==null)
return ListBuyTree;
for (Course course : list) {
//不是叶子
//0是叶子 1非叶子
if (course.getLeaf() != "0") {

boolean bIsBuy = stdCourseDao.findStdCourseByScId(stdId,
course.getCid());
CreateCourseBuyRec(course, bIsBuy, bIsBuy);

aryNodeStatus[0] = true;

this.treeBuy(course.getCid(), 0, aryNodeStatus, bIsBuy);
} else {
boolean bIsBuy = stdCourseDao.findStdCourseByScId(stdId,
course.getCid());
CreateCourseBuyRec(course, bIsBuy, false);
}
}


return ListBuyTree;
}

/**
* function :找到整个树并找到已购的课程
*
* @param:
*/
private void treeBuy(Integer cid, Integer level, boolean[] aryIsLastNode,
boolean isBuyFlag) {
int index = 0;

List<Course> list = (List<Course>) stdCourseDao.findStdCourseByPid(cid);
if (list==null) return;
for (Course course : list) {

String symbol = "";
String symbolf = "";
index++;

// 先画上级节点延续下来的"|"+空格,空格具体数目由层数决定

for (int lev = 0; lev < level; lev++) {
if (aryIsLastNode[lev] == false)
symbolf += "│";
else
symbolf += "  ";
}
// 是否为最后一个节点
if (index == list.size()) {
symbol = "└";

} else {
symbol = "├";

}
String cname = symbolf + symbol + course.getCname();
course.setCname(cname);

boolean bIsBuy = false;
if (course.getLeaf() == "0") {

// 判断一下他的上级是否已经是被购买了
if (!isBuyFlag) {
bIsBuy = stdCourseDao.findStdCourseByScId(mStdId,
course.getCid());
CreateCourseBuyRec(course, bIsBuy, bIsBuy);
isBuyFlag = bIsBuy;
} else {
CreateCourseBuyRec(course, true, false);
}

} else {

// 判断一下他的上级是否已经是被购买了
if (!isBuyFlag) {
bIsBuy = stdCourseDao.findStdCourseByScId(mStdId,
course.getCid());
CreateCourseBuyRec(course, bIsBuy, bIsBuy);
isBuyFlag = bIsBuy;
} else {
CreateCourseBuyRec(course, true, false);
}
course.setLevel(level + 1);
if (index == list.size()) {
aryIsLastNode[level] = true;
} else {
aryIsLastNode[level] = false;
}
treeBuy(course.getCid(), course.getLevel(), aryIsLastNode,
isBuyFlag);
}
}

}
}






package com.qieast.platform.admincp.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.qieast.platform.admincp.dao.ICourseDao;
import com.qieast.platform.admincp.service.ICourseService;
import com.qieast.platform.model.Course;

public class CourseServiceImpl implements ICourseService {
private ICourseDao coursedao;
private int cid;
private int parentid;

public ICourseDao getCoursedao() {
return coursedao;
}

public void setCoursedao(ICourseDao coursedao) {
this.coursedao = coursedao;
}

public int getCid() {
return cid;
}

public void setCid(int cid) {
this.cid = cid;
}

public int getParentid() {
return parentid;
}

public void setParentid(int parentid) {
this.parentid = parentid;
}

@Override
public void addCourse(Course course) {
coursedao.addCourse(course);

}

@Override
public List<Course> findAllCourse() {
List<Course> list = coursedao.findAllCourse();
return list;
}

@Override
public Course findCourseById(Integer cid) {
Course course = coursedao.findCourseById(cid);
return course;
}

@Override
public void updateCourse(Course course) {
coursedao.updateCourse(course);

}

@Override
public Course findCourseBycid(Integer cid) {
Course course = coursedao.findCourseBycid(cid);
return course;
}

// "└" "├ "│" "+"
private List<Course> l = new ArrayList<Course>();
private boolean[] aryNodeStatus = new boolean[100];

private void tree(Integer cid, Integer level, boolean[] aryIsLastNode) {
int index = 0;
List<Course> list = (List<Course>) coursedao.findCourseBypid(cid);

if (list==null) return;
for (Course t : list) {


String symbol = "";
String symbolf = " ";
index++;



// 先画上级节点延续下来的"|"+空格,空格具体数目由层数决定

for (int lev = 0; lev < level; lev++) {
if (aryIsLastNode[lev] == false)
symbolf += "│";
else
symbolf += " ";
}
// 是否为最后一个节点
if (index == list.size()) {
symbol = "└";

} else {
symbol = "├";

}

String cname = symbolf + symbol + t.getCname();
t.setCname(cname);

// if(t.getLeaf() == 0)
if (t.getLeaf() == "0") {

l.add(t);
// t.setLeveler(level + 1);
// tree(t.getId(),
// t.getLeveler(),index==list.size()?true:false);

} else {

l.add(t);
t.setLevel(level + 1);
if (index == list.size()) {
aryIsLastNode[level] = true;
} else {
aryIsLastNode[level] = false;
}
tree(t.getCid(), t.getLevel(), aryIsLastNode);
}
}

}

public List<Course> showTree() {
l.clear();
List<Course> list = (List<Course>) coursedao.findCourseBypid(0);
if(list==null)
return list;

for (Course t : list) {
if (t.getLeaf() != "0") { //if(t.getLeaf()!="0")
l.add(t);
aryNodeStatus[0] = true;
this.tree(t.getCid(), 0, aryNodeStatus);
} else {
l.add(t);
}
}
return l;

}

@Override
public List<Course> findCourseBypid(Integer parentid) {
List<Course> list = coursedao.findCourseBypid(parentid);
return list;
}

@Override
public boolean offLine(List<Course> list) {
for (Course c : list) {
c.setOnlinestate("0");
coursedao.updateOnline(c);
}
return false;
}

@Override
public void deleteMany(List<Course> list) {
for (Course c : list) {
coursedao.deleteCourse(c);
}

}

@Override
public void onLine(List<Course> list) {
for (Course c : list) {
c.setOnlinestate("1");
coursedao.updateOnline(c);
}
}

@Override
public void updateOnline(Course course) {
coursedao.updateCourse(course);

}

@Override
public void addSubCourse(Course course){
coursedao.addCourse(course);
}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值