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压栈的方式遍历无限级别数 ...
随机推荐
- js中Math.round、parseInt、Math.floor和Math.ceil小数取整小结【转】
[摘要:之前常常正在代码中看到Math.round.parseInt.Math.floor战Math.ceil那四个函数,固然晓得效果皆能够返回一个整数,然则对他们四者的差别照样没有太清晰,本日便做一 ...
- ospf动态路由配置(单区域)
命令: Router(config-router)#network 目标网络号 反子网掩码 area 区域号 示例: Router(config-router)#network 10.2.2.0 0. ...
- OpenFileDialog 打开文件
OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "选择导入的文件"; ofd.FilterIndex = 1; ofd ...
- 激活JetBrains的IDE(PhpStorm、WebStorm、IntelliJ IDEA)
JetBrains 授权服务器(License Server URL): http://idea.imsxm.com/ 转自: http://www.imsxm.com/jetbrains-licen ...
- jackson2.1.4 序列化 通过给定Class映射 与抽象类的映射
//如果已知想要序列化的类型 可以使用TypeReference来进行处理 //List<MyBean> result = mapper.readValue(src, new TypeRe ...
- python将数据写入mysql乱码的解决办法
1.错误为:插入乱码 报错: Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8 解决: 写入数据语句为: cnn ...
- 关于C++输出中文乱码的解决方案
把页面编码转换为UTP-8的编码 1.打开G:\vs2013way\VC\vcprojectitems目录 在 file.h newc++file.cpp 中写两句话 #pragma once#pra ...
- 【转】IIS日志-网站运维的好帮手
对于一个需要长期维护的网站来说,如何让网站长久稳定运行是件很有意义的事情. 有些在开发阶段没有暴露的问题很有可能就在运维阶段出现了,这也是很正常的. 还有些时候,我们希望不断地优化网站,让网站更快速的 ...
- Eclipse最经常使用快捷键总结
1. ctrl+shift+r:打开资源 这可能是全部快捷键组合中最省时间的了. 这组快捷键能够让你打开你的工作区中不论什么一个文件,而你仅仅须要按下文件名称或mask名中的前几个字母,比方appl ...
- HDU 1556 Color the ball 树状数组 题解
Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"牌电动 ...