Browse Source

Merge remote-tracking branch 'origin/developer' into developer

Aslee 2 years ago
parent
commit
25b396a428

+ 5 - 1
pom.xml

@@ -30,7 +30,11 @@
     </dependencyManagement>
 
     <dependencies>
-		<dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+        <dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-web</artifactId>
 		</dependency>

+ 2 - 0
src/main/java/com/caimei365/commodity/CommodityApplication.java

@@ -3,6 +3,7 @@ package com.caimei365.commodity;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 
 /**
  * `@EnableEurekaClient`: 声明一个Eureka客户端,只能注册到Eureka Server
@@ -13,6 +14,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  */
 @EnableDiscoveryClient
 @SpringBootApplication
+@EnableFeignClients(basePackages = {"com.caimei365.commodity.feign"})
 public class CommodityApplication {
 
     public static void main(String[] args) {

+ 16 - 0
src/main/java/com/caimei365/commodity/annotation/IpSave.java

@@ -0,0 +1,16 @@
+package com.caimei365.commodity.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * @author Administrator
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface IpSave {
+
+    String saveName();
+
+    boolean saveParams();
+}

+ 118 - 0
src/main/java/com/caimei365/commodity/annotation/IpSaveAspect.java

@@ -0,0 +1,118 @@
+package com.caimei365.commodity.annotation;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.caimei365.commodity.feign.ToolsFeign;
+import com.caimei365.commodity.model.dto.MessageDto;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
+import org.springframework.data.redis.core.RedisCallback;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.expression.EvaluationContext;
+import org.springframework.expression.Expression;
+import org.springframework.expression.ExpressionParser;
+import org.springframework.expression.spel.standard.SpelExpressionParser;
+import org.springframework.expression.spel.support.StandardEvaluationContext;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import redis.clients.jedis.commands.JedisCommands;
+import redis.clients.jedis.params.SetParams;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.HashMap;
+
+
+/**
+ *
+ */
+@Slf4j
+@Aspect
+@Component
+public class IpSaveAspect {
+
+    @Resource
+    private ToolsFeign toolsFeign;
+
+    /**
+     * 切入点,根据自定义IpSave实际路径进行调整
+     */
+    @Pointcut("@annotation(com.caimei365.commodity.annotation.IpSave)")
+    public void executeIdempotent() {
+    }
+
+    @Around("executeIdempotent()")
+    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
+        //获取方法对象
+        Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
+        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+        ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;
+        HttpServletRequest request = servletRequestAttributes.getRequest();
+        // ip
+        String unknown = "unknown";
+        String ip = "";
+        ip = request.getHeader("x-forwarded-for");
+        if (StringUtils.isBlank(ip)) {
+            ip = request.getHeader("X-Real-IP");
+        }
+        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
+            ip = request.getHeader("Proxy-Client-IP");
+        }
+
+        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
+            ip = request.getHeader("WL-Proxy-Client-IP");
+        }
+
+        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
+            ip = request.getRemoteAddr();
+        }
+        // 接口路径
+        String requestURI = request.getRequestURI();
+        //获取自定义注解
+        IpSave ipSave = method.getAnnotation(IpSave.class);
+        // 访问名 注解的值
+        String s = ipSave.saveName();
+        // 是否存储发送参数
+        boolean sp = ipSave.saveParams();
+        // 接口真实发送参数
+        String queryString = "";
+        if (sp) {
+            queryString = request.getQueryString();
+        }
+        String mes = "";
+        if (StringUtils.isNotBlank(ip)) {
+            mes += ip + "¥";
+        } else {
+            mes = "¥";
+        }
+        if (StringUtils.isNotBlank(requestURI)) {
+            mes += requestURI + "¥";
+        } else {
+            mes += "¥";
+        }
+        if (StringUtils.isNotBlank(queryString)) {
+            mes += queryString + "¥";
+        } else {
+            mes += "¥";
+        }
+        if (StringUtils.isNotBlank(s)) {
+            mes += s;
+        }
+        //异步给mq存
+        toolsFeign.sendCommonMessage("IpSave", mes, null, 1, 1, null, null);
+
+        return joinPoint.proceed();
+    }
+}
+

+ 13 - 9
src/main/java/com/caimei365/commodity/components/SearchOpenService.java

