AppletsServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. package com.zoniot.ccrc.service.impl;
  2. import com.github.pagehelper.PageHelper;
  3. import com.zoniot.ccrc.commom.model.Pagination;
  4. import com.zoniot.ccrc.commom.utils.UserUtil;
  5. import com.zoniot.ccrc.dao.UserMapper;
  6. import com.zoniot.ccrc.dto.ClientUserDto;
  7. import com.zoniot.ccrc.dto.LoginUser;
  8. import com.zoniot.ccrc.entity.BaseWaterProperty;
  9. import com.zoniot.ccrc.entity.ClientUser;
  10. import com.zoniot.ccrc.entity.CustomerWaterStage;
  11. import com.zoniot.ccrc.service.AppletsService;
  12. import com.zoniot.ccrc.service.StatisticsService;
  13. import com.zoniot.ccrc.service.TokenService;
  14. import com.zoniot.ccrc.service.WechatService;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import javax.annotation.Resource;
  18. import java.math.BigDecimal;
  19. import java.math.BigInteger;
  20. import java.time.LocalDateTime;
  21. import java.time.LocalTime;
  22. import java.time.format.DateTimeFormatter;
  23. import java.time.temporal.TemporalAdjusters;
  24. import java.util.ArrayList;
  25. import java.util.List;
  26. @Service
  27. public class AppletsServiceImpl implements AppletsService {
  28. @Resource
  29. private UserMapper userMapper;
  30. @Autowired
  31. private StatisticsService statisticsService;
  32. @Override
  33. public ClientUserDto findUserAmountByIdReal() {
  34. LoginUser loginClientUser = UserUtil.getCurrentUser();
  35. if(loginClientUser.getId()==null)
  36. return null;
  37. ClientUserDto clientUserDto = new ClientUserDto();
  38. List<ClientUserDto> clientUserDtos = new ArrayList<>();
  39. if(loginClientUser.getId()!=null) {
  40. clientUserDtos = userMapper.findUserAmountById(loginClientUser.getId());
  41. }
  42. DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd");
  43. Integer startDate = 0;
  44. Integer endDate = 0;
  45. LocalDateTime startDateTime = LocalDateTime.now().with(TemporalAdjusters.firstDayOfMonth());
  46. LocalDateTime endDateTime = LocalDateTime.now().with(LocalTime.MAX);
  47. startDate = Integer.valueOf(startDateTime.format(df));
  48. endDate = Integer.valueOf(endDateTime.format(df));
  49. //查询在阶段类型时间范围内容的用水量
  50. Double volume = statisticsService.getDeviceVolume(startDate,endDate);
  51. if(clientUserDtos!=null&&clientUserDtos.size()>0)
  52. {
  53. clientUserDto = clientUserDtos.get(0);
  54. clientUserDto.setUserNumber(clientUserDto.getAccountnumber());
  55. clientUserDto.setAvailablel1(10d);
  56. clientUserDto.setAvailablel2(20d);
  57. clientUserDto.setAvailablel3(999d);
  58. clientUserDto.setUseAmount(BigDecimal.valueOf(volume));
  59. BaseWaterProperty baseWaterProperty = new BaseWaterProperty();
  60. baseWaterProperty.setLaddertype(1);
  61. baseWaterProperty.setAvailable1(10);
  62. baseWaterProperty.setAvailable2(20);
  63. baseWaterProperty.setAvailable3(999);
  64. baseWaterProperty.setTotalpriceL1(new BigDecimal("0.8"));
  65. baseWaterProperty.setTotalpriceL2(new BigDecimal("1.2"));
  66. baseWaterProperty.setTotalpriceL3(new BigDecimal("1.6"));
  67. List<CustomerWaterStage> customerWaterStages = new ArrayList<CustomerWaterStage>();
  68. CustomerWaterStage customerWaterStage1 = new CustomerWaterStage();
  69. if(baseWaterProperty != null) {
  70. clientUserDto.setLaddertype(baseWaterProperty.getLaddertype());
  71. int ladderType = baseWaterProperty.getLaddertype();
  72. clientUserDto.setLaddertypename("本月用水");
  73. if(ladderType==2)//年阶梯
  74. {
  75. if(clientUserDto.getAvailableamount4() != null && clientUserDto.getAvailableamount4()>0)
  76. {
  77. clientUserDto.setLadderlevel(4);
  78. clientUserDto.setLadderlevelname("第四阶梯");
  79. }
  80. if(clientUserDto.getAvailableamount3() != null && clientUserDto.getAvailableamount3()>0)
  81. {
  82. clientUserDto.setLadderlevel(3);
  83. clientUserDto.setLadderlevelname("第三阶梯");
  84. }
  85. if(clientUserDto.getAvailableamount2() != null && clientUserDto.getAvailableamount2()>0)
  86. {
  87. clientUserDto.setLadderlevel(2);
  88. clientUserDto.setLadderlevelname("第二阶梯");
  89. }
  90. if(clientUserDto.getAvailableamount1() != null && clientUserDto.getAvailableamount1()>0)
  91. {
  92. clientUserDto.setLadderlevel(1);
  93. clientUserDto.setLadderlevelname("第一阶梯");
  94. }
  95. }
  96. if(ladderType==1)//月阶梯
  97. {
  98. if(clientUserDto.getAvailablel4() != null && clientUserDto.getAvailablel4()>0 && volume<= clientUserDto.getAvailablel4())
  99. {
  100. clientUserDto.setLadderlevel(4);
  101. clientUserDto.setLadderlevelname("第四阶梯");
  102. }
  103. if(clientUserDto.getAvailablel3() != null && clientUserDto.getAvailablel3()>0 && volume<= clientUserDto.getAvailablel3())
  104. {
  105. clientUserDto.setLadderlevel(3);
  106. clientUserDto.setLadderlevelname("第三阶梯");
  107. }
  108. if(clientUserDto.getAvailablel2() != null && clientUserDto.getAvailablel2()>0 && volume<= clientUserDto.getAvailablel2())
  109. {
  110. clientUserDto.setLadderlevel(2);
  111. clientUserDto.setLadderlevelname("第二阶梯");
  112. }
  113. if(clientUserDto.getAvailablel1() != null && clientUserDto.getAvailablel1()>0 && volume<= clientUserDto.getAvailablel1())
  114. {
  115. clientUserDto.setLadderlevel(1);
  116. clientUserDto.setLadderlevelname("第一阶梯");
  117. }
  118. }
  119. else if(ladderType==0)
  120. {
  121. clientUserDto.setLadderlevel(1);
  122. clientUserDto.setLadderlevelname("第一阶梯");
  123. }
  124. customerWaterStage1.setMinValue(BigDecimal.valueOf(0));
  125. if(baseWaterProperty.getAvailable1()!=null)
  126. customerWaterStage1.setMaxValue(BigDecimal.valueOf(baseWaterProperty.getAvailable1()));
  127. customerWaterStage1.setLaddertype(baseWaterProperty.getLaddertype());
  128. customerWaterStage1.setWaterPrice(baseWaterProperty.getTotalpriceL1());
  129. customerWaterStages.add(customerWaterStage1);
  130. if (baseWaterProperty.getTotalpriceL2() != null) {
  131. CustomerWaterStage customerWaterStage2 = new CustomerWaterStage();
  132. customerWaterStage2.setMinValue(BigDecimal.valueOf(baseWaterProperty.getAvailable1()));
  133. customerWaterStage2.setMaxValue(BigDecimal.valueOf(baseWaterProperty.getAvailable2()));
  134. customerWaterStage2.setLaddertype(baseWaterProperty.getLaddertype());
  135. customerWaterStage2.setWaterPrice(baseWaterProperty.getTotalpriceL2());
  136. customerWaterStages.add(customerWaterStage2);
  137. }
  138. if (baseWaterProperty.getTotalpriceL3() != null) {
  139. CustomerWaterStage customerWaterStage3 = new CustomerWaterStage();
  140. customerWaterStage3.setMinValue(BigDecimal.valueOf(baseWaterProperty.getAvailable2()));
  141. customerWaterStage3.setMaxValue(BigDecimal.valueOf(baseWaterProperty.getAvailable3()));
  142. customerWaterStage3.setLaddertype(baseWaterProperty.getLaddertype());
  143. customerWaterStage3.setWaterPrice(baseWaterProperty.getTotalpriceL3());
  144. customerWaterStages.add(customerWaterStage3);
  145. }
  146. if (baseWaterProperty.getTotalpriceL4() != null) {
  147. CustomerWaterStage customerWaterStage4 = new CustomerWaterStage();
  148. customerWaterStage4.setMinValue(BigDecimal.valueOf(baseWaterProperty.getAvailable3()));
  149. customerWaterStage4.setMaxValue(BigDecimal.valueOf(baseWaterProperty.getAvailable4()));
  150. customerWaterStage4.setLaddertype(baseWaterProperty.getLaddertype());
  151. customerWaterStage4.setWaterPrice(baseWaterProperty.getTotalpriceL4());
  152. customerWaterStages.add(customerWaterStage4);
  153. }
  154. }
  155. clientUserDto.setWaterStages(customerWaterStages);
  156. }
  157. return clientUserDto;
  158. }
  159. @Autowired
  160. private WechatService wechatService;
  161. @Autowired
  162. private TokenService tokenService;
  163. @Override
  164. public Pagination<ClientUser> getAccountInfoPage(int pageNum, int pageSize) {
  165. LoginUser loginClientUser = UserUtil.getCurrentUser();
  166. PageHelper.startPage(pageNum, pageSize);
  167. List<ClientUser> list = findUserByOpenid(loginClientUser.getOpenid(),null);
  168. return new Pagination<>(list);
  169. }
  170. @Override
  171. public int bindingMobile(String encryptedData, String iv, String code) {
  172. int result=0;
  173. LoginUser loginClientUser = UserUtil.getCurrentUser();
  174. String sessionkey = wechatService.getSessionkey(code);
  175. String PhoneNumber = wechatService.getInfo(encryptedData,iv,sessionkey);
  176. ClientUser clientUser = new ClientUser();
  177. clientUser.setId(loginClientUser.getId());
  178. clientUser.setMobilePhone(PhoneNumber);
  179. Integer id=userMapper.selectUserByPhone(PhoneNumber);
  180. loginClientUser.setMobilePhone(PhoneNumber);
  181. if(id==null){
  182. result=-1;
  183. }else{
  184. String openId=loginClientUser.getOpenid();
  185. userMapper.updateOpenId(openId,id);
  186. //tokenService.saveToken(loginClientUser);
  187. }
  188. return result;
  189. }
  190. @Override
  191. public void setDefault(Integer id) {
  192. LoginUser loginClientUser = UserUtil.getCurrentUser();
  193. //先清空所有默认
  194. userMapper.resetDefault(loginClientUser.getOpenid());
  195. //设置默认
  196. ClientUser clientUser = new ClientUser();
  197. clientUser.setId(id);
  198. clientUser.setIsDefault(1);
  199. userMapper.setDefault(id);
  200. String number=userMapper.getDefaultNumer(id.intValue());
  201. //更新缓存信息
  202. loginClientUser.setId(id);
  203. loginClientUser.setDefaultUserNumber(number);
  204. tokenService.saveToken(loginClientUser);
  205. }
  206. @Override
  207. public List<ClientUser> findUserByOpenid(String openid, Integer type) {
  208. List<ClientUser> list=userMapper.findClientUserByOpenid(openid,type);
  209. return list;
  210. }
  211. @Override
  212. public void updateByPrimaryKeySelective(ClientUser clientUser) {
  213. userMapper.setDefault(clientUser.getId());
  214. }
  215. @Override
  216. public int getUser() {
  217. int result=0;
  218. LoginUser currentUser = UserUtil.getCurrentUser();
  219. Integer id=userMapper.getUser(currentUser.getOpenid());
  220. if(id==null){
  221. result=-1;
  222. }
  223. return result;
  224. }
  225. }