|
@@ -0,0 +1,256 @@
|
|
|
|
+package com.txz.mall.controller.appcontroller;
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.txz.mall.core.AuthService;
|
|
|
|
+import com.txz.mall.core.Result;
|
|
|
|
+import com.txz.mall.core.ServiceException;
|
|
|
|
+import com.txz.mall.dto.MidFavoriteDTO;
|
|
|
|
+import com.txz.mall.model.MidFavorite;
|
|
|
|
+import com.txz.mall.model.StoreCombination;
|
|
|
|
+import com.txz.mall.model.StoreProduct;
|
|
|
|
+import com.txz.mall.service.MidFavoriteService;
|
|
|
|
+
|
|
|
|
+import com.txz.mall.core.ResultCode;
|
|
|
|
+
|
|
|
|
+import com.github.pagehelper.PageHelper;
|
|
|
|
+import com.github.pagehelper.PageInfo;
|
|
|
|
+import com.txz.mall.service.StoreCombinationService;
|
|
|
|
+import com.txz.mall.service.StoreProductService;
|
|
|
|
+import com.txz.mall.util.EasyToUseUtil;
|
|
|
|
+import com.txz.mall.web.bo.MidFavoriteBO;
|
|
|
|
+import com.txz.mall.web.param.BasePageParam;
|
|
|
|
+import com.txz.mall.web.param.MidFavoriteParam;
|
|
|
|
+import com.txz.mall.web.param.TopLevelEntity;
|
|
|
|
+import com.txz.mall.web.param.addparam.MidFavoriteAddParam;
|
|
|
|
+import io.swagger.annotations.ApiModelProperty;
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
|
+import io.swagger.annotations.Api;
|
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
|
+import tk.mybatis.mapper.entity.Condition;
|
|
|
|
+import tk.mybatis.mapper.entity.Example.Criteria;
|
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+* Created by CodeGenerator on 2025/08/13.
|
|
|
|
+*/
|
|
|
|
+@Api(tags = "[后台]midFavorite管理")
|
|
|
|
+@RestController
|
|
|
|
+@RequestMapping("/mid/favorite")
|
|
|
|
+public class MidFavoriteController {
|
|
|
|
+
|
|
|
|
+ private static Logger log = LoggerFactory.getLogger(MidFavoriteController.class);
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private MidFavoriteService midFavoriteService;
|
|
|
|
+ @Resource
|
|
|
|
+ private StoreCombinationService storeCombinationService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private StoreProductService storeProductService;
|
|
|
|
+
|
|
|
|
+ @PostMapping("/add")
|
|
|
|
+ @ApiOperation(value = "midFavorite新增")
|
|
|
|
+ public Result add(@RequestBody MidFavoriteAddParam midFavoriteAddParam) {
|
|
|
|
+ if(ObjectUtils.isEmpty(midFavoriteAddParam)){
|
|
|
|
+ return Result.fail(ResultCode.OBJECT_IS_NULL);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(CollectionUtils.isEmpty(midFavoriteAddParam.getProductIdList())){
|
|
|
|
+ return Result.fail(ResultCode.OBJECT_IS_NULL);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Condition condition3 = new Condition(StoreCombination.class);
|
|
|
|
+ Criteria criteria3 = condition3.createCriteria();
|
|
|
|
+ criteria3.andEqualTo("isDelete", 0);
|
|
|
|
+ criteria3.andIn("id",midFavoriteAddParam.getProductIdList());
|
|
|
|
+
|
|
|
|
+ Map<Long, StoreProduct> productId_StoreProduct= new HashMap<>();
|
|
|
|
+ List<StoreProduct> storeProductList = storeProductService.findByCondition(condition3);
|
|
|
|
+ if(CollectionUtils.isEmpty(storeProductList)){
|
|
|
|
+ throw new ServiceException("商品id不存在");
|
|
|
|
+ }
|
|
|
|
+ Long tokenUserId = AuthService.getTokenUserId(null);
|
|
|
|
+ Condition condition = new Condition(MidFavorite.class);
|
|
|
|
+ Criteria criteria = condition.createCriteria();
|
|
|
|
+ criteria.andEqualTo("isValid", 1);
|
|
|
|
+ criteria.andEqualTo("userId",tokenUserId);
|
|
|
|
+ criteria.andIn("productId",midFavoriteAddParam.getProductIdList());
|
|
|
|
+
|
|
|
|
+ List<MidFavorite> list = midFavoriteService.findByCondition(condition);
|
|
|
|
+ if(!CollectionUtils.isEmpty(list)){
|
|
|
|
+ throw new ServiceException("重复收藏同样的商品");
|
|
|
|
+ }
|
|
|
|
+ List<MidFavorite> midFavoriteList = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ List<Long> productIdList = midFavoriteAddParam.getProductIdList();
|
|
|
|
+ for (Long l : productIdList) {
|
|
|
|
+ MidFavorite midFavorite = new MidFavorite();
|
|
|
|
+ EasyToUseUtil.appCreateAssignment(midFavorite);
|
|
|
|
+ midFavorite.setProductId(l);
|
|
|
|
+ midFavoriteList.add(midFavorite);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ midFavoriteService.save(midFavoriteList);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("新增对象midFavorite操作异常e:{}",e);
|
|
|
|
+ return Result.fail(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
|
+ }
|
|
|
|
+ return Result.success();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @DeleteMapping("/delete")
|
|
|
|
+ @ApiOperation(value = "midFavorite删除")
|
|
|
|
+ public Result delete(@RequestParam Long id) {
|
|
|
|
+ if(id == null){
|
|
|
|
+ return Result.fail(ResultCode.ID_IS_NULL);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ MidFavorite midFavorite = new MidFavorite();
|
|
|
|
+ EasyToUseUtil.appDeleteAssignment(midFavorite);
|
|
|
|
+ midFavorite.setId(id);
|
|
|
|
+ midFavoriteService.update(midFavorite);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("midFavorite删除对象操作异常e:{}",e);
|
|
|
|
+ return Result.fail(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
|
+ }
|
|
|
|
+ return Result.success();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+// @PutMapping("/update")
|
|
|
|
+// @ApiOperation(value = "midFavorite更新")
|
|
|
|
+// public Result update(@RequestBody MidFavorite midFavorite) {
|
|
|
|
+// if(midFavorite == null){
|
|
|
|
+// return Result.fail(ResultCode.OBJECT_IS_NULL);
|
|
|
|
+// }
|
|
|
|
+// if(midFavorite.getId() == null){
|
|
|
|
+// return Result.fail(ResultCode.ID_IS_NULL);
|
|
|
|
+// }
|
|
|
|
+// try {
|
|
|
|
+// midFavorite.setUpdateTime(new Date());
|
|
|
|
+//// midFavorite.setUpdateUserId(userId);
|
|
|
|
+// midFavoriteService.update(midFavorite);
|
|
|
|
+// } catch (Exception e) {
|
|
|
|
+// log.error("更新对象操作异常e:{}",e);
|
|
|
|
+// return Result.fail(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
|
+// }
|
|
|
|
+// return Result.success();
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+// @GetMapping("/detail")
|
|
|
|
+// @ApiOperation(value = "midFavorite获取详情")
|
|
|
|
+// public Result<MidFavorite> detail(@RequestParam Long id) {
|
|
|
|
+// if(id == null){
|
|
|
|
+// return Result.fail(ResultCode.ID_IS_NULL);
|
|
|
|
+// }
|
|
|
|
+// MidFavorite midFavorite = null;
|
|
|
|
+// try {
|
|
|
|
+// midFavorite = midFavoriteService.findById(id);
|
|
|
|
+// } catch (Exception e) {
|
|
|
|
+// log.error("查询对象操作异常e:{}",e);
|
|
|
|
+// return Result.fail(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
|
+// }
|
|
|
|
+// return Result.success(midFavorite);
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @PostMapping("/list")
|
|
|
|
+ @ApiOperation(value = "midFavorite获取列表")
|
|
|
|
+ public Result list(@RequestBody MidFavoriteParam midFavoriteParam) {
|
|
|
|
+
|
|
|
|
+ Long tokenUserId = AuthService.getTokenUserId(null);
|
|
|
|
+ PageHelper.startPage(midFavoriteParam.getPage(), midFavoriteParam.getSize());
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ Condition condition = new Condition(MidFavorite.class);
|
|
|
|
+ Criteria criteria = condition.createCriteria();
|
|
|
|
+ criteria.andEqualTo("isValid", 1);
|
|
|
|
+ criteria.andEqualTo("userId",tokenUserId);
|
|
|
|
+ condition.setOrderByClause("create_time DESC");
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ PageInfo pageInfo = null;
|
|
|
|
+ try {
|
|
|
|
+ List<MidFavorite> list = midFavoriteService.findByCondition(condition);
|
|
|
|
+
|
|
|
|
+ if(!CollectionUtils.isEmpty(list)){
|
|
|
|
+
|
|
|
|
+ List<Long> productIdList = list.stream().map(MidFavorite::getProductId).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ Condition condition2 = new Condition(StoreCombination.class);
|
|
|
|
+ Criteria criteria2 = condition2.createCriteria();
|
|
|
|
+ criteria2.andEqualTo("isDelete", 0);
|
|
|
|
+ criteria2.andIn("productId",productIdList);
|
|
|
|
+ List<StoreCombination> byCondition = storeCombinationService.findByCondition(condition2);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ Condition condition3 = new Condition(StoreCombination.class);
|
|
|
|
+ Criteria criteria3 = condition3.createCriteria();
|
|
|
|
+ criteria3.andEqualTo("isDelete", 0);
|
|
|
|
+ criteria3.andIn("id",productIdList);
|
|
|
|
+
|
|
|
|
+ Map<Long, StoreProduct> productId_StoreProduct= new HashMap<>();
|
|
|
|
+ List<StoreProduct> storeProductList = storeProductService.findByCondition(condition3);
|
|
|
|
+ if(!CollectionUtils.isEmpty(storeProductList)){
|
|
|
|
+
|
|
|
|
+ productId_StoreProduct = storeProductList.stream().collect(Collectors.toMap(StoreProduct::getId, a -> a, (b, c) -> c));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if(!CollectionUtils.isEmpty(byCondition)){
|
|
|
|
+ Map<Long, StoreCombination> productIdMap = byCondition.stream().collect(Collectors.toMap(StoreCombination::getProductId, a -> a, (c, d) -> d));
|
|
|
|
+ Map<Long, StoreProduct> finalProductId_StoreProduct = productId_StoreProduct;
|
|
|
|
+ List<MidFavoriteBO> resultList = list.stream().map(a -> {
|
|
|
|
+
|
|
|
|
+ MidFavoriteBO bean = new MidFavoriteBO();
|
|
|
|
+ bean.setId(a.getId());
|
|
|
|
+ bean.setProductId(a.getProductId());
|
|
|
|
+ StoreProduct storeProduct = finalProductId_StoreProduct.get(bean.getProductId());
|
|
|
|
+ StoreCombination storeCombination = productIdMap.get(bean.getProductId());
|
|
|
|
+ if(!ObjectUtils.isEmpty(storeCombination)){
|
|
|
|
+ bean.setCId(storeCombination.getId());
|
|
|
|
+ bean.setPrice(storeCombination.getPrice());
|
|
|
|
+ bean.setSales(storeCombination.getSales());
|
|
|
|
+ bean.setImage(storeCombination.getImage());
|
|
|
|
+ bean.setStoreName(storeCombination.getProductName());
|
|
|
|
+ }else if(!ObjectUtils.isEmpty(storeProduct)){
|
|
|
|
+ bean.setImage(storeProduct.getImage());
|
|
|
|
+ bean.setStoreName(storeProduct.getStoreName());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return bean;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ pageInfo = new PageInfo(resultList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("查询对象操作异常e:{}",e);
|
|
|
|
+ return Result.fail(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
|
+ }
|
|
|
|
+ return Result.success(pageInfo);
|
|
|
|
+ }
|
|
|
|
+}
|