dongbw 7 лет назад
Родитель
Сommit
992ac89750

+ 85 - 0
src/main/java/com/uas/platform/b2c/prod/product/kind/controller/KindConcernController.java

@@ -0,0 +1,85 @@
+package com.uas.platform.b2c.prod.product.kind.controller;
+
+import com.uas.platform.b2c.prod.product.kind.model.KindConcern;
+import com.uas.platform.b2c.prod.product.kind.service.KindConcernService;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.PageParams;
+import com.uas.sso.support.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 类目相关接口
+ * @author  dongbw
+ * 18/06/13 16:02.
+ */
+@RequestMapping("/produce/kindConcern")
+@RestController
+public class KindConcernController {
+
+    @Autowired
+    private KindConcernService kindConcernService;
+
+    /**
+     * 已关注
+     */
+    private static final String HAS_CONCERN = "yes";
+
+    /**
+     * 未关注
+     */
+    private static final String NOT_CONCERN = "no";
+
+    /**
+     * 添加关注
+     */
+    private static final String ADD_CONCERN = "add";
+
+    /**
+     * 删除关注
+     */
+    private static final String DEL_CONCERN = "del";
+
+
+    /**
+     * 根据分页参数和关键词查询已关注类目
+     * @param pageParams  分页参数
+     * @param keyword  关键词
+     * @param enUU 企业UU
+     * @return
+     */
+    @RequestMapping(value = "/list", method = RequestMethod.GET)
+    public Page<KindConcern> getConcernKindByPage(PageParams pageParams, String keyword, Long enUU, String type) {
+        if (HAS_CONCERN.equals(type)) {
+            return kindConcernService.getConcernKindByPage(pageParams, keyword, enUU);
+        } else if (NOT_CONCERN.equals(type)) {
+            return kindConcernService.getNotConcernKindByPage(pageParams, keyword, enUU);
+        }
+        return null;
+    }
+
+    /**
+     * 设置关注、取消关注接口
+     * @param kindConcern  类目关注实体
+     * @return
+     */
+    @RequestMapping(value = "/modify", method = RequestMethod.POST)
+    public ModelMap addKindConcern(@RequestBody KindConcern kindConcern) {
+        // status 为0,说明是未关注类目
+        if (Constant.NO == kindConcern.getStatus()) {
+            return kindConcernService.addKindConcern(kindConcern);
+        } else if (Constant.YES == kindConcern.getStatus()) {
+            return kindConcernService.deleteKindConcern(kindConcern);
+        }
+        ModelMap map = new ModelMap();
+        map.put("success", false);
+        map.put("message", "参数错误");
+        return map;
+    }
+
+}
+

+ 26 - 0
src/main/java/com/uas/platform/b2c/prod/product/kind/dao/KindConcernDao.java

@@ -0,0 +1,26 @@
+package com.uas.platform.b2c.prod.product.kind.dao;
+
+import com.uas.platform.b2c.prod.product.kind.model.KindConcern;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 类目关注Dao
+ * @author dongbw
+ */
+@Repository
+public interface KindConcernDao extends JpaRepository<KindConcern, Long>, JpaSpecificationExecutor<KindConcern> {
+
+    /**
+     * 根据企业UU获取本企业所有已收藏类目名称
+     * @param enUU  企业UU
+     * @return 名称List
+     */
+    @Query("select k.nameCn from KindConcern k where k.enUU = :enUU and k.status = 1")
+    List<String> findNameByEnUU(@Param("enUU") Long enUU);
+}

+ 128 - 0
src/main/java/com/uas/platform/b2c/prod/product/kind/model/KindConcern.java

