分类的生成规则



 /*
顶级分类默认值:100

一级分类:101100(自然数增加)

二级分类:101100100(前6位是父类ID,后3位取当前分类下的最大值加1,从100--999)

顶级分类:100

一级分类:101101(自然数增加)

二级分类:101101100(前6位是父类ID,后3位取当前分类下的最大值加1,从100--999)

每个二级分类下可添加900个子类。

*/

 1     //新增分类
2 public String addCategory(Category cate) {
3 try {
4 //1.取模块代码
5 String parentid=cate.getParentid();
6 int begin=parentid.length()+1;
7 String sql1="";
8 int flag = 0;
9 //顶级节点为100,一级节点
10 if(parentid.equals("100")){
11 sql1="SELECT (CASE WHEN MAX(TO_NUMBER(CATID)) IS NULL THEN 100 ELSE MAX(TO_NUMBER(CATID)) END)+1 FROM MALL_CATEGORY WHERE PARENTID=‘100‘";
12 log.info("==addCategory:===="+sql1+"========");
13 Long maxcatid=this.getJdbcTemplate().queryForLong(sql1);
14 cate.setCatid(maxcatid.toString());
15 cate.setParentid("100");
16 flag = 3;
17 }
18 //非一级节点
19 else{
20 sql1 = "select min(catid) from mall_category where parentid=‘"+parentid+"‘ and status=2";
21 Long mincatid=this.getJdbcTemplate().queryForLong(sql1);
22 if(mincatid != 0L){
23 //使用删除的子分类ID作为新的ID,跟新数据
24 cate.setCatid(mincatid.toString());
25 flag = 1;
26 }else{
27 //获取所有分类ID
28 List<Category> listCatid = findAllCatid(parentid);
29 HashSet<String> set = new HashSet<String>();
30 Category item = null;
31 if(!StringUtils.isEmpty(listCatid)){
32 //该父分类下已有子分类,使用未使用过的子分类ID
33 for(int a = 0 ;a<listCatid.size();a++){
34 item = listCatid.get(a);
35 set.add(item.getCatid());
36 }
37 for(int a = 101;a <= 1000;a++){
38 if(a==1000){
39 flag = 2;
40 break;
41 }
42 if(!set.contains(a+"")){
43 cate.setCatid(parentid+a);
44 flag = 3;
45 break;
46 }
47 }
48 }else{
49 //该父分类下首次增加子分类
50 cate.setCatid(parentid+100);
51 flag = 3;
52 }
53 }
54 }
55 //2.取模块顺序
56 String sql2="SELECT (CASE WHEN MAX(TO_NUMBER(LISTORDER)) IS NULL THEN 0 ELSE MAX(TO_NUMBER(LISTORDER)) END)+1 FROM MALL_CATEGORY WHERE parentid=‘"+cate.getParentid()+"‘";
57 log.info("==addCategory:===="+sql2+"========");
58 Integer listorder=this.getJdbcTemplate().queryForInt(sql2);
59 cate.setListorder(listorder);
60 cate.setStatus(1);
61 String sql = "",catid = "";
62 if(flag != 2){
63 if(flag == 3){
64 //新增
65 sql = "INSERT INTO MALL_CATEGORY(CATID,CATNAME,PARENTID,LISTORDER,THUMB,STATUS,CATNAME2) VALUES(‘"+cate.getCatid()+"‘,‘"+cate.getCatname()+"‘,‘"+cate.getParentid()+"‘,"+cate.getListorder()+",‘"+cate.getThumb()+"‘,"+cate.getStatus()+",‘"+cate.getCatname2()+"‘)";
66 }else if(flag == 1){
67 //修改
68 sql = "update MALL_CATEGORY set CATNAME=‘"+cate.getCatname()+"‘,LISTORDER="+cate.getListorder()+",THUMB=‘"+cate.getThumb()+"‘,STATUS="+cate.getStatus()+",CATNAME2=‘"+cate.getCatname2()+"‘ where catid =‘"+cate.getCatid()+"‘";
69 }
70 log.info("sql:"+sql);
71 this.getJdbcTemplate().execute(sql);
72 catid = cate.getCatid();
73 }else{
74 catid = "";
75 }
76 return catid;
77 } catch (Exception e) {
78 log.info("==CategoryDao:addCategory==异常=====msg:"+e.getMessage());
79 return "";
80 }
81 }

分类的生成规则

时间: 2024-10-13 02:17:37

