ActivityServiceImpl.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package com.iamberry.wechat.service.activity;
  2. import com.iamberry.app.tool.log.RatFWLogger;
  3. import com.iamberry.wechat.core.entity.activity.Activity;
  4. import com.iamberry.wechat.core.entity.activity.ActivityHelp;
  5. import com.iamberry.wechat.core.entity.coupon.CouponItem;
  6. import com.iamberry.wechat.core.entity.member.Member;
  7. import com.iamberry.wechat.face.activity.ActivityService;
  8. import com.iamberry.wechat.face.coupon.CouponItemService;
  9. import com.iamberry.wechat.service.mapper.ActivityHelpMapper;
  10. import com.iamberry.wechat.service.mapper.ActivityMapper;
  11. import com.iamberry.wechat.service.mapper.CouponItemMapper;
  12. import com.iamberry.wechat.service.mapper.MemberMapper;
  13. import com.iamberry.wechat.tools.ResultInfo;
  14. import com.iamberry.wechat.tools.SendMessageUtil;
  15. import com.iamberry.wechat.tools.StrUtils;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import java.util.Calendar;
  20. import java.util.Date;
  21. import java.util.List;
  22. /**
  23. * 活动助力参与接口
  24. * @author w
  25. * @Date 2018-06-07
  26. */
  27. @Service
  28. public class ActivityServiceImpl implements ActivityService {
  29. @Autowired
  30. private ActivityMapper activityMapper;
  31. @Autowired
  32. private ActivityHelpMapper activityHelpMapper;
  33. @Autowired
  34. private CouponItemMapper couponItemMapper;
  35. @Autowired
  36. private SendMessageUtil sendMessageUtil;
  37. @Autowired
  38. private RatFWLogger logger;
  39. @Autowired
  40. private MemberMapper memberMapper;
  41. /**
  42. * 获取集合
  43. * @param activity
  44. * @return List
  45. */
  46. @Override
  47. public List<Activity> getActivityList(Activity activity){
  48. return activityMapper.getActivityList(activity);
  49. }
  50. /**
  51. * 查询单条数据
  52. * @param id
  53. * @return activity
  54. */
  55. @Override
  56. public Activity getActivityById(Integer id){
  57. return activityMapper.getActivityById(id);
  58. }
  59. @Override
  60. public Activity getActivityCouponId(String couponId) {
  61. return activityMapper.getActivityCouponId(couponId);
  62. }
  63. /**
  64. * 增加数据
  65. * @param activity
  66. * @return Integer
  67. */
  68. @Override
  69. public Integer save(Activity activity){
  70. return activityMapper.save(activity);
  71. }
  72. /**
  73. * 修改数据
  74. * @param activity
  75. * @return Integer
  76. */
  77. @Override
  78. @Transactional
  79. public Integer update(Activity activity){
  80. CouponItem couponItem = new CouponItem();
  81. couponItem.setCouponId(20000);
  82. Calendar calendar = Calendar.getInstance();
  83. calendar.add(Calendar.YEAR,1);
  84. couponItem.setCouponUseEndDate(calendar.getTime());//领取后一年有效
  85. couponItem.setCouponReceiveDate(new Date());
  86. couponItem.setCouponItemUseropenid(activity.getUserOpenId());
  87. couponItem.setCouponUseStatus(1);
  88. couponItem.setCouponIsDonation(2);
  89. couponItem.setCouponItemRemark("新人优惠券");
  90. String uuidStr = StrUtils.getUUID();
  91. couponItem.setCouponItemId(uuidStr);
  92. Integer flag = couponItemMapper.insertCouponItem(couponItem);
  93. if(flag < 1){
  94. throw new RuntimeException("添加优惠券失败");
  95. }
  96. Activity newActivity = new Activity();
  97. newActivity.setActivityId(activity.getActivityId());
  98. newActivity.setActivityStatus(3); //1:助力中 2:助力成功 3:已领取优惠券 4:取消
  99. newActivity.setActivityCoupon(uuidStr);
  100. flag = activityMapper.update(newActivity);
  101. if(flag < 1){
  102. throw new RuntimeException("修改状态失败");
  103. }
  104. return flag;
  105. }
  106. /**
  107. * 好友助力
  108. * @param openId
  109. * @param activityOpenId 助力id
  110. * @return
  111. */
  112. @Override
  113. @Transactional
  114. public Integer addActivityHelp(String openId,String activityOpenId){
  115. if(openId.equals(activityOpenId)){ //自己扫自己的二维码
  116. return -1;
  117. }
  118. boolean isHelp = false; //没有成功
  119. boolean isSendMsg = true; //是否推送信息
  120. Member userMember = memberMapper.getMemberByUserOpenId(openId);
  121. Member activityMember = memberMapper.getMemberByUserOpenId(activityOpenId);
  122. Activity activity = new Activity();
  123. activity.setUserOpenId(openId);
  124. List<Activity> activityList = activityMapper.getActivityList(activity);
  125. if(activityList == null || activityList.size() < 1){
  126. return 0;
  127. }
  128. activity = activityList.get(0);
  129. Activity ac = new Activity();
  130. ac.setActivityId(activity.getActivityId());
  131. //已有多少人助力
  132. Integer activityAlreadyHelp = activity.getActivityAlreadyHelp() + 1;
  133. if(activityAlreadyHelp > activity.getActivityAllHelp()){
  134. isSendMsg = false;
  135. }
  136. if(activityAlreadyHelp == activity.getActivityAllHelp()){
  137. isHelp = true; //已助力完成
  138. ac.setActivityStatus(2);
  139. }
  140. ac.setActivityAlreadyHelp(activityAlreadyHelp);
  141. Integer flag = activityMapper.update(ac);
  142. if(flag < 1){
  143. throw new RuntimeException("添加次数失败");
  144. }
  145. ActivityHelp activityHelp = new ActivityHelp();
  146. activityHelp.setActivityId(activity.getActivityId());
  147. activityHelp.setUserOpenId(activityOpenId);
  148. flag = activityHelpMapper.save(activityHelp);
  149. if(flag < 1){
  150. throw new RuntimeException("添加助力好友失败");
  151. }
  152. if(isSendMsg){
  153. //给用户发送消息
  154. String firstStr = "";
  155. String remStr = "";
  156. if(isHelp){ //助力完成
  157. firstStr = ResultInfo.HELP_SUCCESS.replaceAll("USER",userMember.getUserNickname());
  158. remStr = ResultInfo.HELP_REM_1;
  159. }else{
  160. firstStr = ResultInfo.HELP_FRIENDS.replaceAll("USER",activityMember.getUserNickname());
  161. remStr = ResultInfo.HELP_REM_2;
  162. }
  163. String numStr = activityAlreadyHelp + "人";
  164. try {
  165. sendMessageUtil.helpingSuccess(
  166. firstStr,
  167. ResultInfo.HELP_NAME,
  168. numStr,
  169. remStr,
  170. openId,
  171. ResultInfo.help_url
  172. );
  173. } catch (Exception e) {
  174. logger.info("============助力成功信息发送失败============");
  175. e.printStackTrace();
  176. }
  177. }
  178. return flag;
  179. }
  180. }