开通课程: 查看状态 操作里的开通课程 开通后完成叶子节点 的操作 显示变为 两个横线--) ...

本文介绍了一种通过树状结构展示用户已购课程的方法。该方法递归地遍历课程树,根据层级和是否已购买的状态来绘制树形结构,并记录每个节点的购买状态。此外,还提供了一个用于创建课程购买记录的辅助方法。

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




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

for (Course t : list) {
/*
* System.out.println("-----list:" + list.toString());
* System.out.println("-----t:" + t);
* System.out.println("-----list.size():" + list.size());
*/

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

// System.out.println("-----index:" + index);

// 先画上级节点延续下来的"|"+空格,空格具体数目由层数决定
//System.out.println("-----level:" + level);
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);
// System.out.println("-----t:" + t.getCname());
boolean bIsBuy = false;
if (t.getLeaf() == 0) {

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

} else {

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

}

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

}
public List<CourseIsBuy> findTreeForBuy(int stdId)
{
mStdId = stdId;
l.clear();
List<Course> list = (List<Course>) coursedao.findByPid(0);
for (Course t : list) {
if (t.getLeaf() != 0) {
boolean bIsBuy = stdCsd.findStdCourseByScId(stdId, t.getCid());
CreateCourseBuyRec(t, bIsBuy, bIsBuy);

aryNodeStatus[0]=true;
this.treeBuy(t.getCid(), 0, aryNodeStatus, bIsBuy);
} else {
boolean bIsBuy = stdCsd.findStdCourseByScId(stdId, t.getCid());
CreateCourseBuyRec(t, bIsBuy, false);
}
}
return ListBuyTree;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值