ApiGoodsService.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. package com.kmall.api.service;
  2. import com.google.common.collect.Maps;
  3. import com.kmall.api.dao.ApiGoodsMapper;
  4. import com.kmall.api.dto.GoodsDetailDto;
  5. import com.kmall.api.entity.*;
  6. import com.kmall.api.entity.mk.MkStorePromStatVo;
  7. import com.kmall.api.entity.mk.MkStorePromVisitorsVo;
  8. import com.kmall.api.entity.mk.MkStorePromVo;
  9. import com.kmall.api.service.mk.ApiMkStorePromService;
  10. import com.kmall.api.service.mk.ApiMkStorePromStatService;
  11. import com.kmall.api.service.mk.ApiMkStorePromVisitorsService;
  12. import com.kmall.api.util.StockUtil;
  13. import com.kmall.common.utils.DateUtils;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import java.util.Date;
  17. import java.util.List;
  18. import java.util.Map;
  19. @Service
  20. public class ApiGoodsService {
  21. @Autowired
  22. private ApiGoodsMapper goodsDao;
  23. @Autowired
  24. private ApiGoodsIssueService goodsIssueService;
  25. @Autowired
  26. private ApiAttributeService attributeService;
  27. @Autowired
  28. private ApiCommentService commentService;
  29. @Autowired
  30. private ApiUserService userService;
  31. @Autowired
  32. private ApiCommentPictureService commentPictureService;
  33. @Autowired
  34. private ApiCollectService collectService;
  35. @Autowired
  36. private ApiFootprintService footprintService;
  37. @Autowired
  38. private ApiCouponService apiCouponService;
  39. @Autowired
  40. private ApiUserCouponService apiUserCouponService;
  41. @Autowired
  42. private ApiFreightService apiFreightService;
  43. @Autowired
  44. private ApiMkStorePromVisitorsService apiMkStorePromVisitorsService;
  45. @Autowired
  46. private ApiBrandService apiBrandService;
  47. @Autowired
  48. private ApiGoodsSpecificationService goodsSpecificationService;
  49. @Autowired
  50. private ApiProductService productService;
  51. @Autowired
  52. private ApiGoodsGalleryService goodsGalleryService;
  53. @Autowired
  54. private ApiCartService cartService;
  55. @Autowired
  56. private ApiMkStorePromStatService apiMkStorePromStatService;
  57. @Autowired
  58. private ApiMkStorePromService apiMkStorePromService;
  59. public GoodsVo queryObject(Long id) {
  60. return goodsDao.queryObject(id);
  61. }
  62. public GoodsVo queryObjectByStoreId(Long id,Long storeId) {
  63. return goodsDao.queryObjectByStoreId(id,storeId);
  64. }
  65. public List<GoodsVo> queryList(Map<String, Object> map) {
  66. return goodsDao.queryList(map);
  67. }
  68. public int queryTotal(Map<String, Object> map) {
  69. return goodsDao.queryTotal(map);
  70. }
  71. public void save(GoodsVo goods) {
  72. goodsDao.save(goods);
  73. }
  74. public void update(GoodsVo goods) {
  75. goodsDao.update(goods);
  76. }
  77. public void delete(Integer id) {
  78. goodsDao.delete(id);
  79. }
  80. public void deleteBatch(Integer[] ids) {
  81. goodsDao.deleteBatch(ids);
  82. }
  83. public List<GoodsVo> queryHotGoodsList(Map<String, Object> map) {
  84. return goodsDao.queryHotGoodsList(map);
  85. }
  86. public List<GoodsVo> queryCatalogProductList(Map<String, Object> map) {
  87. return goodsDao.queryCatalogProductList(map);
  88. }
  89. public Integer selectCountByCatalogProductList(Map<String, Object> map){
  90. return goodsDao.selectCountByCatalogProductList(map);
  91. }
  92. public Map detail(GoodsVo info, GoodsDetailDto detailDto){
  93. Long userId = detailDto.getUserId();
  94. Long referrer = detailDto.getReferrer();
  95. String merchSn = detailDto.getMerchSn();
  96. Long storeId = detailDto.getStoreId();
  97. Integer promId = detailDto.getPromId();
  98. Long id = detailDto.getId();
  99. Map<String, Object> resultObj = Maps.newHashMap();
  100. BrandVo brand = apiBrandService.queryObject(info.getBrand_id());
  101. resultObj.put("brand", brand);
  102. List<Map> specificationList = goodsSpecificationService.queryByGoodsIdGroupByNames(id);
  103. //查询产品信息
  104. Map param = Maps.newHashMap();
  105. param.put("goods_id", id);
  106. param.put("store_id", storeId);
  107. List<ProductVo> productEntityList = productService.queryList(param);
  108. //团购
  109. List<GoodsGalleryVo> gallery = goodsGalleryService.queryList(param);
  110. resultObj.put("gallery", gallery);
  111. Map ngaParam = Maps.newHashMap();
  112. ngaParam.put("fields", "nga.value, na.name");
  113. ngaParam.put("sidx", "nga.id");
  114. ngaParam.put("order", "asc");
  115. ngaParam.put("goods_id", id);
  116. List<AttributeVo> attribute = attributeService.queryList(ngaParam);
  117. //商品问答
  118. Map issueParam = Maps.newHashMap();
  119. issueParam.put("merch_sn", merchSn);
  120. List<GoodsIssueVo> issue = goodsIssueService.queryList(issueParam);
  121. //商品评论
  122. param.put("value_id", id);
  123. param.put("type_id", 0);
  124. Integer commentCount = commentService.queryTotal(param);
  125. List<CommentVo> hotComment = commentService.queryList(param);
  126. Map commentInfo = Maps.newHashMap();
  127. if (null != hotComment && hotComment.size() > 0) {
  128. UserVo commentUser = userService.queryObject(hotComment.get(0).getUserId());
  129. commentInfo.put("content", hotComment.get(0).getContent());
  130. commentInfo.put("add_time", DateUtils.timeToStr(hotComment.get(0).getAddTime(), DateUtils.PATTERN_YYYY_MM_DD_HH_MM));
  131. commentInfo.put("nickname", commentUser.getNickname());
  132. commentInfo.put("avatar", commentUser.getAvatar());
  133. Map paramPicture = Maps.newHashMap();
  134. paramPicture.put("comment_id", hotComment.get(0).getId());
  135. List<CommentPictureVo> commentPictureEntities = commentPictureService.queryList(paramPicture);
  136. commentInfo.put("pic_list", commentPictureEntities);
  137. }
  138. Map comment = Maps.newHashMap();
  139. comment.put("count", commentCount);
  140. comment.put("data", commentInfo);
  141. //当前用户是否收藏
  142. Map collectParam = Maps.newHashMap();
  143. collectParam.put("user_id", userId);
  144. collectParam.put("value_id", id);
  145. collectParam.put("type_id", 0);
  146. Integer userHasCollect = collectService.queryTotal(collectParam);
  147. if (userHasCollect > 0) {
  148. userHasCollect = 1;
  149. }
  150. //记录用户的足迹
  151. FootprintVo footprintEntity = new FootprintVo();
  152. footprintEntity.setAdd_time(System.currentTimeMillis() / 1000);
  153. footprintEntity.setGoods_brief(info.getGoods_brief());
  154. footprintEntity.setList_pic_url(info.getList_pic_url());
  155. footprintEntity.setGoods_id(id);
  156. footprintEntity.setName(info.getName());
  157. footprintEntity.setRetail_price(info.getRetail_price());
  158. footprintEntity.setUser_id(userId);
  159. if (null != referrer) {
  160. footprintEntity.setReferrer(referrer);
  161. } else {
  162. footprintEntity.setReferrer(0L);
  163. }
  164. footprintService.save(footprintEntity);
  165. String isStockShare = StockUtil.getIsStockShareByGoodsVo(info);
  166. Map cartMap= Maps.newHashMap();
  167. cartMap.put("user_id",userId);
  168. cartMap.put("goods_id",id);
  169. cartMap.put("store_id", storeId);
  170. cartMap.put("isStockShare", isStockShare);
  171. cartMap.put("goodsBizType", info.getGoodsBizType());
  172. List<CartVo> cartVoList = cartService.queryList(cartMap);
  173. FreightEntity freightEntity = apiFreightService.queryObjectByGoodsId(id, storeId);
  174. Integer stockNum = StockUtil.setStockNumByGoodsVo(info);
  175. if(com.kmall.common.utils.StringUtils.isNotEmpty(String.valueOf(promId))){
  176. MkStorePromVo mkStorePromVo = apiMkStorePromService.queryObject(promId);
  177. MkStorePromStatVo mkStorePromStatVo = new MkStorePromStatVo();
  178. if(mkStorePromVo != null) {
  179. //记录渠道推广浏览量
  180. MkStorePromStatVo statVo = apiMkStorePromStatService.queryObjectByPromId(mkStorePromVo.getPromId());
  181. //记录推广访客数据
  182. MkStorePromVisitorsVo visitorsVo = apiMkStorePromVisitorsService.queryObjectByPromIdAndUserId(promId ,
  183. Integer.parseInt(String.valueOf(userId)));
  184. if(visitorsVo == null){
  185. MkStorePromVisitorsVo promVisitorsVo = new MkStorePromVisitorsVo();
  186. promVisitorsVo.setPromId(promId);
  187. promVisitorsVo.setUserId(Integer.parseInt(String.valueOf(userId)));
  188. promVisitorsVo.setIsValid("0");
  189. promVisitorsVo.setCreateTime(new Date());
  190. promVisitorsVo.setModTime(new Date());
  191. apiMkStorePromVisitorsService.save(promVisitorsVo);
  192. }
  193. Integer visitNum = apiMkStorePromVisitorsService.queryCountByPromId(mkStorePromVo.getPromId());
  194. mkStorePromStatVo.setReferrer(Integer.parseInt(String.valueOf(referrer)));
  195. mkStorePromStatVo.setVisitPageDeep(1);
  196. if(statVo != null){
  197. mkStorePromStatVo.setBrowseNum(statVo.getBrowseNum()+1);
  198. mkStorePromStatVo.setVisitNum(visitNum);
  199. mkStorePromStatVo.setRelaBrowseNum(statVo.getRelaBrowseNum()+1);//连带浏览量
  200. mkStorePromStatVo.setRelaVisitorNum(visitNum);//连带访客量
  201. mkStorePromStatVo.setTransVisitorNum(visitNum);//转发访客量:用户转发了带有推广id的商品,其他的用户点击的访客量
  202. mkStorePromStatVo.setPromStatId(statVo.getPromStatId());
  203. apiMkStorePromStatService.update(mkStorePromStatVo);
  204. }else {
  205. mkStorePromStatVo.setStoreId(Integer.parseInt(String.valueOf(storeId)));
  206. mkStorePromStatVo.setPromId(mkStorePromVo.getPromId());
  207. mkStorePromStatVo.setBrowseNum(1);
  208. mkStorePromStatVo.setVisitNum(visitNum);
  209. mkStorePromStatVo.setRelaBrowseNum(1);//连带浏览量
  210. mkStorePromStatVo.setRelaVisitorNum(visitNum);//连带访客量
  211. mkStorePromStatVo.setTransVisitorNum(visitNum);//转发访客量:用户转发了带有推广id的商品,其他的用户点击的访客量
  212. mkStorePromStatVo.setIsValid("0");
  213. apiMkStorePromStatService.save(mkStorePromStatVo);
  214. }
  215. }
  216. }
  217. info.setStock_num(stockNum);
  218. resultObj.put("info", info);
  219. resultObj.put("attribute", attribute);
  220. resultObj.put("userHasCollect", userHasCollect);
  221. resultObj.put("issue", issue);
  222. resultObj.put("comment", comment);
  223. resultObj.put("specificationList", specificationList);
  224. resultObj.put("productList", productEntityList);
  225. resultObj.put("stockNum", stockNum);
  226. resultObj.put("cartNumber", cartVoList.size() != 0 ? cartVoList.get(0).getNumber():0);
  227. resultObj.put("defaultFreight", freightEntity != null? freightEntity.getDefaultFreight() :0);
  228. return resultObj;
  229. }
  230. }