‘linchangsheng’ 6 kuukautta sitten
vanhempi
commit
e473f17fd5

+ 150 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/es/CommonListES.java

@@ -0,0 +1,150 @@
+package com.gree.mall.miniapp.bean.es;
+
+/*
+ * 通用列表
+ * */
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.Document;
+import org.springframework.data.elasticsearch.annotations.Field;
+import org.springframework.data.elasticsearch.annotations.FieldType;
+
+/**
+ *  FieldIndex.not_analyzed:不会分词,只能根据原词索引Field;
+ *  FieldIndex.analyzed:根据分词器分词,可以根据原词和分词后的词条索引Field;
+ *  FieldIndex.no:该字段不会被索引,查不到;
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@ApiModel
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Document(indexName = "common_list_v2", type = "_doc", replicas = 1, shards = 1, createIndex = true)
+public class CommonListES {
+
+    @Id
+    @Field(index = false, store = true, type = FieldType.Keyword)//index:设置通过这个字段是否可以进行搜索
+    private String id;
+    /**
+     * 1=标题,2=内容
+     */
+    @ApiModelProperty("1=标题,2=内容")
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String type;
+    //外键id
+    @Field(index = false, store = true, type = FieldType.Integer)
+    private String comListId;
+    @ApiModelProperty("网点编号")
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String websitNumber;
+    @ApiModelProperty("师傅编号")
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String workerNumber;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field1;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field2;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field3;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field4;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field5;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field6;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field7;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field8;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field9;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field10;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field11;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field12;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field13;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field14;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field15;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field16;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field17;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field18;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field19;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field20;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field21;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field22;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field23;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field24;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field25;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field26;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field27;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field28;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field29;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field30;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field31;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field32;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field33;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field34;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field35;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field36;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field37;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field38;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field39;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field40;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field41;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field42;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field43;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field44;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field45;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field46;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field47;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field48;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field49;
+    @Field(index = false, store = true, type = FieldType.Keyword)
+    private String field50;
+
+}

+ 60 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/comlist/WorkerComListController.java

@@ -0,0 +1,60 @@
+package com.gree.mall.miniapp.controller.comlist;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.gree.mall.miniapp.bean.es.CommonListES;
+import com.gree.mall.miniapp.helper.ResponseHelper;
+import com.gree.mall.miniapp.logic.common.WorkerComListLogic;
+import com.gree.mall.miniapp.plus.entity.WorkerComList;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+
+@Slf4j
+@RestController
+@Api(value = "师傅-文件下发", tags ={"师傅-文件下发"} )
+@RequestMapping(value = "/worker/comlist", produces = "application/json; charset=utf-8")
+public class WorkerComListController {
+
+    @Autowired
+    WorkerComListLogic workerComListLogic;
+
+    @GetMapping("/list")
+    @ApiOperation(value = "万能通用附件列表")
+    public ResponseHelper<IPage<WorkerComList>> list(
+            @ApiParam(required = false, value = "师傅编号") @RequestParam(required = false) String workerNumber,
+            @ApiParam(required = false, value = "标题") @RequestParam(required = false) String title,
+            @ApiParam(required = false, value = "备注") @RequestParam(required = false) String remark,
+            @ApiParam(required = false, value = "状态 true=显示 false=隐藏") @RequestParam(required = false) Boolean status,
+            @ApiParam(required = true, value = "页号") @RequestParam(required = true) Integer pageNum,
+            @ApiParam(required = true, value = "页大小") @RequestParam(required = true) Integer pageSize
+
+    ){
+        IPage<WorkerComList> list = workerComListLogic.list(workerNumber,title, status, remark, pageNum, pageSize);
+        return ResponseHelper.success(list);
+    }
+
+
+
+
+    @GetMapping("/record")
+    @ApiOperation(value = "通用列表-明细")
+    public ResponseHelper<List<CommonListES>> record(
+            @ApiParam(required = true, value = "列表id") @RequestParam(required = true) String comListId,
+            @ApiParam(required = true, value = "师傅编号") @RequestParam(required = true) String workerNumber
+    ) throws Exception {
+        List<CommonListES> record = workerComListLogic.record(comListId, workerNumber);
+        return ResponseHelper.success(record);
+    }
+
+
+
+}

+ 96 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/common/WorkerComListLogic.java

