1. /****Service/
  1. public ServiceMessage<MemberFreedomRepModel> getMFListByPay(Long memberId,Long freedomType,Long paymentId,BigDecimal money) {
  1. try {
  2. if(memberId==null || memberId==0){
  3. return super.returnParamsError("memberId不能为空!");
  4. }
  5.  
  6. if(freedomType==null || freedomType==0){
  7. return super.returnParamsError("freedomType不能为空!");
  8. }
  9. if(paymentId==null || paymentId==0){
  10. return super.returnParamsError("paymentId不能为空!");
  11. }
  12. if(money.compareTo(BigDecimal.ZERO) <= 0){
  13. return super.returnParamsError("充值金额不能为空!");
  14. }
  15.  
  16. if(!freedomType.equals(MemberRankType.chongzhijiangli.getType())){
  17. return super.returnParamsError("此接口只提供给"+MemberRankType.chongzhijiangli.getTypeName()+"使用!");
  18. }
  19.  
  20. //先查询会员的角色
  21. MemberRoleConnRepModel mm = new MemberRoleConnRepModel();
  22. mm.setMemberId(memberId);
  23. ServiceMessage<List<MemberRoleConnRepModel>> msgRes = memberRoleConnRepModelService.queryByList(mm);
  24. if(!msgRes.getStatus().equals(MsgStatus.NORMAL) || msgRes.getResult()==null || msgRes.getResult().size()==0){
  25. MemberRoleConnRepModel memberRoleConnRepModel = new MemberRoleConnRepModel();
  26. memberRoleConnRepModel.setMemberId(memberId);
  27. memberRoleConnRepModelService.saveInitMemberRole(memberRoleConnRepModel);
  28.  
  29. msgRes = memberRoleConnRepModelService.queryByList(mm);
  30. }
  31. List<Long> roleIds = new ArrayList<Long>();
  32. List<Long> rankIds = new ArrayList<Long>();
  33. for(MemberRoleConnRepModel me : msgRes.getResult()){
  34. roleIds.add(me.getRoleId());
  35. rankIds.add(me.getRankId());
  36. }
  37. if(roleIds==null || roleIds.size() ==0 || rankIds==null || rankIds.size() ==0 ){
  38. return super.returnParamsError("此会员没有角色!");
  39. }
  40. MemberFreedomRepModel memberFreedom = new MemberFreedomRepModel();
  41. memberFreedom.setRankIds(rankIds);
  42. memberFreedom.setRoleIds(roleIds);
  43. memberFreedom.setMemberId(memberId);
  44. memberFreedom.setFreedomType(freedomType);
  45. memberFreedom.setPaymentTypeId(paymentId);
  46. memberFreedom.setNoTime(DateUtils.getCurrentDateString());
  47.  
  48. List<MemberFreedomRepModel> list = super.memberFreedomRepMapper.getMFListByPay(memberFreedom) ;
  49. if(list==null || list.size() ==0 ){
  50. return super.returnCorrectResult("此会员暂无充值特权!");
  51. }
  52.  
  53. MemberFreedomRepModel me = list.get(0);;
  54.  
  55. //充值奖励 维护的数据是这样的 100:2,200:20 如果是 冲 300 则是 2 + 20
  56. List<String> ruleList = new ArrayList<String>();
  57. for(String str : me.getValue().split(",")){
  58. ruleList.add(str);
  59. }
  60.  
  61. BigDecimal ps = paySend(money,ruleList);
  62. me.setPaySend(ps);
  63.  
  64. //查询各特权使用记录
  65. MemberRankFreedomLogRepModel memberRankFreedomLogRep =new MemberRankFreedomLogRepModel();
  66. memberRankFreedomLogRep.setMemberId(me.getMemberId());
  67. memberRankFreedomLogRep.setRoleId(me.getRoleId());
  68. memberRankFreedomLogRep.setFreedomId(me.getFreedomId());
  69. if(me.getTimeRang().equals("rang")){
  70. memberRankFreedomLogRep.setOverTime(me.getEndTime());
  71. }
  72. HashMap ma = memberRankFreedomLogRepModelService.sumUserLog( memberRankFreedomLogRep);
  73. if(ma!=null){
  74. logger.debug(ma.get("use_num")+"=============="+ma.get("money"));
  75. //如果超过 判断是周期/限制使用次数 /限制优惠金额 则此特权无效
  76. if( (me.getUseNum() > 0 && Double.valueOf(ma.get("use_num").toString()) >= me.getUseNum()) ||
  77. (me.getMemberQuota()!=null && me.getMemberQuota().compareTo(BigDecimal.valueOf(Double.valueOf(ma.get("money").toString()))) <= 0 )){
  78.  
  79. return super.returnCorrectResult("查询会员的特权列表成功!");
  80. }else{
  81. me.setMemberQuota(BigDecimal.valueOf(Double.valueOf(ma.get("use_num")==null || ma.get("use_num").equals("")?"0":ma.get("use_num").toString())));
  82. me.setMemberUseNum(BigDecimal.valueOf(Double.valueOf(ma.get("money")==null || ma.get("money").equals("")?"0":ma.get("money").toString())));
  83. }
  84. }
  85. return super.returnCorrectResult("查询会员的特权列表成功!",me);
  86. } catch (Exception e) {
  87. logger.error(e.getMessage(), e);
  88. return super.returnException("查询会员的特权列表失败!");
  89. }
  90. }}
  1. <!-- sql -->
  2. <select id="getMFListByPay" resultMap="getMemberFreedomListMap" parameterType="MemberFreedomRepModel">
  3. select cc.*,dd.* from
  4. (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
  5. from member_rank_freedom_conn cc join
  6. (select role_id,rank_id from member_role_conn rr where rr.is_delete ='N'
  7. and rr.role_id in
  8. <foreach collection="roleIds" open="(" close=")" item="id" separator=",">
  9. #{id}
  10. </foreach>
  11. and member_id = #{memberId} ) rr on cc.rank_id = rr.rank_id
  12. where cc.is_delete ='N' and (cc.time_rang = 'all' or
  13. (cc.time_rang='rang' and cc.begin_time &lt;= #{noTime} and #{noTime} &lt;=end_time ) ) ) cc
  14.  
  15. join
  16.  
  17. (select ff.* from (
  18. select f2.*
  19. from member_freedom f2
  20. where f2.is_delete = 'N' and f2.freedom_type = #{freedomType}
  21. ) ff join (
  22. (select max(ff.level) level,ff.freedom_type from member_freedom ff
  23. where ff.is_delete = 'N' and ff.freedom_type = #{freedomType} and ff.payment_type_id =#{paymentTypeId} and ff.id in
  24. (select cc.freedom_id from member_rank_freedom_conn cc
  25. where cc.rank_id in
  26. <foreach collection="rankIds" open="(" close=")" item="id" separator=",">
  27. #{id}
  28. </foreach>
  29. and cc.is_delete ='N' and (cc.time_rang = 'all' or
  30. (cc.time_rang='rang' and cc.begin_time &lt;= #{noTime} and #{noTime}&lt;=end_time ) ) )
  31. group by ff.freedom_type) ) d1 on ff.freedom_type= d1.freedom_type and ff.level = d1.level
  32. ) dd on cc.freedom_id = dd.id
  33.  
  34. </select>
  1. //Mapper层
  2. public List<MemberFreedomRepModel> getMFListByPay(MemberFreedomRepModel memberFreedomRepModel);
  1. //model
  2.  
  3. package com.j1.member.mysql.model;
  4.  
  5. import java.math.BigDecimal;
  6. import java.text.Bidi;
  7. import java.util.List;
  8.  
  9. import com.j1.member.mysql.entities.MemberFreedomRep;
  10.  
  11. /**
  12. *
  13. * 特权明细 扩展类
  14. *
  15. */
  16.  
  17. @SuppressWarnings("serial")
  18. public class MemberFreedomRepModel extends MemberFreedomRep {
  19.  
  20. private List<Long> roleIds;
  21. private List<Long> rankIds;
  22. private String noTime;
  23.  
  24. /** 特权ID **/
  25. private Long freedomId;
  26.  
  27. /** 有效时间限制(all/rang) **/
  28. private String timeRang;
  29.  
  30. /** 有效开始时间 **/
  31. private String beginTime;
  32.  
  33. /** 有效结束时间 **/
  34. private String endTime;
  35.  
  36. /** 持续时长(天) **/
  37. private Long longDay;
  38. /** 获得时间 **/
  39. private String getTime;
  40. /** 等级ID **/
  41. private Long rankId;
  42.  
  43. private String freedomTypeName;
  44.  
  45. private Long roleId;
  46. private Long MemberId;
  47. private BigDecimal memberQuota; // 已使用限额
  48. private BigDecimal memberUseNum; // 已使用次数
  49. /** 冲值送的金额 */
  50. private BigDecimal paySend = BigDecimal.ZERO;
  51.  
  52. public BigDecimal getPaySend() {
  53. return paySend;
  54. }
  55.  
  56. public void setPaySend(BigDecimal paySend) {
  57. this.paySend = paySend;
  58. }
  59.  
  60. public Long getMemberId() {
  61. return MemberId;
  62. }
  63.  
  64. public void setMemberId(Long memberId) {
  65. MemberId = memberId;
  66. }
  67.  
  68. public BigDecimal getMemberQuota() {
  69. return memberQuota;
  70. }
  71.  
  72. public void setMemberQuota(BigDecimal memberQuota) {
  73. this.memberQuota = memberQuota;
  74. }
  75.  
  76. public BigDecimal getMemberUseNum() {
  77. return memberUseNum;
  78. }
  79.  
  80. public void setMemberUseNum(BigDecimal memberUseNum) {
  81. this.memberUseNum = memberUseNum;
  82. }
  83.  
  84. public List<Long> getRoleIds() {
  85. return roleIds;
  86. }
  87.  
  88. public void setRoleIds(List<Long> roleIds) {
  89. this.roleIds = roleIds;
  90. }
  91.  
  92. public Long getRoleId() {
  93. return roleId;
  94. }
  95.  
  96. public void setRoleId(Long roleId) {
  97. this.roleId = roleId;
  98. }
  99.  
  100. public Long getRankId() {
  101. return rankId;
  102. }
  103.  
  104. public void setRankId(Long rankId) {
  105. this.rankId = rankId;
  106. }
  107.  
  108. public Long getFreedomId() {
  109. return freedomId;
  110. }
  111.  
  112. public void setFreedomId(Long freedomId) {
  113. this.freedomId = freedomId;
  114. }
  115.  
  116. public String getTimeRang() {
  117. return timeRang;
  118. }
  119.  
  120. public void setTimeRang(String timeRang) {
  121. this.timeRang = timeRang;
  122. }
  123.  
  124. public String getBeginTime() {
  125. return beginTime;
  126. }
  127.  
  128. public void setBeginTime(String beginTime) {
  129. this.beginTime = beginTime;
  130. }
  131.  
  132. public String getEndTime() {
  133. return endTime;
  134. }
  135.  
  136. public void setEndTime(String endTime) {
  137. this.endTime = endTime;
  138. }
  139.  
  140. public Long getLongDay() {
  141. return longDay;
  142. }
  143.  
  144. public void setLongDay(Long longDay) {
  145. this.longDay = longDay;
  146. }
  147.  
  148. public String getGetTime() {
  149. return getTime;
  150. }
  151.  
  152. public void setGetTime(String getTime) {
  153. this.getTime = getTime;
  154. }
  155.  
  156. public List<Long> getRankIds() {
  157. return rankIds;
  158. }
  159.  
  160. public void setRankIds(List<Long> rankIds) {
  161. this.rankIds = rankIds;
  162. }
  163.  
  164. public String getNoTime() {
  165. return noTime;
  166. }
  167.  
  168. public void setNoTime(String noTime) {
  169. this.noTime = noTime;
  170. }
  171.  
  172. public String getFreedomTypeName() {
  173. return freedomTypeName;
  174. }
  175.  
  176. public void setFreedomTypeName(String freedomTypeName) {
  177. this.freedomTypeName = freedomTypeName;
  178. }
  179.  
  180. }
  1. //测试 @Test
  2. public void test11() {
  3. MemberService service = J1SOAHessianHelper.getService(url, MemberService.class);
  4.  
  5. MemberModel mm = new MemberModel();
  6. List<Integer> list = new ArrayList<Integer>();
  7. list.add(1851);
  8. list.add(1852);
  9. list.add(2649);
  10. mm.setMemberIdList(list);
  11. ServiceMessage<List<Member>> result = service.getMemberNameList(mm);
  12. System.out.println(JSON.toJSONString(result));
  13. }