@@ -0,0 +1,128 @@
+package com.uas.platform.b2c.prod.product.kind.model;
+
+
+import com.uas.platform.core.model.Constant;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 类目关注
+ *
+ * @author dongbw
+ * @version 2018年6月13日 15:50:23
+ */
+@Entity
+@Table(name = "product$kind_concern", indexes = {
+        @Index(name = "unique_kindconcern_enuu_name", columnList = "kc_enuu, kc_name", unique = true)})
+public class KindConcern {
+
+    /**
+     * default serialVersionUID
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "kc_id")
+    private Long id;
+
+    /**
+     * 中文类目名称
+     */
+    @Column(name = "kc_name")
+    private String nameCn;
+
+    /**
+     * 英文类目名称
+     */
+    @Column(name = "kc_name_en")
+    private String nameEn;
+
+    /**
+     * 所属企业UU
+     */
+    @Column(name = "kc_enuu")
+    private Long enUU;
+
+    /**
+     * 关注状态 (1已关注 0 未关注)
+     */
+    @Column(name = "kc_status")
+    private Short status = 1;
+
+    /**
+     * 最近更新时间
+     */
+    @Column(name = "kc_date")
+    private Date date;
+
+    public KindConcern() {
+
+    }
+
+    public KindConcern(Kind kind) {
+        this.date = new Date();
+        this.nameCn = kind.getNameCn();
+        this.nameEn = kind.getNameEn();
+        this.status = Constant.NO;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getNameCn() {
+        return nameCn;
+    }
+
+    public void setNameCn(String nameCn) {
+        this.nameCn = nameCn;
+    }
+
+    public String getNameEn() {
+        return nameEn;
+    }
+
+    public void setNameEn(String nameEn) {
+        this.nameEn = nameEn;
+    }
+
+    public Long getEnUU() {
+        return enUU;
+    }
+
+    public void setEnUU(Long enUU) {
+        this.enUU = enUU;
+    }
+
+    public Short getStatus() {
+        return status;
+    }
+
+    public void setStatus(Short status) {
+        this.status = status;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+}

+ 46 - 0
src/main/java/com/uas/platform/b2c/prod/product/kind/service/KindConcernService.java

@@ -0,0 +1,46 @@
+package com.uas.platform.b2c.prod.product.kind.service;
+
+import com.uas.platform.b2c.prod.product.kind.model.KindConcern;
+import com.uas.platform.core.model.PageParams;
+import com.uas.sso.support.Page;
+import org.springframework.ui.ModelMap;
+
+/**
+ * 类目关注接口
+ * @author dongbw
+ */
+public interface KindConcernService {
+
+
+    /**
+     * 添加关注
+     * @param kindConcern 实体
+     * @return 处理结果
+     */
+    ModelMap addKindConcern(KindConcern kindConcern);
+
+    /**
+     * 取消关注
+     * @param kindConcern 实体
+     * @return 处理结果
+     */
+    ModelMap deleteKindConcern(KindConcern kindConcern);
+
+    /**
+     * 获取未关注类目列表
+     * @param pageParams  分页参数
+     * @param keyword  关键词
+     * @param enUU 企业UU
+     * @return 类目收藏分页
+     */
+    Page<KindConcern> getNotConcernKindByPage(PageParams pageParams, String keyword, Long enUU);
+
+    /**
+     * 获取已关注类目列表
+     * @param pageParams  分页参数
+     * @param keyword  关键词
+     * @param enUU 企业UU
+     * @return 类目收藏分页
+     */
+    Page<KindConcern> getConcernKindByPage(PageParams pageParams, String keyword, Long enUU);
+}

+ 190 - 0
src/main/java/com/uas/platform/b2c/prod/product/kind/service/impl/KindConcernServiceImpl.java

@@ -0,0 +1,190 @@
+package com.uas.platform.b2c.prod.product.kind.service.impl;
+
+import com.uas.platform.b2c.prod.product.kind.dao.KindConcernDao;
+import com.uas.platform.b2c.prod.product.kind.dao.KindDao;
+import com.uas.platform.b2c.prod.product.kind.model.Kind;
+import com.uas.platform.b2c.prod.product.kind.model.KindConcern;
+import com.uas.platform.b2c.prod.product.kind.service.KindConcernService;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.platform.core.persistence.criteria.PredicateUtils;
+import com.uas.sso.support.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 类目接口实现
+ *
+ * @author dongbw
+ * @version 2018年6月13日 16:11:21
+ */
+@Service
+public class KindConcernServiceImpl implements KindConcernService {
+
+    @Autowired
+    private KindConcernDao kindConcernDao;
+
+    @Autowired
+    private KindDao kindDao;
+
+
+    /**
+     * 添加关注
+     *
+     * @param kindConcern 实体
+     * @return 处理结果
+     */
+    @Override
+    public ModelMap addKindConcern(KindConcern kindConcern) {
+        ModelMap map = new ModelMap();
+        try {
+            if (null == kindConcern) {
+               map.put("success", false);
+               map.put("message", "传入参数为空");
+               return map;
+            }
+            if (null == kindConcern.getEnUU()) {
+                map.put("success", false);
+                map.put("message", "传入企业为空");
+                return map;
+            }
+            if (StringUtils.isEmpty(kindConcern.getNameCn())) {
+                map.put("success", false);
+                map.put("message", "传入类目名称为空");
+                return map;
+            }
+            kindConcern.setDate(new Date());
+            kindConcern.setStatus(Constant.YES);
+            kindConcernDao.save(kindConcern);
+            map.put("success", true);
+            return map;
+        } catch (Exception e) {
+            e.printStackTrace();
+            map.put("success", false);
+            map.put("message", e.getMessage());
+            return map;
+        }
+    }
+
+    /**
+     * 取消关注
+     *
+     * @param kindConcern 实体
+     * @return 处理结果
+     */
+    @Override
+    public ModelMap deleteKindConcern(KindConcern kindConcern) {
+        ModelMap map = new ModelMap();
+        try {
+            if (null == kindConcern) {
+                map.put("success", false);
+                map.put("message", "传入参数为空");
+                return map;
+            }
+            if (null == kindConcern.getId()) {
+                map.put("success", false);
+                map.put("message", "传入id为空");
+                return map;
+            }
+            if (null == kindConcern.getEnUU()) {
+                map.put("success", false);
+                map.put("message", "传入企业为空");
+                return map;
+            }
+            if (StringUtils.isEmpty(kindConcern.getNameCn())) {
+                map.put("success", false);
+                map.put("message", "传入类目名称为空");
+                return map;
+            }
+            KindConcern concern = kindConcernDao.findOne(kindConcern.getId());
+            if (null != concern) {
+                kindConcernDao.delete(concern);
+                map.put("success", true);
+                return map;
+            } else {
+                map.put("success", false);
+                map.put("message", "未找到对应id的记录");
+                return map;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            map.put("success", false);
+            map.put("message", e.getMessage());
+            return map;
+        }
+    }
+
+    /**
+     * 获取未关注类目列表
+     *
+     * @param pageParams 分页参数
+     * @param keyword    关键词
+     * @param enUU 企业UU
+     * @return 类目收藏分页
+     */
+    @Override
+    public Page<KindConcern> getNotConcernKindByPage(PageParams pageParams, String keyword, Long enUU) {
+        final PageInfo pageInfo = new PageInfo(pageParams);
+        if (!StringUtils.isEmpty(keyword)) {
+            pageInfo.expression(PredicateUtils.like("nameCn", keyword, false));
+        }
+        pageInfo.expression(PredicateUtils.eq("isLeaf", Constant.YES, false));
+        List<String> kindConcernNameList = kindConcernDao.findNameByEnUU(enUU);
+        if (!CollectionUtils.isEmpty(kindConcernNameList)) {
+            pageInfo.expression(PredicateUtils.notIn("nameCn", kindConcernNameList, false));
+        }
+        org.springframework.data.domain.Page<Kind> kindPage = kindDao.findAll(new Specification<Kind>() {
+            @Override
+            public Predicate toPredicate(Root<Kind> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                query.where(pageInfo.getPredicates(root, query, cb));
+                return null;
+            }
+        }, pageInfo);
+        List<KindConcern> kindConcerns = new ArrayList<>();
+        for (Kind kind : kindPage.getContent()) {
+            KindConcern kindConcern = new KindConcern(kind);
+            kindConcern.setEnUU(enUU);
+            kindConcerns.add(kindConcern);
+        }
+        return new Page<>(kindPage.getNumber(), kindPage.getSize(), kindConcerns, (int) kindPage.getTotalElements());
+    }
+
+    /**
+     * 获取已关注类目列表
+     *
+     * @param pageParams 分页参数
+     * @param keyword    关键词
+     * @param enUU 企业UU
+     * @return 类目收藏分页
+     */
+    @Override
+    public Page<KindConcern> getConcernKindByPage(PageParams pageParams, String keyword, Long enUU) {
+        final PageInfo pageInfo = new PageInfo(pageParams);
+        if (!StringUtils.isEmpty(keyword)) {
+            pageInfo.expression(PredicateUtils.like("nameCn", keyword, false));
+        }
+        pageInfo.expression(PredicateUtils.eq("enUU", enUU, false));
+        pageInfo.expression(PredicateUtils.eq("status", Constant.YES, false));
+        org.springframework.data.domain.Page<KindConcern> kindConcernPage = kindConcernDao.findAll(new Specification<KindConcern>() {
+            @Override
+            public Predicate toPredicate(Root<KindConcern> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                query.where(pageInfo.getPredicates(root, query, cb));
+                return null;
+            }
+        }, pageInfo);
+        return new Page<KindConcern>(kindConcernPage.getNumber(), kindConcernPage.getSize(), kindConcernPage.getContent(), (int) kindConcernPage.getTotalElements());
+    }
+}