@@ -0,0 +1,96 @@
+package com.gree.mall.miniapp.logic.common;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+
+import com.gree.mall.miniapp.bean.es.CommonListES;
+import com.gree.mall.miniapp.bean.user.CurrentCompanyWechat;
+import com.gree.mall.miniapp.logic.es.EsLogic;
+import com.gree.mall.miniapp.plus.entity.WorkerComList;
+import com.gree.mall.miniapp.plus.entity.WorkerComListWebsit;
+import com.gree.mall.miniapp.plus.entity.WorkerComListWorker;
+import com.gree.mall.miniapp.plus.service.AdminWebsitService;
+import com.gree.mall.miniapp.plus.service.WorkerComListService;
+import com.gree.mall.miniapp.plus.service.WorkerComListWebsitService;
+import com.gree.mall.miniapp.plus.service.WorkerComListWorkerService;
+import com.gree.mall.miniapp.utils.oss.OSSUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@Slf4j
+public class WorkerComListLogic {
+
+    @Autowired
+    CommonLogic commonLogic;
+    @Autowired
+    OSSUtil ossUtil;
+    @Autowired
+    EsLogic esLogic;
+    @Autowired
+    WorkerComListService workerComListService;
+    @Autowired
+    WorkerComListWorkerService workerComListWorkerService;
+    @Autowired
+    WorkerComListWebsitService workerComListWebsitService;
+    @Autowired
+    AdminWebsitService adminWebsitService;
+
+
+    /**
+     * 列表
+     */
+    public IPage<WorkerComList> list(String workerNumber, String title, Boolean status, String remark, Integer pageNum, Integer pageSize) {
+        CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
+        List<String> comListIds = new ArrayList<>();
+        if (StringUtils.isNotEmpty(workerNumber)) {
+            //师傅编号不为空以师傅为准
+            List<WorkerComListWorker> worker = workerComListWorkerService.lambdaQuery()
+                    .eq(WorkerComListWorker::getWorkerComListWorkerNumber, workerNumber).list();
+            if (CollectionUtils.isEmpty(worker)) {
+                return new Page<>(pageNum, pageSize);
+            }
+            comListIds = worker.stream().map(WorkerComListWorker::getWorkerComListId).distinct().collect(Collectors.toList());
+        }
+        IPage<WorkerComList> page = workerComListService.lambdaQuery()
+                .like(StringUtils.isNotEmpty(title), WorkerComList::getTitle, title)
+                .eq(status != null, WorkerComList::getStatus, status)
+                .like(StringUtils.isNotEmpty(remark), WorkerComList::getRemark, remark)
+                .in(!CollectionUtils.isEmpty(comListIds), WorkerComList::getId, comListIds)
+                .orderByDesc(WorkerComList::getCreateTime)
+                .page(new Page<>(pageNum, pageSize));
+        return page;
+    }
+
+
+
+    /**
+     * 通用列表明细
+     *
+     * @param comListId
+     * @param workerNumber
+     */
+    public List<CommonListES> record(String comListId, String workerNumber) {
+        List<CommonListES> list = esLogic.list(Arrays.asList(workerNumber), workerNumber, comListId);
+        return list;
+    }
+
+
+
+}

+ 73 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/es/EsLogic.java

@@ -0,0 +1,73 @@
+package com.gree.mall.miniapp.logic.es;
+
+import com.aliyuncs.utils.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.gree.mall.miniapp.bean.es.CommonListES;
+import com.gree.mall.miniapp.utils.CommonUtils;
+import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.index.query.QueryBuilders;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
+import org.springframework.data.elasticsearch.core.SearchHit;
+import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
+import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
+import org.springframework.stereotype.Service;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 操作es
+ */
+
+@Service
+public class EsLogic {
+
+    @Autowired
+    private ElasticsearchRestTemplate elasticsearchRestTemplate;
+
+    public boolean createIndexAndMapping(Class<?> classType) {
+        if(elasticsearchRestTemplate.indexOps(classType).exists()){
+            return true;
+        }
+        boolean b = elasticsearchRestTemplate.indexOps(classType).create();
+        return b;
+    }
+
+
+
+
+    public  List<CommonListES>  list(List<String> websitNumbers,String workerNumber,String comId){
+        //标题
+        BoolQueryBuilder titleQueryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.termQuery("type", "1"));
+        if(StringUtils.isNotEmpty(comId)){
+            titleQueryBuilder.must(QueryBuilders.termQuery("comListId", comId));
+        }
+        //内容
+        BoolQueryBuilder must = QueryBuilders.boolQuery().must(QueryBuilders.termQuery("type", "2"));
+        if(StringUtils.isNotEmpty(comId)){
+            must.must(QueryBuilders.termQuery("comListId", comId));
+        }
+        if(StringUtils.isNotEmpty(workerNumber)){
+            must.must(QueryBuilders.termQuery("workerNumber", workerNumber));
+        }
+        if(CollectionUtils.isNotEmpty(websitNumbers)){
+            must.must(QueryBuilders.termsQuery("websitNumber",websitNumbers));
+        }
+        NativeSearchQuery titleBuild = new NativeSearchQueryBuilder().withQuery(titleQueryBuilder).build();
+        NativeSearchQuery dataBuild = new NativeSearchQueryBuilder().withQuery(must).build();
+
+        List<SearchHit<CommonListES>> searchHits1 = elasticsearchRestTemplate.search(titleBuild, CommonListES.class).getSearchHits();
+        List<SearchHit<CommonListES>> searchHits2 = elasticsearchRestTemplate.search(dataBuild, CommonListES.class).getSearchHits();
+        List<CommonListES> titles = searchHits1.stream().map(SearchHit<CommonListES>::getContent).collect(Collectors.toList());
+        List<CommonListES> datas = searchHits2.stream().map(SearchHit<CommonListES>::getContent).collect(Collectors.toList());
+        titles.addAll(datas);
+
+        return titles;
+    }
+
+
+
+}