mybatis 循环遍历
/****Service/
public ServiceMessage<MemberFreedomRepModel> getMFListByPay(Long memberId,Long freedomType,Long paymentId,BigDecimal money) {
try { if(memberId==null || memberId==0){ return super.returnParamsError("memberId不能为空!"); } if(freedomType==null || freedomType==0){ return super.returnParamsError("freedomType不能为空!"); } if(paymentId==null || paymentId==0){ return super.returnParamsError("paymentId不能为空!"); } if(money.compareTo(BigDecimal.ZERO) <= 0){ return super.returnParamsError("充值金额不能为空!"); } if(!freedomType.equals(MemberRankType.chongzhijiangli.getType())){ return super.returnParamsError("此接口只提供给"+MemberRankType.chongzhijiangli.getTypeName()+"使用!"); } //先查询会员的角色 MemberRoleConnRepModel mm = new MemberRoleConnRepModel(); mm.setMemberId(memberId); ServiceMessage<List<MemberRoleConnRepModel>> msgRes = memberRoleConnRepModelService.queryByList(mm); if(!msgRes.getStatus().equals(MsgStatus.NORMAL) || msgRes.getResult()==null || msgRes.getResult().size()==0){ MemberRoleConnRepModel memberRoleConnRepModel = new MemberRoleConnRepModel(); memberRoleConnRepModel.setMemberId(memberId); memberRoleConnRepModelService.saveInitMemberRole(memberRoleConnRepModel); msgRes = memberRoleConnRepModelService.queryByList(mm); } List<Long> roleIds = new ArrayList<Long>(); List<Long> rankIds = new ArrayList<Long>(); for(MemberRoleConnRepModel me : msgRes.getResult()){ roleIds.add(me.getRoleId()); rankIds.add(me.getRankId()); } if(roleIds==null || roleIds.size() ==0 || rankIds==null || rankIds.size() ==0 ){ return super.returnParamsError("此会员没有角色!"); } MemberFreedomRepModel memberFreedom = new MemberFreedomRepModel(); memberFreedom.setRankIds(rankIds); memberFreedom.setRoleIds(roleIds); memberFreedom.setMemberId(memberId); memberFreedom.setFreedomType(freedomType); memberFreedom.setPaymentTypeId(paymentId); memberFreedom.setNoTime(DateUtils.getCurrentDateString()); List<MemberFreedomRepModel> list = super.memberFreedomRepMapper.getMFListByPay(memberFreedom) ; if(list==null || list.size() ==0 ){ return super.returnCorrectResult("此会员暂无充值特权!"); } MemberFreedomRepModel me = list.get(0);; //充值奖励 维护的数据是这样的 100:2,200:20 如果是 冲 300 则是 2 + 20 List<String> ruleList = new ArrayList<String>(); for(String str : me.getValue().split(",")){ ruleList.add(str); } BigDecimal ps = paySend(money,ruleList); me.setPaySend(ps); //查询各特权使用记录 MemberRankFreedomLogRepModel memberRankFreedomLogRep =new MemberRankFreedomLogRepModel(); memberRankFreedomLogRep.setMemberId(me.getMemberId()); memberRankFreedomLogRep.setRoleId(me.getRoleId()); memberRankFreedomLogRep.setFreedomId(me.getFreedomId()); if(me.getTimeRang().equals("rang")){ memberRankFreedomLogRep.setOverTime(me.getEndTime()); } HashMap ma = memberRankFreedomLogRepModelService.sumUserLog( memberRankFreedomLogRep); if(ma!=null){ logger.debug(ma.get("use_num")+"=============="+ma.get("money")); //如果超过 判断是周期/限制使用次数 /限制优惠金额 则此特权无效 if( (me.getUseNum() > 0 && Double.valueOf(ma.get("use_num").toString()) >= me.getUseNum()) || (me.getMemberQuota()!=null && me.getMemberQuota().compareTo(BigDecimal.valueOf(Double.valueOf(ma.get("money").toString()))) <= 0 )){ return super.returnCorrectResult("查询会员的特权列表成功!"); }else{ me.setMemberQuota(BigDecimal.valueOf(Double.valueOf(ma.get("use_num")==null || ma.get("use_num").equals("")?"0":ma.get("use_num").toString()))); me.setMemberUseNum(BigDecimal.valueOf(Double.valueOf(ma.get("money")==null || ma.get("money").equals("")?"0":ma.get("money").toString()))); } } return super.returnCorrectResult("查询会员的特权列表成功!",me); } catch (Exception e) { logger.error(e.getMessage(), e); return super.returnException("查询会员的特权列表失败!"); } }}
<!-- sql --> <select id="getMFListByPay" resultMap="getMemberFreedomListMap" parameterType="MemberFreedomRepModel"> select cc.*,dd.* from (select cc.rank_id,cc.freedom_id,cc.time_rang,cc.begin_time,cc.end_time,cc.long_day,cc.get_time ,rr.role_id from member_rank_freedom_conn cc join (select role_id,rank_id from member_role_conn rr where rr.is_delete ='N' and rr.role_id in <foreach collection="roleIds" open="(" close=")" item="id" separator=","> #{id} </foreach> and member_id = #{memberId} ) rr on cc.rank_id = rr.rank_id where cc.is_delete ='N' and (cc.time_rang = 'all' or (cc.time_rang='rang' and cc.begin_time <= #{noTime} and #{noTime} <=end_time ) ) ) cc join (select ff.* from ( select f2.* from member_freedom f2 where f2.is_delete = 'N' and f2.freedom_type = #{freedomType} ) ff join ( (select max(ff.level) level,ff.freedom_type from member_freedom ff where ff.is_delete = 'N' and ff.freedom_type = #{freedomType} and ff.payment_type_id =#{paymentTypeId} and ff.id in (select cc.freedom_id from member_rank_freedom_conn cc where cc.rank_id in <foreach collection="rankIds" open="(" close=")" item="id" separator=","> #{id} </foreach> and cc.is_delete ='N' and (cc.time_rang = 'all' or (cc.time_rang='rang' and cc.begin_time <= #{noTime} and #{noTime}<=end_time ) ) ) group by ff.freedom_type) ) d1 on ff.freedom_type= d1.freedom_type and ff.level = d1.level ) dd on cc.freedom_id = dd.id </select>
//Mapper层 public List<MemberFreedomRepModel> getMFListByPay(MemberFreedomRepModel memberFreedomRepModel);
//model package com.j1.member.mysql.model; import java.math.BigDecimal; import java.text.Bidi; import java.util.List; import com.j1.member.mysql.entities.MemberFreedomRep; /** * * 特权明细 扩展类 * */ @SuppressWarnings("serial") public class MemberFreedomRepModel extends MemberFreedomRep { private List<Long> roleIds; private List<Long> rankIds; private String noTime; /** 特权ID **/ private Long freedomId; /** 有效时间限制(all/rang) **/ private String timeRang; /** 有效开始时间 **/ private String beginTime; /** 有效结束时间 **/ private String endTime; /** 持续时长(天) **/ private Long longDay; /** 获得时间 **/ private String getTime; /** 等级ID **/ private Long rankId; private String freedomTypeName; private Long roleId; private Long MemberId; private BigDecimal memberQuota; // 已使用限额 private BigDecimal memberUseNum; // 已使用次数 /** 冲值送的金额 */ private BigDecimal paySend = BigDecimal.ZERO; public BigDecimal getPaySend() { return paySend; } public void setPaySend(BigDecimal paySend) { this.paySend = paySend; } public Long getMemberId() { return MemberId; } public void setMemberId(Long memberId) { MemberId = memberId; } public BigDecimal getMemberQuota() { return memberQuota; } public void setMemberQuota(BigDecimal memberQuota) { this.memberQuota = memberQuota; } public BigDecimal getMemberUseNum() { return memberUseNum; } public void setMemberUseNum(BigDecimal memberUseNum) { this.memberUseNum = memberUseNum; } public List<Long> getRoleIds() { return roleIds; } public void setRoleIds(List<Long> roleIds) { this.roleIds = roleIds; } public Long getRoleId() { return roleId; } public void setRoleId(Long roleId) { this.roleId = roleId; } public Long getRankId() { return rankId; } public void setRankId(Long rankId) { this.rankId = rankId; } public Long getFreedomId() { return freedomId; } public void setFreedomId(Long freedomId) { this.freedomId = freedomId; } public String getTimeRang() { return timeRang; } public void setTimeRang(String timeRang) { this.timeRang = timeRang; } public String getBeginTime() { return beginTime; } public void setBeginTime(String beginTime) { this.beginTime = beginTime; } public String getEndTime() { return endTime; } public void setEndTime(String endTime) { this.endTime = endTime; } public Long getLongDay() { return longDay; } public void setLongDay(Long longDay) { this.longDay = longDay; } public String getGetTime() { return getTime; } public void setGetTime(String getTime) { this.getTime = getTime; } public List<Long> getRankIds() { return rankIds; } public void setRankIds(List<Long> rankIds) { this.rankIds = rankIds; } public String getNoTime() { return noTime; } public void setNoTime(String noTime) { this.noTime = noTime; } public String getFreedomTypeName() { return freedomTypeName; } public void setFreedomTypeName(String freedomTypeName) { this.freedomTypeName = freedomTypeName; } }
//测试 @Test public void test11() { MemberService service = J1SOAHessianHelper.getService(url, MemberService.class); MemberModel mm = new MemberModel(); List<Integer> list = new ArrayList<Integer>(); list.add(1851); list.add(1852); list.add(2649); mm.setMemberIdList(list); ServiceMessage<List<Member>> result = service.getMemberNameList(mm); System.out.println(JSON.toJSONString(result)); }
mybatis 循环遍历的更多相关文章
- mybatis问题。foreach循环遍历数组报错情况,及其解决方法
根据条件查询数据列表,mybatis查询代码如下 如果只查询属于特定部门拥有的数据权限.这需要用 String[ ] codes保存当前部门及其子部门的部门编码. 所以需要在mybatis中遍历编码数 ...
- To Java程序员:切勿用普通for循环遍历LinkedList
ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...
- *使用while循环遍历数组创建索引和自增索引值
package com.chongrui.test;/* *使用while循环遍历数组 * * * */public class test { public static void main ...
- 【转】ArrayList循环遍历并删除元素的常见陷阱
转自:https://my.oschina.net/u/2249714/blog/612753?p=1 在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出b ...
- sqlserver中的循环遍历(普通循环和游标循环)
sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student
- php中的循环遍历 foreach list each
foreach语句遍历数组foreach语句用于循环遍历数组,每进行一次循环,当前数组元素的值就会被赋值给变量value(也可以是其它变量),数组指针会逐一的移动. 代码示例: foreach($ar ...
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)
主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析
最新最准确内容建议直接访问原文:ArrayList和LinkedList的几种循环遍历方式及性能对比分析 主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性 ...
- php用压栈的方式,循环遍历无限级别的数组(非递归方法)
php用压栈的方式,循环遍历无限级别的数组(非递归方法) 好久不写非递归遍历无限级分类...瞎猫碰到死老鼠,发刚才写的1段代码,压栈的方式遍历php无限分类的数组... php压栈的方式遍历无限级别数 ...
随机推荐
- JAVA-JSP Scriptlets(JSP小脚本)
相关资料: <21天学通Java Web开发> 结果总结: 1.<% %>可以包含多个语句,如:方法.变量.表达式.2.类型定义时,如:int.String必须注意大小写. 实 ...
- C语言 · 阿尔法乘积
算法训练 阿尔法乘积 时间限制:1.0s 内存限制:512.0MB 问题描述 计算一个整数的阿尔法乘积.对于一个整数x来说,它的阿尔法乘积是这样来计算的:如果x是一个个位数,那么 ...
- contiki 无线测试 1个中心节点 13个从节点
1 DATA recv '25.00 degres' from 2423:7c02:5525:4f2b2 DATA recv '27.71 degres' from 24f7:af03:5525:4f ...
- java中静态方法的使用
JAVA中使用静态方法 编程时我们心里一定要清楚静态方法和类的非静态方法方法的区别: 最根本区别从编译角度来说吧: 1) 静态(static)方法是编译时直接加载加载到内存中(离cpu最近的一块内存区 ...
- Integer与int有什么区别?
Integer与int有什么区别? 由于面试的时候问到这个问题,所以就网上百度一下,发现一个大神说得非常好,非常清楚,所有就博文复制过来供“自己学习”.(这不是原文,原文底下有链接) ...
- 关于Cocos2d-x中多边形物理刚体的设置
1.如果想要设置某个物体有多边形的刚体,这样可以更精确地进行碰撞检测,可以用以下的方法 auto hero = PlaneHero::create(); addChild(hero, 0, HERO_ ...
- python中常用的内建模块
[datetime] datetime是python处理日期和时间的标准库 获取当前日期和时间 我们先看如何获取当前日期和时间: 注意到datetime是模块,datetime模块还包含一个datet ...
- e638. 向剪切板获取和粘贴图像
// If an image is on the system clipboard, this method returns it; // otherwise it returns null. pub ...
- C++ 程序可以定义为对象的集合
C++ 基本语法C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互.现在让我们简要地看一下什么是类.对象,方法.即时变量. 对象 - 对象具有状态和行为.例如:一只狗的状态 - 颜色 ...
- 【从0開始Tornado建站】整体设计
Tornado是一个非堵塞的webserver,也是python的web框架中很优秀的一款.网上关于django的tutorial许多并且具体,关于tornado的使用就很少了.我想以我从0開始的方式 ...