ApparatusServiceImpl.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package com.iamberry.wechat.service.apparatus;
  2. import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
  3. import com.iamberry.wechat.core.entity.apparatus.Apparatus;
  4. import com.iamberry.wechat.core.entity.integral.IntegralConfig;
  5. import com.iamberry.wechat.core.entity.integral.MemberIntegral;
  6. import com.iamberry.wechat.core.entity.integral.UseIntegral;
  7. import com.iamberry.wechat.core.entity.member.Member;
  8. import com.iamberry.wechat.core.entity.integral.StayIntegral;
  9. import com.iamberry.wechat.face.apparatus.ApparatusService;
  10. import com.iamberry.wechat.service.mapper.ApparatusMapper;
  11. import com.iamberry.wechat.service.mapper.MemberMapper;
  12. import com.iamberry.wechat.service.mapper.SystemMapper;
  13. import com.iamberry.wechat.service.mapper.UseIntegralMapper;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import java.util.Calendar;
  18. import java.util.Date;
  19. import java.util.List;
  20. /**
  21. * Created by liuzhiwei on 2017/12/28.
  22. */
  23. @Service
  24. public class ApparatusServiceImpl implements ApparatusService {
  25. @Autowired
  26. private ApparatusMapper apparatusMapper;
  27. @Autowired
  28. private SystemMapper systemMapper;
  29. @Autowired
  30. private UseIntegralMapper useIntegralMapper;
  31. @Autowired
  32. private MemberMapper memberMapper;
  33. @Override
  34. public List<Apparatus> listApparatusPage(Apparatus apparatus) {
  35. return apparatusMapper.listApparatusPage(apparatus);
  36. }
  37. @Override
  38. public Integer addApparatus(Apparatus apparatus) {
  39. return apparatusMapper.addApparatus(apparatus);
  40. }
  41. @Override
  42. @Transactional
  43. public boolean registerMember(Apparatus apparatus, Member member) {
  44. //获取会员信息,判断是否已经注册会员
  45. Member memberInfo = memberMapper.getMemberByUserOpenId(member.getUserOpenid());
  46. if(memberInfo == null){
  47. return false;
  48. }
  49. //添加机器信息
  50. int num = apparatusMapper.addApparatus(apparatus);
  51. if(num > 0){
  52. //这里判断是否是会员 1.会员 2.普通用户
  53. if(memberInfo.getUserIdentity() == 2){
  54. //赠送新注册积分
  55. addStayIntegral(member.getUserOpenid(),1,0.0);
  56. }
  57. //赠送400新增牙刷积分
  58. addStayIntegral(member.getUserOpenid(),2,0.0);
  59. //修改用户信息
  60. member.setUserIdentity(1);
  61. if(memberMapper.updateMemberByUserId(member) < 1){
  62. return false;
  63. }
  64. } else {
  65. return false;
  66. }
  67. return true;
  68. }
  69. /**
  70. * 获取数据库配置的积分数量
  71. * @param id
  72. * @return
  73. */
  74. public IntegralConfig getIntegralId(Integer id){
  75. //新增加牙刷获取积分id
  76. ShopSystemRule shopSystemRule = systemMapper.selectOneShopRuleById(id);
  77. if (shopSystemRule == null) {
  78. return null;
  79. }
  80. IntegralConfig config = new IntegralConfig();
  81. config.setIntegralConfigId(shopSystemRule.getRuleNum().intValue());
  82. //获取会员获取积分配置信息
  83. List<IntegralConfig> configList = useIntegralMapper.listIntegralConfig(config);
  84. if (configList == null || configList.size() == 0) {
  85. return null;
  86. }
  87. return configList.get(0);
  88. }
  89. @Override
  90. public Apparatus getApparatus(Apparatus apparatus) {
  91. return apparatusMapper.getApparatus(apparatus);
  92. }
  93. @Override
  94. public Integer getColorIdByProductId(String productId) {
  95. return apparatusMapper.getColorIdByProductId(productId);
  96. }
  97. /**
  98. * 添加待入账积分统一调用该接口
  99. * @param openId
  100. * @param IntegralType 1.新注册会员送一百积分 2.新增牙刷赠送400积分 3.购买牙刷,赠送订单金额乘以2的积分
  101. * @param orderAmount 订单金额 IntegralType为3时有值
  102. * @return
  103. */
  104. @Override
  105. @Transactional
  106. public boolean addStayIntegral(String openId,Integer IntegralType,Double orderAmount){
  107. if(openId == null||openId.equals("") || IntegralType < 1){
  108. return false;
  109. }
  110. IntegralConfig integralConfig = null;
  111. StayIntegral stayIntegral = new StayIntegral();
  112. Integer stayNumber = 0;
  113. switch (IntegralType){
  114. case 1:
  115. //新注册会员积分数量
  116. integralConfig = getIntegralId(247);
  117. stayNumber = integralConfig.getIntegralConfigNumber();
  118. break;
  119. case 2:
  120. //新增加牙刷赠送积分数量
  121. integralConfig = getIntegralId(248);
  122. stayNumber = integralConfig.getIntegralConfigNumber();
  123. break;
  124. case 3:
  125. if(orderAmount == 0){
  126. break;
  127. }
  128. integralConfig = getIntegralId(250);
  129. stayNumber = (int)(orderAmount * 2);
  130. break;
  131. default:
  132. break;
  133. }
  134. if(integralConfig == null){
  135. return false;
  136. }
  137. //规则表查询积分到账时间(多少天到账)
  138. integralConfig = getIntegralId(251);
  139. stayIntegral.setUserOpenid(openId);
  140. stayIntegral.setConfigId(integralConfig.getIntegralConfigId());
  141. stayIntegral.setStayNumber(stayNumber);
  142. Calendar calendar = Calendar.getInstance();
  143. calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+integralConfig.getIntegralConfigNumber());
  144. stayIntegral.setStayRecordedTime(calendar.getTime());
  145. stayIntegral.setStayStatus(1);
  146. Integer msg = memberMapper.insertStayIntegral(stayIntegral);
  147. if(msg > 0){
  148. //添加待入账积分
  149. Member memberInfo = memberMapper.getMemberByUserOpenId(openId);
  150. memberInfo.setUserStayIntegral(stayNumber);
  151. if(memberMapper.updateUserStayIntegralByOpenId(memberInfo) > 0){
  152. //添加日志
  153. UseIntegral useIntegral = new UseIntegral();
  154. useIntegral.setConfigId(integralConfig.getIntegralConfigId());
  155. useIntegral.setUserOpenId(openId);
  156. useIntegral.setIntegralType(3);
  157. useIntegral.setIntegralNumber(stayNumber);
  158. useIntegral.setIntegralBeforeNumber(memberInfo.getUserSurplusIntegral());
  159. useIntegral.setIntegralEndNumber(memberInfo.getUserSurplusIntegral());
  160. useIntegral.setIntegralRemark(integralConfig.getIntegralConfigName());
  161. //添加积分获取日志信息
  162. if(useIntegralMapper.addUseIntegral(useIntegral) < 1){
  163. return false;
  164. }
  165. }
  166. }
  167. return true;
  168. }
  169. }