package com.cpic.a2.backend.sales.business.channel.service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.cpic.a2.backend.sales.dao.channel.ChannelBranchRelaDao;
import com.cpic.a2.backend.sales.dao.channel.ChannelDao;
import com.cpic.a2.backend.sales.dao.channel.ChannelSoluRelaDao;
import com.cpic.a2.sales.vo.channel.ChannelBranchRelaVO;
import com.cpic.a2.sales.vo.channel.ChannelSoluRelaVO;
import com.cpic.a2.sales.vo.channel.ChannelVO;
import com.cpic.a2.util.exception.PersistentException;
import com.cpic.common.base.service.BaseService;
@Service("channelService")
@Transactional(value="hibernateTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = {PersistentException.class,RuntimeException.class })
public class ChannelService extends BaseService implements IChannelService {
@Autowired
private ChannelDao channelDao;
@Autowired
private ChannelBranchRelaDao channelBranchRelaDao;
@Autowired
private ChannelSoluRelaDao channelSoluRelaDao;
public String generateChannelCode() {
Date newDate = new Date();
int i = (int)(Math.random()*(9999-1000))+1000;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
return "CH"+dateFormat.format(newDate).concat(""+i);
}
public void createChannel(ChannelVO channelVO,List<ChannelBranchRelaVO> channelBranchRelaVOs) throws PersistentException {
channelVO.setChannelStatus("1");
//如果用户没有选择企业团购类型,系统自动设置为01(网购)
if (channelVO.getCooperationType()==null) {
channelVO.setCooperationType("01");
}
channelVO.setCreationDtime(new Date());
channelDao.saveOrUpdate(channelVO);
for (int i=0;i<channelBranchRelaVOs.size();i++) {
channelBranchRelaVOs.get(i).setChannelId(channelVO.getChannelId());
channelBranchRelaDao.saveOrUpdate(channelBranchRelaVOs.get(i));
}
}
public void updateChannel(ChannelVO channelVO,
List<ChannelBranchRelaVO> channelBranchRelaVOs) throws PersistentException {
if (channelVO.getChannelStatus()==null) {
channelVO.setChannelStatus("1");
}
//如果用户没有选择企业团购类型,系统自动设置为01(网购)
if (channelVO.getCooperationType()==null) {
channelVO.setCooperationType("01");
}
channelDao.saveOrUpdate(channelVO);
if (channelBranchRelaVOs!=null) {
ChannelBranchRelaVO queryParametersVO = new ChannelBranchRelaVO();
queryParametersVO.setChannelId(channelVO.getChannelId());
//delete channel branch rela vo first
List<ChannelBranchRelaVO> relaList = channelBranchRelaDao.queryChannelBranchRela(queryParametersVO);
if (relaList!=null) {
for (int i=0;i<relaList.size();i++) {
ChannelBranchRelaVO relaVO = relaList.get(i);
channelBranchRelaDao.delete(ChannelBranchRelaVO.class,relaVO.getListId());
}
}
for (int i=0;i<channelBranchRelaVOs.size();i++) {
channelBranchRelaVOs.get(i).setChannelId(channelVO.getChannelId());
channelBranchRelaDao.saveOrUpdate(channelBranchRelaVOs.get(i));
}
}
}
public List<ChannelVO> queryChannelList(ChannelVO queryParametersVO,
Integer currentPage, Integer pageSize) throws PersistentException {
this.log("normal message", "INFO", queryParametersVO.toString(), "queryChannelList", null);
if (currentPage ==null && pageSize==null) {
return null;
} else {
return channelDao.queryChannelList(queryParametersVO, currentPage.intValue(), pageSize.intValue());
}
}
public Long queryChannelListCount(ChannelVO queryParametersVO) throws PersistentException {
return channelDao.queryChannelListCount(queryParametersVO);
}
public ChannelVO getChannel(Long channelId) throws PersistentException {
return (ChannelVO) channelDao.get(ChannelVO.class,channelId);
}
public List<ChannelBranchRelaVO> queryChannelBranchRelaVO(Long channelId) throws PersistentException {
return channelDao.queryChannelBranchRelaVO(channelId);
}
public void removeAllChannelSoluRela(Long channelId) throws PersistentException {
List<ChannelSoluRelaVO> relaList = channelSoluRelaDao.queryByChannelId(channelId);
if (relaList!=null) {
for (int i=0;i<relaList.size();i++) {
channelSoluRelaDao.delete(ChannelSoluRelaVO.class,((ChannelSoluRelaVO)relaList.get(i)).getListId());
}
}
}
public void createChannelSoluRela(ChannelSoluRelaVO relaVO) throws PersistentException {
channelSoluRelaDao.saveOrUpdate(relaVO);
}
public List<ChannelSoluRelaVO> queryChannelSoluRelaVOByChannelId(Long channelId) throws PersistentException {
return channelSoluRelaDao.queryByChannelId(channelId);
}
//更新渠道方案经办人关联信息 2012-11-22
public boolean updateChanSolu(String[] updArr) {
return channelSoluRelaDao.updateChanSolu(updArr);
}
}
- 浏览: 787815 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (981)
- javascript (102)
- java (212)
- JQuery (81)
- 幽默笑话 (2)
- 只言片语 (6)
- 开发小记 (283)
- Hibernate (17)
- DWR (4)
- SQL (10)
- spring-ibatis (8)
- linux (24)
- Struts1 (8)
- Struts2 (16)
- spring (42)
- Mybatis (16)
- css (18)
- servlet (8)
- jdbc (4)
- jsp (1)
- spring-jdbc (2)
- FreeMarker (2)
- MySQL (24)
- JQuery-Grid (7)
- jstl (5)
- 正则表达式 (1)
- 面试集锦 (86)
- unix (18)
- 开发工具 (23)
- ajax (5)
- webservice (4)
- log4j (3)
- oracle (15)
- extjs (14)
- 其他 (9)
- 优秀技术参考地址 (1)
- 性能 (3)
- 数据库 (25)
- 算法 (15)
- 设计模式 (10)
- Python (3)
- AIX (5)
- weblogic (1)
- shell (14)
- quartz (5)
- 图形文件FusionCharts (1)
- Websphere (4)
- 转载 (5)
- hadoop (1)
- highchart (24)
- perl (22)
- DB2 (7)
- JBoss (1)
- JQuery Easy UI (9)
- SpringMVC (5)
- ant (5)
- echart (9)
- log4J配置 (3)
- 多线程 (10)
- 系统架构 (7)
- nginx (3)
- loadrunner1 (1)
- 分布式 (1)
- Dubbo (1)
- Redis (2)
- JMS (4)
- 自动化测试 (3)
- Spring循环依赖的三种方式 (1)
- spring-boot (2)
- 高级测试 (9)
- github (2)
- sonar (1)
- docker (6)
- web前端性能优化 (1)
- spring-aop (6)
- rabbit (1)
- ELK (1)
- maven (1)
- minio (1)
最新评论
-
zengshaotao:
jstl1point0 写道很好啊,如果有带Session会话 ...
Nginx+Tomcat搭建高性能负载均衡集群 -
jstl1point0:
很好啊,如果有带Session会话的怎么搞呢
Nginx+Tomcat搭建高性能负载均衡集群
发表评论
-
选股神器
2022-08-20 15:07 204最近闲来无事,突发奇想,将自己的选股思路自动化,计算机化。。 ... -
rpm安装jdk,设置环境变量
2019-05-12 22:49 6331、将jdk的rpm包拷贝到 ... -
java安全编码
2019-01-18 22:31 481软件安全问题,一般 ... -
生产者消费者
2018-07-01 21:33 429package function.thread; i ... -
打印mybatis的执行语句到控制台和文件
2017-12-13 15:11 813log4j.rootLogger=INFO,CONSOLE, ... -
java中类的加载顺序介绍(ClassLoader)
2017-11-14 11:41 8171、ClassNotFoundExcetpion 我们在 ... -
守护线程
2017-11-13 16:40 433对于线程,有个守护的线程的概念。如何理解呢?比如A线程里,n ... -
类加载机制及反射
2017-09-24 08:45 586一、Java类加载机制 ... -
java+selenium2 自动化测试框架
2017-09-15 09:36 1018package web.selenium2; ... -
JMS实例
2017-08-21 15:40 4781. JMS架构 Java 消息服务(Java M ... -
linux设置java环境
2017-08-07 16:47 454linux配置java环境变量(详细) 一. 解压安装jdk ... -
分布式
2017-07-19 12:12 450转载请注明出处:http://blog.csdn.net/l ... -
tomcat+nginx+redis
2017-07-18 16:46 477应用系统的基本架构: -
java调用远程机器的shell脚本
2017-07-14 12:19 1591此程序的目的是执行远程机器上的Shell脚本。 【环境参数 ... -
生产者消费者进阶(带有condition)
2017-05-09 17:56 585package function.thread; ... -
多线程之 CountDownLatch
2017-05-01 13:01 521package function.thread; ... -
判断服务器类型
2017-04-12 10:52 488开发时一般用tomcat,然后在测试环境发布时使用的是web ... -
IE的不同文本浏览模式页面显示
2017-04-11 14:34 541现象描述:最近在遇到的问题就是在在Chrome,火狐页面都正 ... -
java中Filter、Servlet、Listener的学习
2017-03-29 21:52 4551、Filter的功能filter功能,它使用户可以改变一个 ... -
高并发,线程池
2017-03-29 21:52 10971.高并发的内容 Zookee ...
相关推荐
Spring AOP提供了三种实现方式:代理模式、AspectJ切面和注解驱动的切面。 1. **代理模式** Spring AOP的基础是动态代理,它可以创建目标对象的代理对象来实现切面功能。有两种代理方式:JDK动态代理和CGLIB代理。...
这样,我们就可以在不修改业务代码的情况下,添加跨切面的功能,如日志记录、事务管理等。 在实际应用中,我们可以创建一个名为`springExample`的项目,将上述概念付诸实践。在`springExample`项目中,我们可以创建...
在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点从核心业务逻辑中分离出来,例如日志记录、事务管理、性能监控等。本示例将深入探讨如何在Spring中实现AOP,特别是通过注解的方式。...
- `tx:advice` 和 `aop config` 配置通常是用于配置AOP(面向切面编程)的,但在使用`<tx:annotation-driven>`时,它们通常是不必要的,因为该元素本身就包含了处理事务切面的功能。所以,我们可以将这些配置注释掉...
1. **Spring 3.0.5**: 这是Spring框架的一个较早版本,它包含了大量的核心特性,如依赖注入、AOP(面向切面编程)、事务管理等。在3.0版本中,Spring引入了更多的模块化,使得开发者可以选择性地引入所需模块,降低...
总结来说,AspectJ的切面优化线程切换是一种有效的编程实践,它利用注解驱动的AOP技术减少了代码的冗余,增强了代码的结构和可维护性。通过定义切面和自定义注解,我们可以将复杂的线程管理逻辑封装起来,让代码更加...
5. AOP(面向切面编程):Spring的AOP模块允许我们在不修改代码的情况下,对程序进行横切关注点的处理,如日志、事务管理等。`@Aspect`、`@Before`、`@After`等注解用于定义切面和通知。 6. 声明式事务:在Spring中...
与编程式事务(即手动编写事务管理代码)不同,声明式事务是通过AOP(面向切面编程)实现的,它将事务管理逻辑与业务逻辑分离,使得事务管理更加灵活且易于维护。 在Spring中,我们可以使用XML配置文件来声明事务,...
2. **注解驱动的事务管理** Spring框架支持基于注解的事务管理,这使得在方法级别声明事务边界变得非常简单。主要使用的注解有`@Transactional`,它可以应用到方法或类上,表示该方法或类的所有方法都在一个事务内...
2. 注解配置:在切面类上使用`@Aspect`,在方法上使用通知注解(如`@Before`、`@After`等),并开启Spring的注解驱动AOP支持。 3. 自动代理:Spring可以自动检测并创建代理,无需显式配置。 使用AOP时,需要注意的...
Spring注解驱动是Spring框架中的一个重要特性,它极大地简化了Java应用的配置,使得开发者能够通过在类或方法上添加注解来声明依赖关系和服务行为。这种“注解驱动”的方式,让代码更加简洁,降低了XML配置的复杂性...
例如,如果你使用的是Hibernate,还需要在配置文件中启用注解驱动的事务管理,如下: ```xml ``` 这里的`transactionManager`是之前提到的PlatformTransactionManager的bean名称。 此外,Spring还提供了一种基于...
**Spring框架** 是一个全面的企业级应用开发框架,包括依赖注入(DI)、面向切面编程(AOP)和许多其他功能。Spring的注解驱动能力极大地简化了配置。例如,`@Autowired`注解用于自动装配bean,`@Service`和`@...
Spring的`<tx:annotation-driven>`标签启用注解驱动的事务管理,使`@Transactional`生效。Struts2的配置文件需要指定Action类及其结果映射,而Mybatis3的配置则包括数据源、SqlSessionFactory和Mapper扫描。 在业务...
为了配置AOP,我们需要在Spring配置文件中声明切面和通知,或者使用注解驱动的方式。例如,我们可以创建一个带有切点注解的切面类,并在其中定义通知方法: ```java @Aspect @Component public class LoggingAspect...
面向切面编程(AOP)是Java开发中的一个重要概念,它是对传统面向对象编程(OOP)的一种补充,尤其在处理系统级服务如事务管理时非常有用。在Spring框架中,AOP提供了声明式服务,使得开发者无需在业务逻辑代码中...
1. **注解驱动的AOP**:使用`@Aspect`定义切面,`@Before`、`@After`、`@Around`等注解定义通知,以及`@Pointcut`定义切入点。 2. **XML配置的AOP**:在Spring的配置文件中定义切面、通知和切入点。 3. **基于...
它通过提供一套完整的解决方案,帮助开发者进行分层开发,包括控制反转(IoC)、面向切面编程(AOP)等。而MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC...
- **注解驱动**:使用`@Aspect`定义切面,`@Before`, `@After`, `@Around`, `@AfterReturning`, `@AfterThrowing`定义不同类型的通知。 3. **依赖注入(Dependency Injection, DI)** - **DI原则**:将对象间的...
Spring注解驱动之AOP功能测试 Spring框架提供了一个强大的功能,即Aspect-Oriented Programming(面向方面编程),也就是AOP。AOP是一种编程范式,它提供了一种将横切关注点模块化的方法,例如日志记录、安全检查...