JtOrderServiceImpl.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package com.goafanti.order.service.impl;
  2. import java.math.BigDecimal;
  3. import java.util.ArrayList;
  4. import java.util.Date;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.UUID;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import com.goafanti.business.bo.JtBusinessProjectResult;
  12. import com.goafanti.common.dao.AchievementMapper;
  13. import com.goafanti.common.dao.DemandMapper;
  14. import com.goafanti.common.dao.JtBusinessProjectMapper;
  15. import com.goafanti.common.dao.JtOrderDetailMapper;
  16. import com.goafanti.common.dao.JtOrderMapper;
  17. import com.goafanti.common.model.Achievement;
  18. import com.goafanti.common.model.Demand;
  19. import com.goafanti.common.model.JtBusinessProject;
  20. import com.goafanti.common.model.JtOrder;
  21. import com.goafanti.common.model.JtOrderDetail;
  22. import com.goafanti.core.mybatis.BaseMybatisDao;
  23. import com.goafanti.core.mybatis.JDBCIdGenerator;
  24. import com.goafanti.core.mybatis.page.Pagination;
  25. import com.goafanti.core.shiro.token.TokenManager;
  26. import com.goafanti.order.bo.JtOrderInput.JtSingleOrder;
  27. import com.goafanti.order.bo.JtOrderResultDetail;
  28. import com.goafanti.order.service.JtOrderService;
  29. @Service
  30. public class JtOrderServiceImpl extends BaseMybatisDao<JtOrderMapper> implements JtOrderService{
  31. @Autowired
  32. JtOrderMapper jtOrderMapper;
  33. @Autowired
  34. JtOrderDetailMapper jtOrderDetailMapper;
  35. @Autowired
  36. JtBusinessProjectMapper JtBusinessProjectMapper;
  37. @Autowired
  38. AchievementMapper achievementMapper;
  39. @Autowired
  40. DemandMapper demandMapper;
  41. @Override
  42. public int addOrder(List<JtSingleOrder> orderList) {
  43. List<JtOrder>jtOrders=new ArrayList<>();
  44. List<JtOrderDetail>jtOrderDetails=new ArrayList<>();
  45. for(JtSingleOrder order:orderList)
  46. {
  47. JtOrder jtOrder=new JtOrder();
  48. JtOrderDetail jtOrderDetail=new JtOrderDetail();
  49. if(order.getCommodityId()==null)return -1;
  50. if(order.getCommodityType()==null || order.getCommodityType()<0 || order.getCommodityType()>=4)return -2;
  51. if(order.getOrderChannel()==null)return -3;
  52. if(order.getPayType()==null)order.setPayType(0);
  53. switch(order.getCommodityType()) {
  54. case 0:{
  55. JtBusinessProjectResult jtBusinessProject=JtBusinessProjectMapper.selectByPrimaryKeyWithModule(order.getCommodityId());
  56. if(jtBusinessProject==null || jtBusinessProject.getModule()!=0)return -1;
  57. else {
  58. jtOrder.setSellerId(jtBusinessProject.getOwnerId());
  59. jtOrderDetail.setCommodityName(jtBusinessProject.getName());
  60. if(jtBusinessProject.getPrice()==null) {
  61. jtOrder.setOrderAmount(new BigDecimal(0));
  62. }
  63. else jtOrder.setOrderAmount(jtBusinessProject.getPrice().multiply(new BigDecimal(order.getCommodityQuantity())));
  64. jtOrderDetail.setCommodityPrice(jtBusinessProject.getPrice()==null?new BigDecimal(0):jtBusinessProject.getPrice());
  65. }
  66. break;}
  67. case 1:{
  68. JtBusinessProjectResult jtBusinessProject=JtBusinessProjectMapper.selectByPrimaryKeyWithModule(order.getCommodityId());
  69. if(jtBusinessProject==null || jtBusinessProject.getModule()!=1)return -1;
  70. else {
  71. jtOrder.setSellerId(jtBusinessProject.getOwnerId());
  72. jtOrderDetail.setCommodityName(jtBusinessProject.getName());
  73. if(jtBusinessProject.getPrice()==null) {
  74. jtOrder.setOrderAmount(new BigDecimal(0));
  75. }
  76. else jtOrder.setOrderAmount(jtBusinessProject.getPrice().multiply(new BigDecimal(order.getCommodityQuantity())));
  77. jtOrderDetail.setCommodityPrice(jtBusinessProject.getPrice()==null?new BigDecimal(0):jtBusinessProject.getPrice());
  78. }
  79. break;}
  80. case 2:{
  81. Achievement achievement=achievementMapper.selectByPrimaryKey(order.getCommodityId());
  82. if(achievement ==null )return -1;
  83. else {
  84. jtOrder.setSellerId(achievement.getOwnerId());
  85. jtOrderDetail.setCommodityName(achievement.getName());
  86. if(achievement.getTransferPrice()==null)jtOrder.setOrderAmount(new BigDecimal(0));
  87. else jtOrder.setOrderAmount(achievement.getTransferPrice().multiply(new BigDecimal(order.getCommodityQuantity())));
  88. jtOrderDetail.setCommodityPrice(achievement.getTransferPrice()==null?new BigDecimal(0):achievement.getTransferPrice());
  89. }
  90. break;}
  91. case 3:{
  92. Demand demand=demandMapper.selectByPrimaryKey(order.getCommodityId());
  93. if(demand==null )return -1;
  94. else {
  95. BigDecimal price=new BigDecimal(0);
  96. jtOrder.setSellerId(demand.getEmployerId());
  97. jtOrderDetail.setCommodityName(demand.getName());
  98. if(demand.getDemandType()==3) {price=demand.getCrowdCost()==null?new BigDecimal(0):demand.getCostEscrow().multiply(new BigDecimal(-1));}
  99. else price=demand.getBudgetCost();
  100. if(price==null)jtOrder.setOrderAmount(new BigDecimal(0));
  101. else jtOrder.setOrderAmount(price.multiply(new BigDecimal(order.getCommodityQuantity())));
  102. jtOrderDetail.setCommodityPrice(price==null?new BigDecimal(0):price);
  103. }
  104. break;}
  105. default:break;
  106. }
  107. JDBCIdGenerator jdbcIdGenerator=new JDBCIdGenerator();
  108. String orderNo=jdbcIdGenerator.generateId()+"";
  109. jtOrder.setBuyerId(TokenManager.getUserId());
  110. // jtOrder.setBuyerId("0549c290-5178-4886-8294-5037f1743b0c");
  111. order.setOrderNo(orderNo);
  112. jtOrder.setDeleteSign(0);
  113. jtOrder.setOrderChannel(order.getOrderChannel());
  114. jtOrder.setOrderNo(orderNo);
  115. jtOrder.setOrderRemarks(order.getOrderRemarks());
  116. jtOrder.setOrderStatus(0);
  117. jtOrder.setOrderTime(new Date());
  118. jtOrder.setPayType(order.getPayType());
  119. jtOrder.setRefundAmount(new BigDecimal(0));
  120. jtOrder.setPayAmount(new BigDecimal(0));
  121. jtOrder.setUpdateTime(new Date());
  122. jtOrderDetail.setCommodityId(order.getCommodityId());
  123. jtOrderDetail.setCommodityMode(order.getCommodityMode());
  124. jtOrderDetail.setCommodityQuantity(order.getCommodityQuantity());
  125. jtOrderDetail.setCommodityType(order.getCommodityType());
  126. jtOrderDetail.setCreateTime(new Date());
  127. jtOrderDetail.setDiscountPrice(new BigDecimal(0));
  128. jtOrderDetail.setId(UUID.randomUUID().toString());
  129. jtOrderDetail.setMemberPrice(new BigDecimal(0));
  130. jtOrderDetail.setOrderNo(orderNo);
  131. jtOrders.add(jtOrder);
  132. jtOrderDetails.add(jtOrderDetail);
  133. }
  134. for(int i =0;i<jtOrders.size();i++) {
  135. jtOrderMapper.insert(jtOrders.get(i));
  136. jtOrderDetailMapper.insert(jtOrderDetails.get(i));
  137. }
  138. return 0;
  139. }
  140. /*
  141. * userType-----0-购买者 1-出售者 2-管理员
  142. *
  143. * */
  144. @SuppressWarnings("unchecked")
  145. @Override
  146. public Pagination<JtOrderResultDetail> searchOrderList(Integer orderType ,String orderNo, String startCreateDate, String endCreateDate,
  147. String sellerName, String buyerName, String commodityName, Integer userType,Integer pageNo,Integer pageSize) {
  148. Map<String, Object>params=new HashMap<>();
  149. if(pageNo==null ||pageNo<1)pageNo=1;
  150. if(pageSize==null || pageSize<1)pageSize=10;
  151. String sellerId=null;
  152. String buyerId=null;
  153. if(userType==0) {
  154. //购买者 将买家姓名置空,购买id为当前id进行搜索
  155. buyerName=null;
  156. buyerId=TokenManager.getUserId();
  157. params.put("buyerId", buyerId);
  158. }
  159. else if(userType==1) {
  160. //出售者 将卖家姓名置空,出售者id为当前id进行搜索
  161. sellerName=null;
  162. sellerId=TokenManager.getUserId();
  163. params.put("sellerId", sellerId);
  164. }
  165. else {
  166. //管理员 买卖id均为空,不额外处理买卖房姓名
  167. }
  168. if(buyerName!=null)params.put("buyerName", buyerName);
  169. if(sellerName!=null)params.put("sellerName", sellerName);
  170. if(orderNo!=null)params.put("orderNo", orderNo);
  171. if(startCreateDate!=null)params.put("startCreateDate", startCreateDate);
  172. if(endCreateDate!=null)params.put("endCreateDate", endCreateDate);
  173. if(commodityName!=null)params.put("commodityName", commodityName);
  174. if(orderType!=null && ((orderType>=0 && orderType<=6)|| orderType==10))params.put("orderType", orderType);
  175. return (Pagination<JtOrderResultDetail>) findPage("searchJtOrderList", "searchJtOrderListCount", params, pageNo, pageSize);
  176. }
  177. /*
  178. * userType-----0-购买者 1-出售者 2-管理员
  179. *
  180. * */
  181. @SuppressWarnings("unchecked")
  182. @Override
  183. public Pagination<JtOrderResultDetail> appSearchOrderList(Integer orderType,Integer userType,Integer pageNo,Integer pageSize){
  184. Map<String, Object>params=new HashMap<>();
  185. if(pageNo==null ||pageNo<1)pageNo=1;
  186. if(pageSize==null || pageSize<1)pageSize=10;
  187. if(userType==0) {
  188. //购买者 将买家姓名置空,购买id为当前id进行搜索
  189. params.put("buyerId", TokenManager.getUserId());
  190. // params.put("buyerId", "1");
  191. }
  192. else if(userType==1) {
  193. //出售者 将卖家姓名置空,出售者id为当前id进行搜索
  194. params.put("sellerId", TokenManager.getUserId());
  195. }
  196. if(orderType!=null && ((orderType>=0 && orderType<=6)|| orderType==10))params.put("orderType", orderType);
  197. Pagination<JtOrderResultDetail>p = (Pagination<JtOrderResultDetail>) findPage("searchJtOrderList", "searchJtOrderListCount", params, pageNo, pageSize);
  198. List<JtOrderResultDetail> l=(List<JtOrderResultDetail>) p.getList();
  199. for (JtOrderResultDetail j : l) {
  200. if (null!=j.getCommodityType()) {
  201. if (j.getCommodityType()==1||j.getCommodityType()==0) {
  202. JtBusinessProject bp=JtBusinessProjectMapper.selectByPrimaryKey(j.getCommodityId());
  203. j.setImgUrl(bp.getMinImgUrl());
  204. }else if (j.getCommodityType()==2) {
  205. Achievement a=achievementMapper.selectByPrimaryKey(j.getCommodityId());
  206. j.setImgUrl(a.getTechnicalPictureUrl());
  207. }else if (j.getCommodityType()==3) {
  208. Demand d=demandMapper.selectByPrimaryKey(j.getCommodityId());
  209. j.setImgUrl(d.getPictureUrl());
  210. }
  211. }
  212. }
  213. return p;
  214. }
  215. }