@@ -77,7 +77,6 @@ public class SearchOpenService {
      * @throws OpenSearchException       exp
      */
     public JSONObject getResultJsonObject(String queryStr, SearchParams searchParams) throws OpenSearchClientException, OpenSearchException {
-        log.info("【阿里云开放搜索】查询参数:"+ searchParams.toString());
         // 创建并构造OpenSearch对象
         OpenSearch openSearch = new OpenSearch(accesskey, secret, host);
         // 创建OpenSearchClient对象,并以OpenSearch对象作为构造参数
@@ -101,7 +100,6 @@ public class SearchOpenService {
         JSONObject result = jsonObj.getJSONObject("result");
         JSONArray errors = jsonObj.getJSONArray("errors");
         log.info(">>>>>>query(" + queryStr + "): " + status + ",request_id=" + requestId + ",errors=" + errors.toString() + ",tracer=" + tracer);
-        log.info("查询结果---------------------------------------------》result: "+result.toString());
         if ("OK".equals(status)) {
             result.put("status", 1);
         } else {
@@ -225,7 +223,7 @@ public class SearchOpenService {
         config.setStart(num - 1);
         config.setHits(size);
         // 设置搜索结果返回应用中哪些字段
-        config.setFetchFields(Lists.newArrayList("id", "p_id", "p_name", "p_image", "p_brand_name", "p_unit", "p_code", "p_price_flag", "p_price_grade", "p_supplier_id", "p_keyword", "p_act_flag", "p_brand_id","p_product_type","p_newvalidflag"));
+        config.setFetchFields(Lists.newArrayList("id", "p_id", "p_name", "p_image", "p_brand_name", "p_unit", "p_code", "p_price_flag", "p_price_grade", "p_supplier_id", "p_keyword", "p_act_flag", "p_brand_id", "p_product_type", "p_newvalidflag"));
         // 注意:config子句中的rerank_size参数,在Rank类对象中设置
         // 设置返回格式为json格式
         config.setSearchFormat(SearchFormat.JSON);
@@ -253,7 +251,10 @@ public class SearchOpenService {
         } else if (identity == 4) {
             // 普通机构
             thisFilter += "(p_visibility=2 OR p_visibility=3) AND p_valid=2 AND p_type=1";
-        } else {
+        }  else if (6 == identity) {
+            //供应商自己主页看商品,不对商品状态进行限制
+            thisFilter += "p_type=1";
+        }else {
             // 游客|所有人
             thisFilter += "p_visibility=3 AND p_valid=2 AND p_type=1";
         }
@@ -337,7 +338,7 @@ public class SearchOpenService {
         // config.setStart(0) scroll该参数不起作用,默认为0
         config.setHits(size);
         // 设置搜索结果返回应用中哪些字段
-        config.setFetchFields(Lists.newArrayList("id", "p_id", "p_name", "p_image", "p_brand_name", "p_unit", "p_code", "p_price_flag", "p_price_grade", "p_supplier_id", "p_keyword", "p_act_flag", "p_brand_id","p_product_type"));
+        config.setFetchFields(Lists.newArrayList("id", "p_id", "p_name", "p_image", "p_brand_name", "p_unit", "p_code", "p_price_flag", "p_price_grade", "p_supplier_id", "p_keyword", "p_act_flag", "p_brand_id", "p_product_type"));
         // 设置返回格式为json格式
         config.setSearchFormat(SearchFormat.JSON);
         // 创建参数对象
@@ -349,18 +350,21 @@ public class SearchOpenService {
         // identity: 0个人,1协销,2会员机构,3供应商,4普通机构,5医美机构
         // p_valid:0逻辑删除 1待审核 2已上架 3已下架 8审核未通过 9已隐身 10已冻结
         // p_visibility:3:所有人可见,2:普通机构可见,1:会员机构可见,4:仅医美机构可见
-        if (identity == 1) {
+        if (1 == identity) {
             // 协销 | 综合供应商
             thisFilter += "(p_valid=2 OR p_valid=3 OR p_valid=9) AND p_type=1";
-        } else if (identity == 5) {
+        } else if (5 == identity) {
             // 医美机构
             thisFilter += "p_valid=2 AND p_type=1";
-        } else if (identity == 2) {
+        } else if (2 == identity) {
             // 会员机构
             thisFilter += "(p_visibility=1 OR p_visibility=2 OR p_visibility=3) ANDp_valid=2 AND p_type=1";
-        } else if (identity == 4) {
+        } else if (4 == identity) {
             // 普通机构
             thisFilter += "(p_visibility=2 OR p_visibility=3) AND p_valid=2 AND p_type=1";
+        } else if (6 == identity) {
+            //供应商自己主页看商品,不对商品状态进行限制
+            thisFilter += "p_type=1";
         } else {
             // 游客|所有人
             thisFilter += "p_visibility=3 AND p_valid=2 AND p_type=1";

+ 3 - 0
src/main/java/com/caimei365/commodity/controller/CouponApi.java

@@ -1,6 +1,7 @@
 package com.caimei365.commodity.controller;
 
 import com.caimei365.commodity.annotation.Idempotent;
+import com.caimei365.commodity.annotation.IpSave;
 import com.caimei365.commodity.model.ResponseJson;
 import com.caimei365.commodity.model.dto.CollarCouponsDto;
 import com.caimei365.commodity.model.dto.RedeemCouponsDto;
@@ -42,6 +43,7 @@ public class CouponApi {
             @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
     })
     @GetMapping("/center")
+    @IpSave(saveName = "领券中心",saveParams = true)
     public ResponseJson<PageInfo<CouponVo>> couponCenter(Integer userId, Integer status,
                                                          @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                          @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
@@ -97,6 +99,7 @@ public class CouponApi {
 
     @ApiOperation("领取优惠券")
     @PostMapping("/collar")
+    @IpSave(saveName = "领取优惠券",saveParams = true)
     @Idempotent(prefix = "idempotent_collarCoupons", keys = {"#couponsDto"}, expire = 5)
     public ResponseJson<String> collarCoupons(CollarCouponsDto couponsDto) {
         if (couponsDto.getCouponId() == null || couponsDto.getSource() == null || couponsDto.getUserId() == null) {

+ 4 - 0
src/main/java/com/caimei365/commodity/controller/ProductPageApi.java

@@ -1,5 +1,6 @@
 package com.caimei365.commodity.controller;
 
+import com.caimei365.commodity.annotation.IpSave;
 import com.caimei365.commodity.annotation.Statistics;
 import com.caimei365.commodity.model.ResponseJson;
 import com.caimei365.commodity.model.po.AnnouncementPo;
@@ -81,6 +82,7 @@ public class ProductPageApi {
             @ApiImplicitParam(required = false, name = "userId", value = "用户id"),
             @ApiImplicitParam(required = false, name = "source", value = "来源:1网站,2小程序")
     })
+    @IpSave(saveName = "首页楼层",saveParams = true)
     @GetMapping("/home/floor")
     public ResponseJson<Map<String, Object>> getHomeData(Integer userId, Integer source) {
         return pageService.getHomeData(userId, source);
@@ -99,6 +101,7 @@ public class ProductPageApi {
 
     })
     @ApiOperation("新品橱窗列表")
+    @IpSave(saveName = "新品橱窗商品列表",saveParams = false)
     @GetMapping("/home/NewFloorList")
     public ResponseJson<PaginationVo<ProductItemVo>> getNewFloorList(Integer source,
                                                                      Integer userId,
@@ -259,6 +262,7 @@ public class ProductPageApi {
             @ApiImplicitParam(required = false, name = "userId", value = "用户id"),
             @ApiImplicitParam(required = false, name = "productId", value = "商品Id")
     })
+    @IpSave(saveName = "商品详情",saveParams = true)
     @Statistics(prefix = "statistics_details", field = "productId")
     @GetMapping("/product/details")
     public ResponseJson<ProductDetailVo> getProductDetails(Integer productId, Integer userId) {

+ 3 - 0
src/main/java/com/caimei365/commodity/controller/PromotionsApi.java

@@ -1,5 +1,6 @@
 package com.caimei365.commodity.controller;
 
+import com.caimei365.commodity.annotation.IpSave;
 import com.caimei365.commodity.model.ResponseJson;
 import com.caimei365.commodity.model.search.ProductListVo;
 import com.caimei365.commodity.model.vo.ProductItemVo;
@@ -39,6 +40,7 @@ public class PromotionsApi {
         @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
         @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
     })
+    @IpSave(saveName = "获取专题活动列表",saveParams = true)
     @GetMapping("/list")
     public ResponseJson<PageInfo<ImageLinkVo>> getPromotionsList(Integer source,
                                                                  @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
@@ -53,6 +55,7 @@ public class PromotionsApi {
      */
     @ApiOperation("获取促销活动详情(旧:/product/promotion/info)")
     @ApiImplicitParam(required = true, name = "promotionsId", value = "促销活动Id")
+    @IpSave(saveName = "获取专题活动详情",saveParams = true)
     @GetMapping("/info")
     public ResponseJson<PromotionsVo> promotionDetails(Integer promotionsId) {
         if (null == promotionsId) {

+ 3 - 0
src/main/java/com/caimei365/commodity/controller/SearchProductApi.java

@@ -1,5 +1,6 @@
 package com.caimei365.commodity.controller;
 
+import com.caimei365.commodity.annotation.IpSave;
 import com.caimei365.commodity.model.ResponseJson;
 import com.caimei365.commodity.model.po.SearchHistoryPo;
 import com.caimei365.commodity.service.SearchProductService;
@@ -71,6 +72,7 @@ public class SearchProductApi {
             @ApiImplicitParam(required = false, name = "sortField", value = "排序字段:价格price,销量sales,人气favorite"),
             @ApiImplicitParam(required = false, name = "sortType", value = "排序规则:1降序,其他升序")
     })
+    @IpSave(saveName = "搜索商品",saveParams = true)
     @GetMapping("/product")
     public ResponseJson<String> queryProductByKeyword(String keyword, String brandIds,
                                                       @RequestParam(value = "identity", defaultValue = "0") Integer identity,
@@ -103,6 +105,7 @@ public class SearchProductApi {
             @ApiImplicitParam(required = false, name = "sortField", value = "排序字段:价格price,销量sales,人气favorite"),
             @ApiImplicitParam(required = false, name = "sortType", value = "排序规则:1降序,其他升序")
     })
+    @IpSave(saveName = "点击分类搜索商品",saveParams = true)
     @GetMapping("/product/type")
     public ResponseJson<String> queryProductByType(Integer id, Integer idType, String brandIds,
                                                    @RequestParam(value = "identity", defaultValue = "0") Integer identity,

+ 4 - 0
src/main/java/com/caimei365/commodity/controller/SecondHandApi.java

@@ -1,6 +1,7 @@
 package com.caimei365.commodity.controller;
 
 import com.caimei365.commodity.annotation.Idempotent;
+import com.caimei365.commodity.annotation.IpSave;
 import com.caimei365.commodity.model.ResponseJson;
 import com.caimei365.commodity.model.dto.SecondDto;
 import com.caimei365.commodity.model.vo.BrandVo;
@@ -44,6 +45,7 @@ public class SecondHandApi {
             @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
             @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
     })
+    @IpSave(saveName = "二手商品列表",saveParams = true)
     @GetMapping("/list")
     public ResponseJson<PaginationVo<SecondListVo>> getSecondHandList(Integer userId, Integer secondHandType, Integer instrumentType, String name,
                                                                       @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
@@ -61,6 +63,7 @@ public class SecondHandApi {
             @ApiImplicitParam(required = true, name = "userId", value = "机构用户id"),
             @ApiImplicitParam(required = true, name = "productId", value = "商品Id")
     })
+    @IpSave(saveName = "获取二手商品详情",saveParams = true)
     @GetMapping("/detail")
     public ResponseJson<SecondDetailVo> getSecondDetail(Integer userId, Integer productId) {
         return secondHandService.getSecondHandDetail(userId, productId);
@@ -102,6 +105,7 @@ public class SecondHandApi {
      * @param headers   HttpHeaders
      */
     @ApiOperation("发布二手商品(旧:/product/releaseSecondHandProduct)")
+    @IpSave(saveName = "发布二手商品",saveParams = false)
     @Idempotent(prefix = "idempotent_secondhand", keys = {"#secondDto"}, expire = 5)
     @PostMapping("/release")
     public ResponseJson releaseSecondHand(SecondDto secondDto, @RequestHeader HttpHeaders headers) {

+ 23 - 0
src/main/java/com/caimei365/commodity/feign/ToolsFeign.java

@@ -0,0 +1,23 @@
+package com.caimei365.commodity.feign;
+
+import com.caimei365.commodity.model.dto.MessageDto;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/9/8
+ */
+@FeignClient("CAIMEI365-CLOUD-TOOLS")
+public interface ToolsFeign {
+    /**
+     * 请求发消息
+     */
+    @PostMapping("/tools/mq/send")
+    String sendCommonMessage(@RequestParam String topic, @RequestParam String content, @RequestParam String tag, @RequestParam Integer sort, @RequestParam Integer async, @RequestParam Integer oneway, @RequestParam Integer delay);
+
+}

+ 58 - 0
src/main/java/com/caimei365/commodity/model/dto/MessageDto.java

@@ -0,0 +1,58 @@
+package com.caimei365.commodity.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/6/17
+ */
+@ApiModel("发送消息接收参数")
+@Data
+public class MessageDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 消息主题
+     */
+    @NotNull
+    @ApiModelProperty("消息主题")
+    private String topic;
+    /**
+     * 消息内容
+     */
+    @NotNull
+    @ApiModelProperty("消息内容")
+    private String content;
+    /**
+     * 消息标签(可选)
+     */
+    @ApiModelProperty("消息标签(可选)")
+    private String tag;
+    /**
+     * 有序消息(可选)
+     */
+    @ApiModelProperty("有序消息(可选):1是,0否")
+    private Integer sort;
+    /**
+     * 异步消息(可选)
+     */
+    @ApiModelProperty("异步消息(可选):1是,0否")
+    private Integer async;
+    /**
+     * 单向消息(可选)
+     */
+    @ApiModelProperty("单向消息(可选):1是,0否")
+    private Integer oneway;
+    /**
+     * 延时消息(可选)
+     */
+    @ApiModelProperty("延时消息(可选),延时等级:1-18,0否,对应时间依次:1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h")
+    private Integer delay;
+
+}

+ 3 - 2
src/main/java/com/caimei365/commodity/service/impl/SearchProductServiceImpl.java

@@ -121,7 +121,6 @@ public class SearchProductServiceImpl implements SearchProductService {
         }
         // 阿里云搜索
         ResponseJson<String> result = queryProduct(queryStr, filter, identity, pageNum, pageSize, sortField, sortType);
-        log.info("商品查询返回结果------------------------》"+result.toString());
         if (0 == result.getCode()) {
             return result;
         } else {
@@ -133,7 +132,6 @@ public class SearchProductServiceImpl implements SearchProductService {
 
     @Override
     public ResponseJson<Set<HashMap<String, Object>>> queryBrand(String keyword, Integer id, Integer idType, Integer newFlag, Integer promotionFlag, Integer identity) {
-        log.info("查询品牌传入keyword----------->"+keyword+"-------------》id"+id+"------------->idType"+idType+"newFlag----------------->"+newFlag+"------------>promotionFlag------------->"+promotionFlag+"identity------------>"+identity);
         String queryStr = "";
         String filter = "";
         if (!StringUtils.isEmpty(keyword) && idType == null && id == null) {
@@ -373,6 +371,8 @@ public class SearchProductServiceImpl implements SearchProductService {
         if (null == id) {
             return ResponseJson.error("请提供供应商id", null);
         }
+        // 供应商看自己主页商品的时候可以看到隐身,冻结。
+        identity = 6;
         ResponseJson<String> result;
         if (StringUtils.isEmpty(keyword)) {
             String queryStr = "p_supplier:'" + id + "'";
@@ -391,6 +391,7 @@ public class SearchProductServiceImpl implements SearchProductService {
         if (0 == result.getCode()) {
             return result;
         } else {
+            identity = 3;
             // 阿里云搜索失败,再次从数据库搜索
             return queryProductFromDatabase(pageNum, pageSize, identity, keyword, id, null, null, null, null, sortField, sortType);
         }

+ 13 - 2
src/main/resources/mapper/PageMapper.xml

@@ -873,8 +873,14 @@
         </where>
 
         #         order by p.combinationSort != 0 desc, p.combinationSort asc
-
-        order by p.sortIndex desc
+        # 		在设置重点关注时给排序值1000为了让重点关注始终在列表前端
+        <if test="sortIndex==1000">
+            ORDER BY p.newshowTime DESC
+        </if>
+        <if test="sortIndex!=1000">
+            order by p.sortIndex desc
+        </if>
+#         order by p.sortIndex desc
 
     </select>
 
@@ -882,6 +888,11 @@
         SELECT DISTINCT s.`id`,s.`name` FROM product a
         LEFT JOIN `cm_brand` s ON s.id = a.brandID
         WHERE  a.newvalidFlag = 1
+          AND a.newProductType=1
+          AND a.validFlag = 2
+          AND a.showFlag!=2
+          AND s.id IS NOT NULL
+          AND s.name IS NOT NULL
           AND s.id IS NOT NULL
           AND s.name IS NOT NULL