655438aace347b0b0ecbc22238be95d1fc96891f.svn-base 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package com.chinacreator.process.service;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Calendar;
  4. import java.util.Date;
  5. import java.util.List;
  6. import org.apache.commons.lang.StringUtils;
  7. import org.apache.commons.lang.math.NumberUtils;
  8. import org.apache.commons.lang.time.DateFormatUtils;
  9. import org.apache.log4j.Logger;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Component;
  12. import com.chinacreator.common.exception.BusinessException;
  13. import com.chinacreator.process.bean.NetOrderBean;
  14. import com.chinacreator.process.bean.OrderBean;
  15. import com.chinacreator.process.dao.FhGoodsHandleDao;
  16. /**
  17. * 复合产品处理流程
  18. * @author xu.zhou
  19. * @date 20190312
  20. */
  21. @Component
  22. public class FhGoodsHandleService {
  23. private Logger logger = Logger.getLogger(FhGoodsHandleService.class);
  24. @Autowired
  25. private FhGoodsHandleDao fhGoodsHandelDao;
  26. public void handle(OrderBean orderBean) throws Exception {
  27. //System.out.println("查询条件:"+orderBean.getUserid()+">>>"+orderBean.getCpid()+">>>"+orderBean.getSpid()+">>>"+orderBean.getActiveType()+">>>"+orderBean.getFhcpid()+">>>"+orderBean.getFhspid());
  28. if(orderBean.getOrderType().equals("0")) {//订购
  29. order(orderBean);
  30. }else{//退订
  31. cancel(orderBean);
  32. }
  33. }
  34. /**
  35. * 订购处理
  36. * @param orderBean
  37. * @throws Exception
  38. */
  39. private void order(OrderBean orderBean) throws Exception {
  40. OrderBean oldOrderBean = fhGoodsHandelDao.existUserByFh(orderBean.getUserid(), orderBean.getCpid(),
  41. orderBean.getSpid(),orderBean.getActiveType()+"", orderBean.getFhcpid(), orderBean.getFhspid());
  42. //活动表无数据
  43. if (oldOrderBean == null){
  44. orderBean.setFlowstatus("8");//流量赠送状态 : 8、不处理
  45. orderBean.setVipstatus("2");//腾讯会员赠送状态 :2未赠送
  46. setVipConflag(orderBean,oldOrderBean);
  47. fhGoodsHandelDao.insertBeans(orderBean);
  48. //已退订
  49. } else if (oldOrderBean.getCanceltime() != null && !"".equals(oldOrderBean.getCanceltime().trim())){
  50. OrderBean vipOrderBean = getVipInfo(oldOrderBean);
  51. orderBean.setVipstatus(vipOrderBean.getVipstatus());
  52. orderBean.setViptime(vipOrderBean.getViptime());
  53. orderBean.setId(oldOrderBean.getId());
  54. setVipConflag(orderBean,oldOrderBean);
  55. fhGoodsHandelDao.UpdateOrder(orderBean);
  56. }else{
  57. //已是订购状态,暂时不做处理
  58. logger.info("订购处理:已是订购状态,暂时不做处理");
  59. }
  60. }
  61. /**
  62. * 退购处理
  63. * @param orderBean
  64. * @throws Exception
  65. */
  66. private void cancel(OrderBean orderBean) throws Exception {
  67. OrderBean oldOrderBean = fhGoodsHandelDao.existUserByFh(orderBean.getUserid(), orderBean.getCpid(),
  68. orderBean.getSpid(),orderBean.getActiveType()+"", orderBean.getFhcpid(), orderBean.getFhspid());
  69. //活动表无数据
  70. if (oldOrderBean == null){
  71. orderBean.setFlowstatus("8");//流量赠送状态 : 8、不处理
  72. orderBean.setVipstatus("2");//腾讯会员赠送状态 :2未赠送
  73. setVipConflag(orderBean,oldOrderBean);
  74. setOrderTime(orderBean); //设置订购时间及订购渠道
  75. fhGoodsHandelDao.insertBeans(orderBean);
  76. //无数据,暂时不做处理
  77. //logger.info("退订处理:无数据,暂时不做处理");
  78. //已退订
  79. } else {
  80. OrderBean vipOrderBean = getVipInfo(oldOrderBean);
  81. orderBean.setVipstatus(vipOrderBean.getVipstatus());
  82. orderBean.setViptime(vipOrderBean.getViptime());
  83. orderBean.setId(oldOrderBean.getId());
  84. setVipConflag(orderBean,oldOrderBean);
  85. fhGoodsHandelDao.cancelOrder(orderBean);
  86. }
  87. }
  88. /**
  89. * 获取VIP赠送信息
  90. * @param activityOrderBean
  91. * @return
  92. * @throws BusinessException
  93. */
  94. public OrderBean getVipInfo(OrderBean activityOrderBean) throws BusinessException{
  95. OrderBean orderBean = new OrderBean();
  96. String vipstatus=activityOrderBean.getVipstatus();
  97. String viptime = activityOrderBean.getViptime();
  98. if(StringUtils.isEmpty(viptime)){
  99. vipstatus = activityOrderBean.getVipstatus();
  100. viptime = activityOrderBean.getViptime();
  101. }else{
  102. //领取会员时间是当月
  103. if(NumberUtils.toLong(viptime.substring(0, 6)) ==NumberUtils.toLong(DateFormatUtils.format(new Date(), "yyyyMM"))){
  104. //续送会员是当月
  105. if(activityOrderBean.getVipcontime() != null && NumberUtils.toLong(activityOrderBean.getVipcontime().substring(0, 6)) == NumberUtils.toLong(DateFormatUtils.format(new Date(), "yyyyMM"))){
  106. vipstatus ="0";//赠送状态 : 0 成功(当月已赠送)
  107. viptime = activityOrderBean.getVipcontime();
  108. }else{
  109. vipstatus = activityOrderBean.getVipstatus();
  110. viptime = activityOrderBean.getViptime();
  111. }
  112. //领取会员时间不是当月
  113. }else if(NumberUtils.toLong(viptime.substring(0, 6)) < NumberUtils.toLong(DateFormatUtils.format(new Date(), "yyyyMM"))){
  114. //续送会员时间是当月
  115. if(activityOrderBean.getVipcontime() != null && NumberUtils.toLong(activityOrderBean.getVipcontime().substring(0, 6)) == NumberUtils.toLong(DateFormatUtils.format(new Date(), "yyyyMM"))){
  116. vipstatus = activityOrderBean.getVipstatus();
  117. viptime = activityOrderBean.getViptime();
  118. }else{
  119. vipstatus ="2";//赠送状态 0 成功 1失败 2未赠送
  120. viptime ="";
  121. }
  122. }else{
  123. //throw new BusinessException("8010", "viptime数据异常");
  124. logger.error("viptime数据异常");
  125. }
  126. }
  127. orderBean.setVipstatus(vipstatus);
  128. orderBean.setViptime(viptime);
  129. return orderBean;
  130. }
  131. /**
  132. * 设定VIPCONFLAG
  133. */
  134. private void setVipConflag(OrderBean orderBean, OrderBean activityOrderBean){
  135. String cancelMonth = ""; //退订月份
  136. String orderMonth = ""; //订购月份
  137. if(activityOrderBean != null && activityOrderBean.getVipconflag() != null){
  138. orderBean.setVipconflag(activityOrderBean.getVipconflag());
  139. if(activityOrderBean.getCanceltime() != null && !"".equals(activityOrderBean.getCanceltime().trim()) && activityOrderBean.getCanceltime().trim().length() >= 6){
  140. cancelMonth = activityOrderBean.getCanceltime().trim().substring(0, 6);
  141. }
  142. }else{
  143. orderBean.setVipconflag("");
  144. }
  145. //复合产品要设置vipconflag
  146. if("0".equals(orderBean.getOrderstatus())
  147. && orderBean.getFhcpid() != null && !"".equals(orderBean.getFhcpid())
  148. && orderBean.getFhspid() != null && !"".equals(orderBean.getFhspid())){
  149. if(orderBean.getOrdertime() != null && !"".equals(orderBean.getOrdertime().trim()) && orderBean.getOrdertime().trim().length() >= 6){
  150. orderMonth = orderBean.getOrdertime().trim().substring(0, 6);
  151. }
  152. //当前是订购状态,且订购月份与退订月份不相同
  153. if(!"".equals(orderMonth) && !"".equals(cancelMonth) && !orderMonth.equals(cancelMonth)){ //订购
  154. orderBean.setVipconflag(""); //续送会员标识,0送,其他不送
  155. }
  156. }
  157. }
  158. private void setOrderTime(OrderBean orderBean)throws Exception{
  159. //获取订购关系表中所有数据
  160. List<NetOrderBean> list = fhGoodsHandelDao.findOrder(orderBean.getFhcpid(), orderBean.getUserid(),orderBean.getFhspid());
  161. if(list != null && list.size()>0){
  162. NetOrderBean noBean = list.get(0);
  163. orderBean.setOrdertime(noBean.getOrdertimestr());
  164. orderBean.setOrderchannel(noBean.getOrderchannel());
  165. SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
  166. Calendar ca = Calendar.getInstance();
  167. //设置最后一天
  168. ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
  169. //最后一天格式化
  170. String lastDay = format.format(ca.getTime());
  171. orderBean.setEndtime(lastDay+"235959");
  172. }
  173. }
  174. }