分类的生成规则的相关文章

订单号生成规则

前阵子,公司有个电子商务项目,需要生成订单号.当时的考虑很简单,取系统时间加上随机数,或者使用 uniqid() 方法.我们都知道,订单号最基本的要求就是唯一,这个条件必须满足.仔细考虑下上述方法,在顾客购买量少的情况下,订单重复的可能性为零,但是在购买高蜂期生成的订单号重复是很有可能发生的.所以上述方法不可靠,有待强化.在网上找了一番,发现这位同学的想法挺不错的,redtamo,具体的请稳步过去看看,我作简要概述,该方法用上了英文字母.年月日.Unix 时间戳和微秒数.随机数,重复的可能性大大

LoadRunner之Paramater在负载测试中的数据生成规则

LoadRunner之Paramater在负载测试中的数据生成规则 前段时间在做性能测试的时候,基于业务的需求,使用到了Unique Number的参数类型. 脚本的业务是注册以alien开头,后面接数字的用户帐号,填写相关帐号信息.提交企业信息进行审核. 其中用户帐号是alien开头拼接一个唯一数字的参数,如图: 下面对Unique Number进行相关解释,先引用官方资料:(相信大家也理解这段话的意思) Unique Number: Assigns a range of numbers to

vs2017 自定义生成规则 错误 MSB3721 命令 ”已退出,返回代码为 1。

错误 MSB3721 命令 ”已退出,返回代码为 1. 解决办法:去掉yasm复选框,改为masm vs2017 自定义生成规则-编译汇编代码 VC++调用yasm编译汇编代码有三种方法:Custom Build..rules文件..targets文件. 1 Custom Build Custom Build的优点是适用面广,vc6~vc2015都能使用:缺点是修改命令行参数稍显麻烦. 图1.19 Outputs是编译*.asm后的输出文件,连接时会用到此文件.上图的设置为"(IntDir)$(

不重复订单号生成规则

偶尔在网上看到的,相对比较好的c#端订单号生成规则 public class BillNumberBuilder{ private static object locker = new object(); private static int sn = 0; public static string NextBillNumber(){ lock(locker){ if(sn == 9999999999) sn = 0; else sn++; return DateTime.Now.ToStrin

订单号生成规则,谁用谁知道

1 class Program 2 { 3 //订单号数据源,实际项目中,这里是从数据库中读取过来的 4 string[] strList = { "201512000001", "201512000002", "201512000003", "201512000004", 5 "201512000008", "201512000007", "201512000006"

C#dll版本号默认生成规则

原文:C#dll版本号默认生成规则 1.版本号自动生成方法 只需把 AssemblyInfo.cs文件中的[assembly: AssemblyVersion("1.0.0.0")]改成[assembly: AssemblyVersion("1.0.*")],另外还需要把[assembly: AssemblyFileVersion("1.0.0.0")]注释屏蔽掉.这样再生成的程序集就是自动版本号了. 2.按照这个格式出来的版本号,内部修订版本号

服务器唯一id生成规则

在使用hashCode的时候,发现会出现相同id,虽然几率很小.虽然发现并不是hashCode的原因,而是其他逻辑的问题. 但是还是试着自己写了一个id生成器,有些id是int的,比如说任务id:有些id是long的,比如说玩家id. 先贴代码来看: private static AtomicInteger id = new AtomicInteger(0); public static long getId() { return (ServerKit.getServerId() & 0xFFF

iss下伪静态生成规则方法

生成一个名叫web.config文件,放在网站的根目录下,内容设置如下: <?xml version="1.0" encoding="UTF-8"?><configuration>    <system.webServer><!--将下面的规则添加到这里-->    <rewrite>        <rules>            <rule name="index&quo

房地产合同档案分类及编号规则

房地产合同档案大致可以分为以下几类: A.购销合同 B.建筑安装工程承包 C.技术开发.转让.咨询.服务合同 D.加工承揽.定作.广告.印刷合同 E.勘察.设计合同F.租赁房地产企业合同管理具有管理时间的长期性.管理内容的庞杂性.管理涉及人员的众多性.管理体现了较强的国家干预性.管理的高风险性等特性.由于在房地产开开发活动中涉及到许多的参与者,许多的手续,必然要通过合同来确保主体之间的的权利义务关系.所以管理好公司的合同档案是很重要的事. 房地产合同档案分类编号   地产合同分类编号规则 1 工