IncrementOrderServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package com.fdkankan.ucenter.service.impl;
  2. import com.amazonaws.services.simpleworkflow.flow.annotations.NoWait;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.fdkankan.common.constant.ErrorCode;
  8. import com.fdkankan.common.constant.SceneConstant;
  9. import com.fdkankan.common.exception.BusinessException;
  10. import com.fdkankan.ucenter.common.PageInfo;
  11. import com.fdkankan.common.util.NumberUtils;
  12. import com.fdkankan.ucenter.common.SkuEnum;
  13. import com.fdkankan.ucenter.constant.LoginConstant;
  14. import com.fdkankan.ucenter.constant.OrderConstant;
  15. import com.fdkankan.ucenter.entity.*;
  16. import com.fdkankan.ucenter.httpClient.client.PayClient;
  17. import com.fdkankan.ucenter.httpClient.param.PayGoods;
  18. import com.fdkankan.ucenter.httpClient.service.PayService;
  19. import com.fdkankan.ucenter.httpClient.vo.PayOrderVo;
  20. import com.fdkankan.ucenter.mapper.IIncrementOrderMapper;
  21. import com.fdkankan.ucenter.service.*;
  22. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  23. import com.fdkankan.ucenter.util.DateUserUtil;
  24. import com.fdkankan.ucenter.vo.request.DownNumParam;
  25. import com.fdkankan.ucenter.vo.request.IncrementOrderParam;
  26. import com.fdkankan.ucenter.vo.request.OrderParam;
  27. import com.fdkankan.ucenter.vo.response.GoodsSkuVo;
  28. import com.fdkankan.ucenter.vo.response.IncrementOrderVo;
  29. import org.apache.commons.lang3.StringUtils;
  30. import org.joda.time.DateTime;
  31. import org.springframework.beans.BeanUtils;
  32. import org.springframework.beans.factory.annotation.Autowired;
  33. import org.springframework.beans.factory.annotation.Value;
  34. import org.springframework.stereotype.Service;
  35. import java.math.BigDecimal;
  36. import java.util.ArrayList;
  37. import java.util.Arrays;
  38. import java.util.Date;
  39. import java.util.List;
  40. import static com.fdkankan.ucenter.util.DateUserUtil.getDateTime;
  41. /**
  42. * <p>
  43. * 增值权益订单表 服务实现类
  44. * </p>
  45. *
  46. * @author
  47. * @since 2022-07-13
  48. */
  49. @Service
  50. public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper, IncrementOrder> implements IIncrementOrderService {
  51. @Autowired
  52. IUserService userService;
  53. @Autowired
  54. IInvoiceService invoiceService;
  55. @Autowired
  56. IUserIncrementService userIncrementService;
  57. @Autowired
  58. IGoodsSkuService goodsSkuService;
  59. @Autowired
  60. IIncrementTypeService incrementTypeService;
  61. @Override
  62. public PageInfo pageList(IncrementOrderParam param) {
  63. User user = userService.getByUserName(param.getUserName());
  64. LambdaQueryWrapper<IncrementOrder> wrapper = new LambdaQueryWrapper<>();
  65. wrapper.eq(IncrementOrder::getUserId,user.getId());
  66. wrapper.eq(IncrementOrder::getPayStatus,1);
  67. wrapper.orderByDesc(IncrementOrder::getTradeTime);
  68. Page<IncrementOrder> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
  69. List<IncrementOrderVo> listVo =new ArrayList<>();
  70. for (IncrementOrder record : page.getRecords()) {
  71. if(StringUtils.isNotBlank(record.getTradeTime())){
  72. record.setTradeTime(DateUserUtil.AddMinute(record.getTradeTime(),record.getTimeZoneOff()));
  73. }
  74. Invoice invoice = invoiceService.getByIncrementOrderId(record.getId());
  75. IncrementOrderVo vo = new IncrementOrderVo();
  76. BeanUtils.copyProperties(record,vo);
  77. vo.setInvoice(invoice);
  78. listVo.add(vo);
  79. }
  80. Page<IncrementOrderVo> pageVo = new Page<>(param.getPageNum(),param.getPageSize());
  81. pageVo.setRecords(listVo);
  82. pageVo.setTotal(page.getTotal());
  83. return PageInfo.PageInfo(pageVo);
  84. }
  85. @Override
  86. public GoodsSkuVo getDownloadPrice(OrderParam param) {
  87. if(param.getDateType() == null){
  88. throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
  89. }
  90. // 5 专业会员,6 下载 , 7 高级会员
  91. if(param.getDateType() != 6 && param.getIncrementTypeId() == null && param.getUserIncrementId() == null){
  92. throw new BusinessException(SceneConstant.FAILURE_CODE_5012, SceneConstant.FAILURE_MSG_5012);
  93. }
  94. return getGoodsSkuVo(param.getDateType(), param.getUserIncrementId(),param.getMonthQy(),param.getIncrementTypeId());
  95. }
  96. private GoodsSkuVo getGoodsSkuVo (Integer dateType,Integer userIncrementId,Integer monthDy,Integer incrementTypeId){
  97. GoodsSkuVo goodsSkuVo = new GoodsSkuVo();
  98. if(userIncrementId != null){
  99. UserIncrement userIncrement = userIncrementService.getById(userIncrementId);
  100. incrementTypeId = userIncrement.getIncrementTypeId();
  101. }
  102. IncrementType incrementType = null;
  103. if(incrementTypeId != null){ //购买会员
  104. incrementType = incrementTypeService.getById(incrementTypeId);
  105. if(incrementType == null){
  106. throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
  107. }
  108. goodsSkuVo.setPrice(incrementType.getPrice());
  109. goodsSkuVo.setSkuSn(incrementType.getId().toString());
  110. goodsSkuVo.setDeadLine(getDateTime(incrementType,userIncrementId,monthDy).toDate().getTime());
  111. return goodsSkuVo;
  112. }
  113. if(dateType == 6){ //下载场景
  114. incrementType = incrementTypeService.list().get(0);
  115. goodsSkuVo.setPrice(incrementType.getDownloadPrice());
  116. goodsSkuVo.setSkuSn(incrementType.getId().toString());
  117. goodsSkuVo.setDeadLine(getDateTime(incrementType,userIncrementId,monthDy).toDate().getTime());
  118. return goodsSkuVo;
  119. }
  120. return goodsSkuVo;
  121. }
  122. @Override
  123. public DateTime getDateTime(IncrementType incrementType, Integer userIncrementId,Integer count) {
  124. Date userTime = new Date();
  125. if(userIncrementId != null){
  126. UserIncrement userIncrement = userIncrementService.getById(userIncrementId);
  127. userTime = DateUserUtil.getDate(userIncrement.getIncrementEndTime());
  128. }
  129. return DateUserUtil.getDateTime(userTime, incrementType,count);
  130. }
  131. public GoodsSkuVo getIncrementOrDownloadPrice(Integer dateType) {
  132. String skuStr = SkuEnum.skusMap.get(String.valueOf(dateType));
  133. if (StringUtils.isEmpty(skuStr)){
  134. skuStr = SkuEnum.skusMap.get("5");
  135. }
  136. GoodsSkuVo responseGoodsSku = new GoodsSkuVo();
  137. GoodsSku goodsSkuEntity = goodsSkuService.getBySku(skuStr);
  138. BeanUtils.copyProperties(goodsSkuEntity, responseGoodsSku);
  139. return responseGoodsSku;
  140. }
  141. @Autowired
  142. PayService payService;
  143. @Override
  144. public IncrementOrder insertIncrementOrder(User user, DownNumParam param,IncrementType incrementType) {
  145. BigDecimal total = incrementType.getPrice().multiply(new BigDecimal(param.getCount()));
  146. if(param.getMonthQy() != null){
  147. total = total.multiply(new BigDecimal(param.getMonthQy())); //高级会员月份
  148. }
  149. IncrementOrder incrementOrderEntity = new IncrementOrder();
  150. PayGoods payGoods = new PayGoods(incrementType.getName(),param.getCount(),incrementType.getValidTimeType(),param.getMonthQy());
  151. PayOrderVo payOrderVo = payService.downOrder(total, "incrementOrder",user.getUserName(),user.getNickName(), Arrays.asList(payGoods));
  152. if(payOrderVo == null){
  153. throw new BusinessException(OrderConstant.FAILURE_CODE_8005,OrderConstant.FAILURE_MSG_8005);
  154. }
  155. incrementOrderEntity.setOrderSn(payOrderVo.getOrderSn());
  156. incrementOrderEntity.setAmount(total);
  157. incrementOrderEntity.setPayType(param.getPayType());
  158. incrementOrderEntity.setPayStatus(-1);
  159. incrementOrderEntity.setUserId(user.getId());
  160. incrementOrderEntity.setCount(param.getCount());
  161. incrementOrderEntity.setAbroad(param.getAbroad());
  162. incrementOrderEntity.setStatus(param.getIncrementId() == null ? 1 : 2);
  163. incrementOrderEntity.setIncrementId(param.getIncrementId());
  164. incrementOrderEntity.setRecStatus("A");
  165. incrementOrderEntity.setCreateTime(DateUserUtil.getDate(new Date()));
  166. incrementOrderEntity.setUpdateTime(DateUserUtil.getDate(new Date()));
  167. incrementOrderEntity.setIncrementType(incrementType.getId());
  168. incrementOrderEntity.setMonthQy(param.getMonthQy());
  169. incrementOrderEntity.setTimeZoneOff(param.getTimeZoneOff());
  170. if(incrementType.getValidTimeType() == 0){
  171. incrementOrderEntity.setMemberLevels("PR");
  172. }
  173. if(incrementType.getValidTimeType() == 1){
  174. incrementOrderEntity.setMemberLevels("SE");
  175. }
  176. this.save(incrementOrderEntity);
  177. return incrementOrderEntity;
  178. }
  179. @Override
  180. public IncrementOrder getByOrderSn(String orderSn) {
  181. QueryWrapper<IncrementOrder> queryWrapper = new QueryWrapper<>();
  182. queryWrapper.lambda().eq(IncrementOrder::getOrderSn,orderSn);
  183. List<IncrementOrder> list = this.list(queryWrapper);
  184. if(list == null || list.size()<=0){
  185. return null;
  186. }
  187. return list.get(0);
  188. }
  189. @Override
  190. public IncrementOrder getByOrderSnNoPay(String orderSn) {
  191. QueryWrapper<IncrementOrder> queryWrapper = new QueryWrapper<>();
  192. queryWrapper.lambda().eq(IncrementOrder::getOrderSn,orderSn);
  193. queryWrapper.lambda().ne(IncrementOrder::getPayStatus,1);
  194. List<IncrementOrder> list = this.list(queryWrapper);
  195. if(list == null || list.size()<=0){
  196. return null;
  197. }
  198. return list.get(0); }
  199. @Override
  200. public boolean paySuccessIncrementOrder(String orderSn, String tradeNo, int paymentTypeName) {
  201. LambdaUpdateWrapper<IncrementOrder> updateWrapper = new LambdaUpdateWrapper<>();
  202. updateWrapper.set(IncrementOrder::getPayType,paymentTypeName)
  203. .set(IncrementOrder::getNumber,tradeNo)
  204. .set(IncrementOrder::getPayStatus, 1)
  205. .set(IncrementOrder::getTradeTime, new Date())
  206. .eq(IncrementOrder::getOrderSn,orderSn);
  207. return this.update(updateWrapper);
  208. }
  209. }