mybatis 循环遍历的更多相关文章

  1. mybatis问题。foreach循环遍历数组报错情况,及其解决方法

    根据条件查询数据列表,mybatis查询代码如下 如果只查询属于特定部门拥有的数据权限.这需要用 String[ ] codes保存当前部门及其子部门的部门编码. 所以需要在mybatis中遍历编码数 ...

  2. To Java程序员:切勿用普通for循环遍历LinkedList

    ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...

  3. *使用while循环遍历数组创建索引和自增索引值

    package com.chongrui.test;/* *使用while循环遍历数组 *  *  * */public class test {    public static void main ...

  4. 【转】ArrayList循环遍历并删除元素的常见陷阱

    转自:https://my.oschina.net/u/2249714/blog/612753?p=1 在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出b ...

  5. sqlserver中的循环遍历(普通循环和游标循环)

    sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student

  6. php中的循环遍历 foreach list each

    foreach语句遍历数组foreach语句用于循环遍历数组,每进行一次循环,当前数组元素的值就会被赋值给变量value(也可以是其它变量),数组指针会逐一的移动. 代码示例: foreach($ar ...

  7. ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)

    主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...

  8. ArrayList和LinkedList的几种循环遍历方式及性能对比分析

    最新最准确内容建议直接访问原文:ArrayList和LinkedList的几种循环遍历方式及性能对比分析 主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性 ...

  9. php用压栈的方式,循环遍历无限级别的数组(非递归方法)

    php用压栈的方式,循环遍历无限级别的数组(非递归方法) 好久不写非递归遍历无限级分类...瞎猫碰到死老鼠,发刚才写的1段代码,压栈的方式遍历php无限分类的数组... php压栈的方式遍历无限级别数 ...

随机推荐

  1. SharePoint自动化系列——通过PowerShell创建SharePoint Lists

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 代码如下(保存到本地ps1文件中,右键run with PowerShell即可): Add-PS ...

  2. Spring事件监听Demo

    Spring事件监听实现了观察者模式.本Demo在junit4测试环境中实现 主要有三个类事件类.监听器类.事件发布类(入口) 事件类必须继承 ApplicationEvent,代码如下: impor ...

  3. java资料——线程(转)

    线程       线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元.一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成.另外,线程 ...

  4. Hive中order by,sort by,distribute by,cluster by的区别

    一:order by order by会对输入做全局排序,因此只有一个Reducer(多个Reducer无法保证全局有序),然而只有一个Reducer,会导致当输入规模较大时,消耗较长的计算时间.关于 ...

  5. zoj3228 Searching the String AC自动机查询目标串中模式串出现次数(分可覆盖,不可覆盖两种情况)

    /** 题目:zoj3228 Searching the String 链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=34 ...

  6. ddddddd

    尊敬的老师们: 我在各方面表现优异.在学习方面,始终将学习放在首位,学习成绩名列前茅,在以往考试中从没有挂科记录,并积极参加校内.校外比赛,且多次获奖:在思想方面,积极向党组织靠拢,一直以一名优秀党员 ...

  7. mac for appium环境安装

    之前写过windows 安装appium环境步骤. 1. 需求的前置条件如下 (mac 自动git.ruby.brew命令): 2. java  环境 3. git 环境 4. ruby环境 5. b ...

  8. 【转】C#调用WebService实例和开发

    一.基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是 ...

  9. activiti小结

    前提:业务流程复杂且流程频繁变更的,建议使用工作流:其他情况不建议使用. activiti(v5.14),工作流引擎,基于jbpm.使用建模语言BPMN2.0进行定义. 工作流数据需要写入数据库,ac ...

  10. 在GIT中创建一个空分支

    ref:  https://segmentfault.com/a/1190000004931751