|
|
@@ -0,0 +1,992 @@
|
|
|
+package com.sapit.client.app.persistence.goods;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springframework.stereotype.Repository;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import com.sapit.common.bean.mobile.GoodsBean;
|
|
|
+import com.sapit.common.bean.mobile.SpecialFoodBean;
|
|
|
+import com.sapit.common.bean.store.StoreGoodsBean;
|
|
|
+import com.sapit.common.bean.store.StoreSpecialGoodsBean;
|
|
|
+import com.sapit.common.bean.storemobile.GoodsInfoBean;
|
|
|
+import com.sapit.common.bean.storemobile.StoreGoodsModelBean;
|
|
|
+import com.sapit.common.bean.storemobile.StoreGoodsPropertyBean;
|
|
|
+import com.sapit.common.entity.goods.BuGoods;
|
|
|
+import com.sapit.common.framwork.BaseDao;
|
|
|
+import com.sapit.common.framwork.PageControlData;
|
|
|
+import com.sapit.common.search.goods.BuGoodsSearchBean;
|
|
|
+import com.sapit.common.util.DateUtil;
|
|
|
+import com.sapit.common.util.StringUtil;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 类名称:商品表管理Dao
|
|
|
+ * 类描述:处理商品表的各种操作
|
|
|
+ * 作 者:vic
|
|
|
+ * 时 间:2021-03-25
|
|
|
+ */
|
|
|
+@SuppressWarnings("rawtypes")
|
|
|
+@Repository
|
|
|
+public class GoodsDao extends BaseDao{
|
|
|
+
|
|
|
+ public GoodsDao() {
|
|
|
+ super.setEntity("BuGoods");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:获取商品信息
|
|
|
+ * 功能描述:获取商品信息(带分页)
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:jinw
|
|
|
+ * 日 期:2026-7-23
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<BuGoods> getGoodsList(PageControlData pageControlData, BuGoodsSearchBean searchBean) {
|
|
|
+
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("SELECT T.GOODS_ID,T.GOODS_NAME,T.GOODS_TYPE_ID,W.GOODS_TYPE_NAME," +
|
|
|
+ "T.RMK,T.PICTURE_URL,T.SALES_COUNT,T.STATUS,T.STORE_ID,S.STORE_NAME")
|
|
|
+ .append(" FROM bu_goods T LEFT JOIN bu_goods_type W ON T.GOODS_TYPE_ID = W.GOODS_TYPE_ID ")
|
|
|
+ .append(" LEFT JOIN bu_store S ON T.STORE_ID = S.STORE_ID")
|
|
|
+ .append(" WHERE 1 = 1 ");
|
|
|
+
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+
|
|
|
+ if (searchBean.getGoodsName() != null && !searchBean.getGoodsName().isEmpty()) {
|
|
|
+ sql.append(" AND T.GOODS_NAME LIKE :goodsName ");
|
|
|
+ params.put("goodsName", "%" + searchBean.getGoodsName() + "%");
|
|
|
+ }
|
|
|
+ if (searchBean.getStoreId() != null) {
|
|
|
+ sql.append(" AND T.STORE_ID = :storeId ");
|
|
|
+ params.put("storeId", searchBean.getStoreId());
|
|
|
+ }
|
|
|
+ if (searchBean.getStatus() != null) {
|
|
|
+ sql.append(" AND T.STATUS = :status ");
|
|
|
+ params.put("status", searchBean.getStatus());
|
|
|
+ }
|
|
|
+
|
|
|
+ sql.append(" order by T.SALES_COUNT desc , T.CREATE_DATE DESC");
|
|
|
+
|
|
|
+ List<Object> list = this.searchBySql(pageControlData, sql.toString(), params);
|
|
|
+ List<BuGoods> goodsList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ Object[] obj = (Object[]) list.get(i);
|
|
|
+
|
|
|
+ BuGoods goods = new BuGoods();
|
|
|
+ goods.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ goods.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ goods.setGoodsTypeId(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ goods.setGoodsTypeName(obj[3] == null ? null : obj[3].toString());
|
|
|
+ goods.setRmk(obj[4] == null ? null : obj[4].toString());
|
|
|
+ goods.setPictureUrl(obj[5] == null ? null : obj[5].toString());
|
|
|
+ goods.setSalesCount(obj[6] == null ? null : Long.valueOf(obj[6].toString()));
|
|
|
+ goods.setStatus(obj[7] == null ? null : Long.valueOf(obj[7].toString()));
|
|
|
+ goods.setStoreId(obj[8] == null ? null : Long.valueOf(obj[8].toString()));
|
|
|
+ goods.setStoreName(obj[9] == null ? null : obj[9].toString());
|
|
|
+ goodsList.add(goods);
|
|
|
+ }
|
|
|
+ return goodsList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:获取店铺的特价商品信息
|
|
|
+ * 功能描述:获取店铺的特价商品信息
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Vic
|
|
|
+ * 日 期:2023-06-19
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<BuGoods> getSpecialGoodsListByStoreId(Long storeId) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("SELECT T.GOODS_ID,T.GOODS_NAME,T.GOODS_TYPE_ID,W.GOODS_TYPE_NAME," +
|
|
|
+ "T.RMK,T.PICTURE_URL,T.SALES_COUNT,T.STATUS,T.STORE_ID,S.STORE_NAME")
|
|
|
+ .append(" FROM bu_goods T LEFT JOIN bu_goods_type W ON T.GOODS_TYPE_ID = W.GOODS_TYPE_ID ")
|
|
|
+ .append(" LEFT JOIN bu_store S ON T.STORE_ID = S.STORE_ID")
|
|
|
+ .append(" WHERE 1 = 1 AND (T.SALE_PRICE IS NOT NULL AND T.SALE_PRICE < T.COST_PRICE) ")
|
|
|
+ .append(" AND T.STORE_ID = " + storeId)
|
|
|
+ .append(" order by GOODS_ID desc");
|
|
|
+
|
|
|
+ List<Object> list = this.searchBySql(sql.toString());
|
|
|
+ List<BuGoods> goodsList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ Object[] obj = (Object[]) list.get(i);
|
|
|
+
|
|
|
+ BuGoods goods = new BuGoods();
|
|
|
+ goods.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ goods.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ goods.setGoodsTypeId(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ goods.setGoodsTypeName(obj[3] == null ? null : obj[3].toString());
|
|
|
+ goods.setRmk(obj[4] == null ? null : obj[4].toString());
|
|
|
+ goods.setPictureUrl(obj[5] == null ? null : obj[5].toString());
|
|
|
+ goods.setSalesCount(obj[6] == null ? null : Long.valueOf(obj[6].toString()));
|
|
|
+ goods.setStatus(obj[7] == null ? null : Long.valueOf(obj[7].toString()));
|
|
|
+ goods.setStoreId(obj[8] == null ? null : Long.valueOf(obj[8].toString()));
|
|
|
+ goods.setStoreName(obj[9] == null ? null : obj[9].toString());
|
|
|
+ goodsList.add(goods);
|
|
|
+ }
|
|
|
+ return goodsList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:获取商品信息
|
|
|
+ * 功能描述:获取商品信息
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Lim
|
|
|
+ * 日 期:2021-03-25
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<BuGoods> getGoodsList(BuGoodsSearchBean searchBean) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("SELECT T.GOODS_ID,T.GOODS_NAME,T.GOODS_TYPE_ID,W.GOODS_TYPE_NAME," +
|
|
|
+ "T.RMK,T.PICTURE_URL,T.SALES_COUNT,T.STATUS,T.STORE_ID,S.STORE_NAME")
|
|
|
+ .append(" FROM bu_goods T LEFT JOIN bu_goods_type W ON T.GOODS_TYPE_ID = W.GOODS_TYPE_ID ")
|
|
|
+ .append(" LEFT JOIN bu_store S ON T.STORE_ID = S.STORE_ID")
|
|
|
+ .append(" WHERE 1 = 1")
|
|
|
+ .append(searchBean.getSerchCondition())
|
|
|
+ .append(" order by GOODS_ID desc");
|
|
|
+
|
|
|
+ List<Object> list = this.searchBySql(sql.toString());
|
|
|
+ List<BuGoods> goodsList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ Object[] obj = (Object[]) list.get(i);
|
|
|
+
|
|
|
+ BuGoods goods = new BuGoods();
|
|
|
+ goods.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ goods.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ goods.setGoodsTypeId(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ goods.setGoodsTypeName(obj[3] == null ? null : obj[3].toString());
|
|
|
+ goods.setRmk(obj[4] == null ? null : obj[4].toString());
|
|
|
+ goods.setPictureUrl(obj[5] == null ? null : obj[5].toString());
|
|
|
+ goods.setSalesCount(obj[6] == null ? null : Long.valueOf(obj[6].toString()));
|
|
|
+ goods.setStatus(obj[7] == null ? null : Long.valueOf(obj[7].toString()));
|
|
|
+ goods.setStoreId(obj[8] == null ? null : Long.valueOf(obj[8].toString()));
|
|
|
+ goods.setStoreName(obj[9] == null ? null : obj[9].toString());
|
|
|
+ goodsList.add(goods);
|
|
|
+ }
|
|
|
+ return goodsList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:删除下架商品
|
|
|
+ * 功能描述:删除下架商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Yangyk
|
|
|
+ * 日 期:2024-02-28
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public void deleteGoods(Long goodsId) {
|
|
|
+ String sql = "UPDATE bu_goods SET DEL_FLAG = 1 WHERE GOODS_ID = " + goodsId + " AND STATUS = 0";
|
|
|
+ this.executeSql(sql);
|
|
|
+ }
|
|
|
+
|
|
|
+ /*---------------------------- 以下为用户端调用方法 -----------------------------------*/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:根据店铺id获取商品集合
|
|
|
+ * 功能描述:根据店铺id获取商品集合
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Vic
|
|
|
+ * 日 期:2023-09-26
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<StoreGoodsBean> getGoodsBeanByStoreId(Long storeId, Long flag) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("SELECT G.GOODS_ID,G.GOODS_NAME,G.GOODS_TYPE_ID,G.SALES_COUNT,G.SALE_PRICE as GOODS_SALE_PRICE,G.COST_PRICE AS GOODS_COST_PRICE,G.LIMITED_NUM,")
|
|
|
+ .append(" G.MINI_NUM,G.PICTURE_URL,G.NEW_GOODS_FLG,G.SINGLE_FLG,G.STORE_ID,S.MAX_NUM,G.RMK,T.GOODS_TYPE_NAME,")
|
|
|
+ .append(" M.MODEL_ID,M.MODEL_CODE,M.MODEL_NAME,M.COST_PRICE,M.SALE_PRICE,M.PACKING_FEE,T.TYPE,G.STATUS FROM bu_goods G")
|
|
|
+ .append(" LEFT JOIN bu_goods_model M ON G.GOODS_ID = M.GOODS_ID LEFT JOIN bu_store_special_goods S ON G.GOODS_ID = S.GOODS_ID")
|
|
|
+ .append(" LEFT JOIN bu_goods_type T ON G.GOODS_TYPE_ID = T.GOODS_TYPE_ID WHERE G.STORE_ID =")
|
|
|
+ .append(storeId);
|
|
|
+// if (StringUtils.isNotBlank(goodsName)) {
|
|
|
+// sql.append(" AND G.GOODS_NAME LIKE '%").append(goodsName).append("%'");
|
|
|
+// }
|
|
|
+ if (flag == 0L) {
|
|
|
+ sql.append(" AND G.STATUS = 1");
|
|
|
+ }
|
|
|
+ sql.append(" AND G.DEL_FLAG = 0");
|
|
|
+ sql.append(" ORDER BY T.ORDER_KEY DESC, IFNULL(G.NEW_GOODS_FLG, 0) DESC, G.ORDER_KEY DESC");
|
|
|
+
|
|
|
+ List<Object> objs = this.searchBySql(sql.toString());
|
|
|
+
|
|
|
+ List<StoreGoodsBean> result = new ArrayList<>();
|
|
|
+
|
|
|
+ for (Object object : objs) {
|
|
|
+ StoreGoodsBean bean = new StoreGoodsBean();
|
|
|
+ Object[] obj = (Object[])object;
|
|
|
+ bean.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean.setGoodsTypeId(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ bean.setSalesCount(obj[3] == null ? null : Long.valueOf(obj[3].toString()));
|
|
|
+ bean.setGoodsSalePrice(obj[4] == null ? null : Long.valueOf(obj[4].toString()));
|
|
|
+ bean.setGoodsCostPrice(obj[5] == null ? null : Long.valueOf(obj[5].toString()));
|
|
|
+ bean.setLimitedNum(obj[6] == null ? null : Long.valueOf(obj[6].toString()));
|
|
|
+ bean.setMiniNum(obj[7] == null ? null : Long.valueOf(obj[7].toString()));
|
|
|
+ bean.setPictureUrl(obj[8] == null ? null : obj[8].toString());
|
|
|
+ bean.setNewGoodsFlg(obj[9] == null ? 0L : Long.valueOf(obj[9].toString()));
|
|
|
+ bean.setDiscount(String.format("%.1f", (bean.getGoodsSalePrice() * 10d) / bean.getGoodsCostPrice()));
|
|
|
+ bean.setSingleFlg(obj[10] == null ? 0L : Long.valueOf(obj[10].toString()));
|
|
|
+ bean.setStoreId(obj[11] == null ? null : Long.valueOf(obj[11].toString()));
|
|
|
+ bean.setSpecialLimitedNum(obj[12] == null ? null : Long.valueOf(obj[12].toString()));
|
|
|
+ bean.setRmk(obj[13] == null ? null : obj[13].toString());
|
|
|
+
|
|
|
+ bean.setGoodsTypeName(obj[14] == null ? null : obj[14].toString());
|
|
|
+
|
|
|
+ bean.setModelId(obj[15] == null ? null : obj[15].toString());
|
|
|
+ bean.setModelCode(obj[16] == null ? null : obj[16].toString());
|
|
|
+ bean.setModelName(obj[17] == null ? null : obj[17].toString());
|
|
|
+ bean.setCostPrice(obj[18] == null ? null : Long.valueOf(obj[18].toString()));
|
|
|
+ bean.setSalePrice(obj[19] == null ? null : Long.valueOf(obj[19].toString()));
|
|
|
+ bean.setPackingFee(obj[20] == null ? null : Long.valueOf(obj[20].toString()));
|
|
|
+ bean.setGoodsTypeRequireType(obj[21] == null ? null : Long.valueOf(obj[21].toString()));
|
|
|
+ bean.setStatus(obj[22] == null ? null : Long.valueOf(obj[22].toString()));
|
|
|
+
|
|
|
+ result.add(bean);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:根据查询条件和店铺id集合获取商品
|
|
|
+ * 功能描述:根据查询条件和店铺id集合获取商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Yangyk
|
|
|
+ * 日 期:2023-06-01
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<SpecialFoodBean> getGoodsByStoreIds(String key, List<Long> storeIds) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("SELECT g.GOODS_ID, g.GOODS_NAME, g.STORE_ID, g.COST_PRICE, g.SALE_PRICE, g.PICTURE_URL ");
|
|
|
+ sql.append("FROM bu_goods g WHERE g.GOODS_NAME LIKE '%" + key + "%' ");
|
|
|
+ if (CollectionUtils.isNotEmpty(storeIds)) {
|
|
|
+ sql.append("AND g.STORE_ID IN ( ");
|
|
|
+ int index = 0;
|
|
|
+ for (Long storeId : storeIds) {
|
|
|
+ sql.append("'" + storeId + "'");
|
|
|
+ index ++;
|
|
|
+ if (index != storeIds.size()) {
|
|
|
+ sql.append(", ");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sql.append(") ");
|
|
|
+ }
|
|
|
+ sql.append("ORDER BY SALES_COUNT DESC");
|
|
|
+
|
|
|
+ List<Object> objs = this.searchBySql(sql.toString());
|
|
|
+ List<SpecialFoodBean> result = new ArrayList<>();
|
|
|
+ for (Object object : objs) {
|
|
|
+ Object[] obj = (Object[])object;
|
|
|
+ SpecialFoodBean bean = new SpecialFoodBean();
|
|
|
+ bean.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean.setStoreId(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ bean.setCostPrice(obj[3] == null ? 0L : Long.valueOf(obj[3].toString()));
|
|
|
+ bean.setSalePrice(obj[4] == null ? 0L : Long.valueOf(obj[4].toString()));
|
|
|
+ bean.setPictureUrl(obj[5] == null ? null : obj[5].toString());
|
|
|
+ bean.setDiscount(String.format("%.1f", (bean.getSalePrice() * 10d) / bean.getCostPrice()));
|
|
|
+ result.add(bean);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:商家页 根据店铺id集合获取商品
|
|
|
+ * 功能描述:商家页 根据店铺id集合获取商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Yangyk
|
|
|
+ * 日 期:2023-06-01
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<GoodsBean> getBeanByStoreId(Long storeId, String searchValue) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("SELECT T.GOODS_ID, T.GOODS_NAME, T.GOODS_TYPE_ID, T.SALES_COUNT, T.SALE_PRICE, T.COST_PRICE, T.LIMITED_NUM, ");
|
|
|
+ sql.append("T.MINI_NUM, T.PICTURE_URL, T.NEW_GOODS_FLG, T.SINGLE_FLG, T.STORE_ID, G.MAX_NUM, T.RMK FROM bu_goods T LEFT JOIN bu_store_special_goods G ON T.GOODS_ID = G.GOODS_ID WHERE T.STATUS = 1 ");
|
|
|
+ if (storeId != null) {
|
|
|
+ sql.append("AND T.STORE_ID = " + storeId + " ");
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(searchValue)) {
|
|
|
+ sql.append("AND T.GOODS_NAME LIKE '%" + searchValue + "%' ");
|
|
|
+ }
|
|
|
+ sql.append("ORDER BY IFNULL(T.NEW_GOODS_FLG, 0) DESC, T.ORDER_KEY DESC");
|
|
|
+ List<Object> list = this.searchBySql(sql.toString());
|
|
|
+
|
|
|
+ List<GoodsBean> result = new ArrayList<>();
|
|
|
+ for(Object object : list) {
|
|
|
+ Object[] obj = (Object[]) object;
|
|
|
+ GoodsBean bean = new GoodsBean();
|
|
|
+
|
|
|
+ bean.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean.setGoodsTypeId(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ bean.setSalesCount(obj[3] == null ? null : Long.valueOf(obj[3].toString()));
|
|
|
+ bean.setSalePrice(obj[4] == null ? null : Long.valueOf(obj[4].toString()));
|
|
|
+ bean.setCostPrice(obj[5] == null ? null : Long.valueOf(obj[5].toString()));
|
|
|
+ bean.setLimitedNum(obj[6] == null ? null : Long.valueOf(obj[6].toString()));
|
|
|
+ bean.setMiniNum(obj[7] == null ? null : Long.valueOf(obj[7].toString()));
|
|
|
+ bean.setPictureUrl(obj[8] == null ? null : obj[8].toString());
|
|
|
+ bean.setNewGoodsFlg(obj[9] == null ? 0L : Long.valueOf(obj[9].toString()));
|
|
|
+ bean.setDiscount(String.format("%.1f", (bean.getSalePrice() * 10d) / bean.getCostPrice()));
|
|
|
+ bean.setSingleFlg(obj[10] == null ? 0L : Long.valueOf(obj[10].toString()));
|
|
|
+ bean.setStoreId(obj[11] == null ? null : Long.valueOf(obj[11].toString()));
|
|
|
+ bean.setSpecialLimitedNum(obj[12] == null ? null : Long.valueOf(obj[12].toString()));
|
|
|
+ bean.setRmk(obj[13] == null ? null : obj[13].toString());
|
|
|
+
|
|
|
+ result.add(bean);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:商家页 根据店铺id集合获取商品
|
|
|
+ * 功能描述:商家页 根据店铺id集合获取商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Yangyk
|
|
|
+ * 日 期:2023-06-01
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<GoodsBean> getBeanByStoreIdSearch(Long storeId, String searchValue) {
|
|
|
+
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("SELECT T.GOODS_ID, T.GOODS_NAME, T.GOODS_TYPE_ID, T.SALES_COUNT, T.SALE_PRICE, T.COST_PRICE, T.LIMITED_NUM, ");
|
|
|
+ sql.append("T.MINI_NUM, T.PICTURE_URL, T.NEW_GOODS_FLG, T.SINGLE_FLG, T.STORE_ID, G.MAX_NUM, T.RMK FROM bu_goods T LEFT JOIN bu_store_special_goods G ON T.GOODS_ID = G.GOODS_ID WHERE 1 = 1 ");
|
|
|
+ if (storeId != null) {
|
|
|
+ sql.append("AND T.STORE_ID = " + storeId + " ");
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(searchValue)) {
|
|
|
+ sql.append("AND T.GOODS_NAME LIKE '%" + searchValue + "%' ");
|
|
|
+ }
|
|
|
+ sql.append("ORDER BY IFNULL(T.NEW_GOODS_FLG, 0) DESC, T.ORDER_KEY DESC");
|
|
|
+ List<Object> list = this.searchBySql(sql.toString());
|
|
|
+
|
|
|
+ List<GoodsBean> result = new ArrayList<>();
|
|
|
+ for(Object object : list) {
|
|
|
+ Object[] obj = (Object[]) object;
|
|
|
+ GoodsBean bean = new GoodsBean();
|
|
|
+
|
|
|
+ bean.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean.setGoodsTypeId(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ bean.setSalesCount(obj[3] == null ? null : Long.valueOf(obj[3].toString()));
|
|
|
+ bean.setSalePrice(obj[5] == null ? null : Long.valueOf(obj[5].toString()));
|
|
|
+ bean.setCostPrice(obj[5] == null ? null : Long.valueOf(obj[5].toString()));
|
|
|
+ bean.setLimitedNum(obj[6] == null ? null : Long.valueOf(obj[6].toString()));
|
|
|
+ bean.setMiniNum(obj[7] == null ? null : Long.valueOf(obj[7].toString()));
|
|
|
+ bean.setPictureUrl(obj[8] == null ? null : obj[8].toString());
|
|
|
+ bean.setNewGoodsFlg(obj[9] == null ? 0L : Long.valueOf(obj[9].toString()));
|
|
|
+ bean.setDiscount(String.format("%.1f", (bean.getSalePrice() * 10d) / bean.getCostPrice()));
|
|
|
+ bean.setSingleFlg(obj[10] == null ? 0L : Long.valueOf(obj[10].toString()));
|
|
|
+ bean.setStoreId(obj[11] == null ? null : Long.valueOf(obj[11].toString()));
|
|
|
+ bean.setRmk(obj[13] == null ? null : obj[13].toString());
|
|
|
+
|
|
|
+ result.add(bean);
|
|
|
+
|
|
|
+ Long salePrice = obj[4] == null ? null : Long.valueOf(obj[4].toString());
|
|
|
+ if (bean.getCostPrice() > salePrice) {
|
|
|
+ GoodsBean goods = new GoodsBean();
|
|
|
+ goods.setGoodsId(bean.getGoodsId());
|
|
|
+ goods.setGoodsName(bean.getGoodsName());
|
|
|
+ goods.setGoodsTypeId(0L);
|
|
|
+ goods.setSalesCount(bean.getSalesCount());
|
|
|
+ goods.setSalePrice(salePrice);
|
|
|
+ goods.setCostPrice(bean.getCostPrice());
|
|
|
+ goods.setLimitedNum(obj[12] == null ? null : Long.valueOf(obj[12].toString()));
|
|
|
+ goods.setMiniNum(bean.getMiniNum());
|
|
|
+ goods.setPictureUrl(bean.getPictureUrl());
|
|
|
+ goods.setNewGoodsFlg(bean.getNewGoodsFlg());
|
|
|
+ goods.setDiscount(bean.getDiscount());
|
|
|
+ goods.setSingleFlg(bean.getSingleFlg());
|
|
|
+ goods.setStoreId(bean.getStoreId());
|
|
|
+ goods.setRmk(bean.getRmk());
|
|
|
+ result.add(goods);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:获取商品信息
|
|
|
+ * 功能描述:获取商品信息
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Vic
|
|
|
+ * 日 期:2023-06-01
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public BuGoods getGoodsInfoById(Long goodsId) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("SELECT GOODS_ID, GOODS_NAME, SALE_PRICE, COST_PRICE, LIMITED_NUM, MINI_NUM, STATUS, STORE_ID FROM bu_goods WHERE GOODS_ID = " + goodsId);
|
|
|
+
|
|
|
+ List<Object> objs = this.searchBySql(sql.toString());
|
|
|
+ if (CollectionUtils.isNotEmpty(objs)) {
|
|
|
+ Object[] obj = (Object[]) objs.get(0);
|
|
|
+ BuGoods goods = new BuGoods();
|
|
|
+ goods.setGoodsId(goodsId);
|
|
|
+ goods.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ goods.setSalePrice(obj[2] == null ? 0L : Long.valueOf(obj[2].toString()));
|
|
|
+ goods.setCostPrice(obj[3] == null ? 0L : Long.valueOf(obj[3].toString()));
|
|
|
+ goods.setLimitedNum(obj[4] == null ? 0L : Long.valueOf(obj[4].toString()));
|
|
|
+ goods.setMiniNum(obj[5] == null ? 0L : Long.valueOf(obj[5].toString()));
|
|
|
+ goods.setStatus(obj[6] == null ? 0L : Long.valueOf(obj[6].toString()));
|
|
|
+ goods.setStoreId(obj[7] == null ? 0L : Long.valueOf(obj[7].toString()));
|
|
|
+
|
|
|
+ return goods;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:商家页 根据店铺id集合获取商品
|
|
|
+ * 功能描述:商家页 根据店铺id集合获取商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Yangyk
|
|
|
+ * 日 期:2023-06-01
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<GoodsBean> getBeanByGoodsIds(List<Long> goodsIds) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("SELECT T.GOODS_ID, T.GOODS_NAME, T.GOODS_TYPE_ID, T.SALES_COUNT, T.SALE_PRICE, T.COST_PRICE, G.MAX_NUM, ");
|
|
|
+ sql.append("T.MINI_NUM, T.PICTURE_URL, T.NEW_GOODS_FLG, T.SINGLE_FLG, T.STORE_ID, T.STATUS FROM bu_goods T LEFT JOIN bu_store_special_goods G ON T.GOODS_ID = G.GOODS_ID WHERE 1 = 1 ");
|
|
|
+ if (CollectionUtils.isNotEmpty(goodsIds)) {
|
|
|
+ sql.append("AND T.GOODS_ID IN ( ");
|
|
|
+ int index = 0;
|
|
|
+ for (Long goodsId : goodsIds) {
|
|
|
+ sql.append("'" + goodsId + "'");
|
|
|
+ index ++;
|
|
|
+ if (index != goodsIds.size()) {
|
|
|
+ sql.append(", ");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sql.append(") ");
|
|
|
+ }
|
|
|
+ sql.append("ORDER BY T.NEW_GOODS_FLG DESC");
|
|
|
+ List<Object> list = this.searchBySql(sql.toString());
|
|
|
+
|
|
|
+ List<GoodsBean> result = new ArrayList<>();
|
|
|
+ for(Object object : list) {
|
|
|
+ Object[] obj = (Object[]) object;
|
|
|
+ GoodsBean bean = new GoodsBean();
|
|
|
+
|
|
|
+ bean.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean.setGoodsTypeId(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ bean.setSalesCount(obj[3] == null ? null : Long.valueOf(obj[3].toString()));
|
|
|
+ bean.setSalePrice(obj[4] == null ? null : Long.valueOf(obj[4].toString()));
|
|
|
+ bean.setCostPrice(obj[5] == null ? null : Long.valueOf(obj[5].toString()));
|
|
|
+ bean.setLimitedNum(obj[6] == null ? null : Long.valueOf(obj[6].toString()));
|
|
|
+ bean.setMiniNum(obj[7] == null ? null : Long.valueOf(obj[7].toString()));
|
|
|
+ bean.setPictureUrl(obj[8] == null ? null : obj[8].toString());
|
|
|
+ bean.setNewGoodsFlg(obj[9] == null ? 0L : Long.valueOf(obj[9].toString()));
|
|
|
+ bean.setDiscount(String.format("%.1f", (bean.getSalePrice() * 10d) / bean.getCostPrice()));
|
|
|
+ bean.setSingleFlg(obj[10] == null ? 0L : Long.valueOf(obj[10].toString()));
|
|
|
+ bean.setStoreId(obj[11] == null ? null : Long.valueOf(obj[11].toString()));
|
|
|
+ bean.setStatus(obj[12] == null ? 0L : Long.valueOf(obj[12].toString()));
|
|
|
+ result.add(bean);
|
|
|
+
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:获取店铺的单型号商品
|
|
|
+ * 功能描述:获取店铺的单型号商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Vic
|
|
|
+ * 日 期:2023-07-06
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<BuGoods> getStoreSingleGoods(Long storeId) {
|
|
|
+ String sql = "select g.GOODS_ID,g.GOODS_NAME,g.COST_PRICE,g.SALE_PRICE,g.PICTURE_URL,m.MODEL_ID from bu_goods g left join bu_goods_model m on g.GOODS_ID = m.GOODS_ID where g.SINGLE_FLG = 1 and g.STORE_ID =" + storeId;
|
|
|
+
|
|
|
+ List<Object> list = this.searchBySql(sql);
|
|
|
+ List<BuGoods> result = new ArrayList<>();
|
|
|
+ for(Object object : list) {
|
|
|
+ Object[] obj = (Object[]) object;
|
|
|
+ BuGoods bean = new BuGoods();
|
|
|
+ bean.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean.setCostPrice(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ bean.setSalePrice(obj[3] == null ? null : Long.valueOf(obj[3].toString()));
|
|
|
+ bean.setPictureUrl(obj[4] == null ? null : obj[4].toString());
|
|
|
+ bean.setModelId(obj[5] == null ? null : Long.valueOf(obj[5].toString()));
|
|
|
+ result.add(bean);
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /*---------------------------- 以下为店铺端调用方法 -----------------------------------*/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:商家页 根据店铺id集合获取商品
|
|
|
+ * 功能描述:商家页 根据店铺id集合获取商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Liucl
|
|
|
+ * 日 期:2023-07-04
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<GoodsBean> getBeanByStoreIdForStore(Long storeId) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("SELECT T.GOODS_ID, T.GOODS_NAME, T.GOODS_TYPE_ID, T.SALES_COUNT, T.SALE_PRICE, T.COST_PRICE, T.LIMITED_NUM, ");
|
|
|
+ sql.append("T.MINI_NUM, T.PICTURE_URL, T.NEW_GOODS_FLG, T.SINGLE_FLG, T.STORE_ID, T.STATUS,T.ORDER_KEY FROM bu_goods T WHERE 1 = 1 ");
|
|
|
+ if (storeId != null) {
|
|
|
+ sql.append("AND T.STORE_ID = " + storeId + " ");
|
|
|
+ }
|
|
|
+ sql.append("ORDER BY T.ORDER_KEY DESC");
|
|
|
+ List<Object> list = this.searchBySql(sql.toString());
|
|
|
+
|
|
|
+ List<GoodsBean> result = new ArrayList<>();
|
|
|
+ for(Object object : list) {
|
|
|
+ Object[] obj = (Object[]) object;
|
|
|
+ GoodsBean bean = new GoodsBean();
|
|
|
+
|
|
|
+ bean.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean.setGoodsTypeId(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ bean.setSalesCount(obj[3] == null ? null : Long.valueOf(obj[3].toString()));
|
|
|
+ bean.setSalePrice(obj[4] == null ? null : Long.valueOf(obj[4].toString()));
|
|
|
+ bean.setCostPrice(obj[5] == null ? null : Long.valueOf(obj[5].toString()));
|
|
|
+ bean.setLimitedNum(obj[6] == null ? null : Long.valueOf(obj[6].toString()));
|
|
|
+ bean.setMiniNum(obj[7] == null ? null : Long.valueOf(obj[7].toString()));
|
|
|
+ bean.setPictureUrl(obj[8] == null ? null : obj[8].toString());
|
|
|
+ bean.setNewGoodsFlg(obj[9] == null ? 0L : Long.valueOf(obj[9].toString()));
|
|
|
+ bean.setDiscount(String.format("%.1f", (bean.getSalePrice() * 10d) / bean.getCostPrice()));
|
|
|
+ bean.setSingleFlg(obj[10] == null ? 0L : Long.valueOf(obj[10].toString()));
|
|
|
+ bean.setStoreId(obj[11] == null ? null : Long.valueOf(obj[11].toString()));
|
|
|
+ bean.setStatus(obj[12] == null ? null : Long.valueOf(obj[12].toString()));
|
|
|
+ bean.setOrderKey(obj[13] == null ? null : Long.valueOf(obj[13].toString()));
|
|
|
+
|
|
|
+ result.add(bean);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:更新商品的销售价格为活动价格
|
|
|
+ * 功能描述:更新商品的销售价格为活动价格
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Vic
|
|
|
+ * 日 期:2023-07-04
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public void updateGoodsSalesPriceToActivityPriceForStore(Long activityId){
|
|
|
+ String sql = "update bu_goods g set g.SALE_PRICE = (select t.ACTIVITY_PRICE from bu_store_special_goods t where g.GOODS_ID = t.GOODS_ID) "
|
|
|
+ + " where g.GOODS_ID in (select GOODS_ID from bu_store_special_goods where STORE_SPECIAL_ACTIVITY_ID =" + activityId + ")";
|
|
|
+ this.executeSql(sql);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:更新商品的销售价格为商品原价
|
|
|
+ * 功能描述:更新商品的销售价格为商品原价
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Vic
|
|
|
+ * 日 期:2023-07-04
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public void updateGoodsSalesPriceToCostPriceForStore(Long activityId){
|
|
|
+ String sql = "update bu_goods g set g.SALE_PRICE = g.COST_PRICE where g.GOODS_ID in (select GOODS_ID from bu_store_special_goods where STORE_SPECIAL_ACTIVITY_ID =" + activityId + ")";
|
|
|
+ this.executeSql(sql);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:获取商品详细属性
|
|
|
+ * 功能描述:获取商品详细属性
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Liucl
|
|
|
+ * 日 期:2023-07-04
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public GoodsInfoBean getGoodsInfoForStore(Long storeId, Long goodsId) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("SELECT T.GOODS_ID, T.GOODS_NAME, T.GOODS_TYPE_ID, S.GOODS_TYPE_NAME, T.UTILS, T.PICTURE_URL, T.RMK,T.MINI_NUM ")
|
|
|
+ .append(" FROM bu_goods T LEFT JOIN bu_goods_type S ON T.GOODS_TYPE_ID = S.GOODS_TYPE_ID ")
|
|
|
+ .append(" WHERE 1 = 1 ")
|
|
|
+ .append(" AND T.STORE_ID = ")
|
|
|
+ .append(storeId)
|
|
|
+ .append(" AND T.GOODS_ID = ")
|
|
|
+ .append(goodsId);
|
|
|
+
|
|
|
+ List<Object> list = this.searchBySql(sql.toString());
|
|
|
+
|
|
|
+ List<GoodsInfoBean> result = new ArrayList<>();
|
|
|
+ for(Object object : list) {
|
|
|
+ Object[] obj = (Object[]) object;
|
|
|
+ GoodsInfoBean bean = new GoodsInfoBean();
|
|
|
+ bean.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean.setGoodsTypeId(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ bean.setGoodsTypeName(obj[3] == null ? null : obj[3].toString());
|
|
|
+ bean.setUtils(obj[4] == null ? null : obj[4].toString());
|
|
|
+ bean.setPictureUrl(obj[5] == null ? null : obj[5].toString());
|
|
|
+ bean.setRmk(obj[6] == null ? null : obj[6].toString());
|
|
|
+// bean.setPropertyId(obj[7] == null ? null : Long.valueOf(obj[7].toString()));
|
|
|
+// bean.setPropertyName(obj[8] == null ? null : obj[8].toString());
|
|
|
+// bean.setPropertyList(obj[9] == null ? null : obj[9].toString());
|
|
|
+
|
|
|
+ bean.setMiniNum(obj[7] == null ? null : Long.valueOf(obj[7].toString()));
|
|
|
+ result.add(bean);
|
|
|
+ }
|
|
|
+ GoodsInfoBean bean = null;
|
|
|
+ if (result.size()>0){
|
|
|
+ bean = result.get(0);
|
|
|
+
|
|
|
+ // 查询商品规格
|
|
|
+ StringBuilder sql1 = new StringBuilder();
|
|
|
+ sql1.append("SELECT MODEL_ID, MODEL_NAME, COST_PRICE,PACKING_FEE,SALE_PRICE FROM bu_goods_model WHERE 1 = 1 ")
|
|
|
+ .append(" AND GOODS_ID = ").append(goodsId);
|
|
|
+
|
|
|
+ List<Object> list1 = this.searchBySql(sql1.toString());
|
|
|
+ List<StoreGoodsModelBean> result1 = new ArrayList<>();
|
|
|
+ for (Object object : list1) {
|
|
|
+ Object[] obj = (Object[]) object;
|
|
|
+ StoreGoodsModelBean bean1 = new StoreGoodsModelBean();
|
|
|
+ bean1.setModelId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean1.setModelName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean1.setCostPrice(obj[2] == null ? null : Long.parseLong(obj[2].toString()));
|
|
|
+ bean1.setPackingFee(obj[3] == null ? null : Long.parseLong(obj[3].toString()));
|
|
|
+ bean1.setSalePrice(obj[4] == null ? null : Long.valueOf(obj[4].toString()));
|
|
|
+ if (bean1.getCostPrice() != null && bean1.getSalePrice() != null && bean1.getCostPrice() > bean1.getSalePrice()) {
|
|
|
+ bean1.setSpecialFlag(1L);
|
|
|
+ } else {
|
|
|
+ bean1.setSpecialFlag(0L);
|
|
|
+ }
|
|
|
+
|
|
|
+ result1.add(bean1);
|
|
|
+ }
|
|
|
+ if (!result1.isEmpty()){
|
|
|
+ bean.setModelBeanList(result1);
|
|
|
+ }
|
|
|
+ // 查询商品属性
|
|
|
+ StringBuilder sql2 = new StringBuilder();
|
|
|
+ sql2.append("SELECT PROPERTY_ID, PROPERTY_NAME, PROPERTY_LIST FROM bu_goods_property WHERE 1 = 1 ")
|
|
|
+ .append(" AND GOODS_ID = ").append(goodsId);
|
|
|
+
|
|
|
+ List<Object> list2 = this.searchBySql(sql2.toString());
|
|
|
+ List<StoreGoodsPropertyBean> result2 = new ArrayList<>();
|
|
|
+ for (Object object : list2) {
|
|
|
+ Object[] obj = (Object[]) object;
|
|
|
+ StoreGoodsPropertyBean bean2 = new StoreGoodsPropertyBean();
|
|
|
+ bean2.setPropertyId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean2.setPropertyName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean2.setPropertyList(obj[2] == null ? null : obj[2].toString());
|
|
|
+ result2.add(bean2);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!result2.isEmpty()){
|
|
|
+ bean.setPropertyBeanList(result2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return bean;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:根据Id获取对象实体
|
|
|
+ * 功能描述:根据Id获取对象实体
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Liucl
|
|
|
+ * 日 期:2023-07-05
|
|
|
+ */
|
|
|
+ public BuGoods getGoodsByIdForStore(Long id){
|
|
|
+ return (BuGoods) findById(BuGoods.class, id);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:获取商品最大排序
|
|
|
+ * 功能描述:获取商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Liucl
|
|
|
+ * 日 期:2023-07-03
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<BuGoods> getGoodsMaxOrderKeyForStore(Long storeId) {
|
|
|
+ String hql = "from BuGoods where 1=1 and STORE_ID = " + storeId +" ORDER BY ORDER_KEY DESC ";
|
|
|
+ return this.searchByHql(hql);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:获取商品最大排序
|
|
|
+ * 功能描述:获取商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Liucl
|
|
|
+ * 日 期:2023-07-03
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<BuGoods> getGoodsMoveUpForStore(Long typeId, Long storeId, Long orderKey) {
|
|
|
+
|
|
|
+ String hql = "from BuGoods where 1=1 and GOODS_TYPE_ID = " + typeId + " AND STORE_ID = "+ storeId + "AND ORDER_KEY > "+ orderKey +" ORDER BY ORDER_KEY ASC ";
|
|
|
+ return this.searchByHql(hql);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:更新商品状态
|
|
|
+ * 功能描述:更新商品状态
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Liucl
|
|
|
+ * 日 期:2023-07-05
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public boolean changeStatusForStore(Long id, Long status,Long storeId){
|
|
|
+ String sql = "update bu_goods set STATUS = " + status + " where GOODS_ID = " + id + " AND STORE_ID = " + storeId;
|
|
|
+
|
|
|
+ int rtn = this.executeSql(sql);
|
|
|
+ if (rtn >= 1) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:根据分类id查询分类下是否有商品
|
|
|
+ * 功能描述:根据分类id查询分类下是否有商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Liucl
|
|
|
+ * 日 期:2023-07-05
|
|
|
+ */
|
|
|
+ public boolean checkTypeIsUsed(Long id, Long storeId) {
|
|
|
+ String sql = "select count(*) from bu_goods WHERE GOODS_TYPE_ID = " + id +" AND STORE_ID = " + storeId;
|
|
|
+ List<?> list = this.searchBySql(sql);
|
|
|
+ boolean rtn = false;
|
|
|
+
|
|
|
+ if (list != null && !list.isEmpty() && Long.valueOf(list.get(0).toString()) > 0) {
|
|
|
+ rtn = true;
|
|
|
+ }
|
|
|
+ return rtn;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:获取店铺的单型号商品
|
|
|
+ * 功能描述:获取店铺的单型号商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Vic
|
|
|
+ * 日 期:2023-07-06
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<StoreSpecialGoodsBean> getStoreSingleGoodsForSpecialForStore(Long storeId, String goodsName, String ids) {
|
|
|
+ String sql = "select g.GOODS_ID,g.GOODS_NAME,g.COST_PRICE,g.SALE_PRICE,g.PICTURE_URL,m.MODEL_ID from bu_goods g left join bu_goods_model m on g.GOODS_ID = m.GOODS_ID" +
|
|
|
+ " left join bu_goods_type t on g.GOODS_TYPE_ID = t.GOODS_TYPE_ID " +
|
|
|
+ " where g.SINGLE_FLG = 1 " +
|
|
|
+ "and g.STORE_ID =" + storeId + " and g.GOODS_ID not in (select a.GOODS_ID from bu_store_special_goods a ) and t.TYPE <> 1";
|
|
|
+
|
|
|
+ if (goodsName != null && !goodsName.equals("")) {
|
|
|
+ sql += " and g.GOODS_NAME like '%" + goodsName + "%'";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ids != null && !ids.equals("")){
|
|
|
+ sql += " and g.GOODS_ID not in " + ids;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Object> list = this.searchBySql(sql);
|
|
|
+ List<StoreSpecialGoodsBean> result = new ArrayList<>();
|
|
|
+ for(Object object : list) {
|
|
|
+ Object[] obj = (Object[]) object;
|
|
|
+ StoreSpecialGoodsBean bean = new StoreSpecialGoodsBean();
|
|
|
+ bean.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean.setCostPrice(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ bean.setActivityPrice(obj[3] == null ? null : Long.valueOf(obj[3].toString()));
|
|
|
+ bean.setPictureUrl(obj[4] == null ? null : obj[4].toString());
|
|
|
+ bean.setModelId(obj[5] == null ? null : Long.valueOf(obj[5].toString()));
|
|
|
+ result.add(bean);
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:获取店铺的单型号商品
|
|
|
+ * 功能描述:获取店铺的单型号商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Vic
|
|
|
+ * 日 期:2023-07-06
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<StoreSpecialGoodsBean> getStoreSingleGoodsForStore(Long storeId, String goodsName, String ids) {
|
|
|
+ String sql = "select g.GOODS_ID,g.GOODS_NAME,g.COST_PRICE,g.SALE_PRICE,g.PICTURE_URL,m.MODEL_ID from bu_goods g left join bu_goods_model m on g.GOODS_ID = m.GOODS_ID where g.SINGLE_FLG = 1 " +
|
|
|
+ "and g.STORE_ID =" + storeId;
|
|
|
+
|
|
|
+ if (goodsName != null && !goodsName.equals("")) {
|
|
|
+ sql += " and g.GOODS_NAME like '%" + goodsName + "%'";
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Object> list = this.searchBySql(sql);
|
|
|
+ List<StoreSpecialGoodsBean> result = new ArrayList<>();
|
|
|
+ for(Object object : list) {
|
|
|
+ Object[] obj = (Object[]) object;
|
|
|
+ StoreSpecialGoodsBean bean = new StoreSpecialGoodsBean();
|
|
|
+ bean.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean.setCostPrice(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ bean.setActivityPrice(obj[3] == null ? null : Long.valueOf(obj[3].toString()));
|
|
|
+ bean.setPictureUrl(obj[4] == null ? null : obj[4].toString());
|
|
|
+ bean.setModelId(obj[5] == null ? null : Long.valueOf(obj[5].toString()));
|
|
|
+ result.add(bean);
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /*---------------------------- 以下为代运营端调用方法 -----------------------------------*/
|
|
|
+ /**
|
|
|
+ * 方法名称:获取商品信息
|
|
|
+ * 功能描述:获取商品信息
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Liucl
|
|
|
+ * 日 期:2023-07-03
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public BuGoods getGoodsByIdForThird(Long goodsId) {
|
|
|
+ String hql = "from BuGoods where 1=1 and GOODS_ID = " + goodsId;
|
|
|
+ List<BuGoods> list = this.searchByHql(hql);
|
|
|
+ if (list != null && !list.isEmpty()) {
|
|
|
+ return list.get(0);
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:代运营端 根据分类id获取商品
|
|
|
+ * 功能描述:代运营端 根据分类id获取商品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Liucl
|
|
|
+ * 日 期:2023-07-04
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public List<GoodsBean> getGoodsListByStoreIdForThird(Long storeId,Long goodsTypeId) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("SELECT T.GOODS_ID, T.GOODS_NAME, T.GOODS_TYPE_ID, T.SALES_COUNT, T.SALE_PRICE, T.COST_PRICE, T.LIMITED_NUM, ");
|
|
|
+ sql.append("T.MINI_NUM, T.PICTURE_URL, T.NEW_GOODS_FLG, T.SINGLE_FLG, T.STORE_ID, T.STATUS, W.MODEL_ID,T.ORDER_KEY,T.RMK")
|
|
|
+ .append(" FROM bu_goods T LEFT JOIN bu_goods_model W ON T.GOODS_ID = W.GOODS_ID WHERE 1 = 1 ");
|
|
|
+ if (storeId != null) {
|
|
|
+ sql.append("AND STORE_ID = " + storeId + " ");
|
|
|
+ }
|
|
|
+ if (goodsTypeId != null) {
|
|
|
+ sql.append("AND GOODS_TYPE_ID = " + goodsTypeId + " ");
|
|
|
+ }
|
|
|
+ sql.append(" AND DEL_FLAG = 0 GROUP BY T.GOODS_ID ORDER BY T.ORDER_KEY DESC");
|
|
|
+ List<Object> list = this.searchBySql(sql.toString());
|
|
|
+
|
|
|
+ List<GoodsBean> result = new ArrayList<>();
|
|
|
+ for(Object object : list) {
|
|
|
+ Object[] obj = (Object[]) object;
|
|
|
+ GoodsBean bean = new GoodsBean();
|
|
|
+
|
|
|
+ bean.setGoodsId(obj[0] == null ? null : Long.valueOf(obj[0].toString()));
|
|
|
+ bean.setGoodsName(obj[1] == null ? null : obj[1].toString());
|
|
|
+ bean.setGoodsTypeId(obj[2] == null ? null : Long.valueOf(obj[2].toString()));
|
|
|
+ bean.setSalesCount(obj[3] == null ? null : Long.valueOf(obj[3].toString()));
|
|
|
+ bean.setSalePrice(obj[4] == null ? null : Long.valueOf(obj[4].toString()));
|
|
|
+ bean.setCostPrice(obj[5] == null ? null : Long.valueOf(obj[5].toString()));
|
|
|
+ bean.setLimitedNum(obj[6] == null ? null : Long.valueOf(obj[6].toString()));
|
|
|
+ bean.setMiniNum(obj[7] == null ? null : Long.valueOf(obj[7].toString()));
|
|
|
+ bean.setPictureUrl(obj[8] == null ? null : obj[8].toString());
|
|
|
+ bean.setNewGoodsFlg(obj[9] == null ? 0L : Long.valueOf(obj[9].toString()));
|
|
|
+ bean.setDiscount(String.format("%.1f", (bean.getSalePrice() * 10d) / bean.getCostPrice()));
|
|
|
+ bean.setSingleFlg(obj[10] == null ? 0L : Long.valueOf(obj[10].toString()));
|
|
|
+ bean.setStoreId(obj[11] == null ? null : Long.valueOf(obj[11].toString()));
|
|
|
+ bean.setStatus(obj[12] == null ? null : Long.valueOf(obj[12].toString()));
|
|
|
+ bean.setModelId(obj[13] == null ? null : obj[13].toString());
|
|
|
+ bean.setOrderKey(obj[14] == null ? null : Long.valueOf(obj[14].toString()));
|
|
|
+ bean.setRmk(obj[15] == null ? null : obj[15].toString());
|
|
|
+
|
|
|
+ result.add(bean);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /*---------------------------- 以下为定时器调用方法 -----------------------------------*/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:将到期的新品更新为老品
|
|
|
+ * 功能描述:将到期的新品更新为老品
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Vic
|
|
|
+ * 日 期:2023-06-01
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public void updateGoodsToOldFlgBatch(){
|
|
|
+ String sql = "update bu_goods set NEW_GOODS_FLG = 0 where NEW_GOODS_ENDDATE < current_date and NEW_GOODS_FLG = 1";
|
|
|
+ this.executeSql(sql);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:更新商品的月销量
|
|
|
+ * 功能描述:更新商品的月销量
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Vic
|
|
|
+ * 日 期:2023-06-01
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public void updateGoodsMonthsSalesCountBatch(){
|
|
|
+ String date = StringUtil.formatLongDate(DateUtil.addDDToADate(DateUtil.getSqlToday(), -30L));
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+// sql.append("UPDATE bu_goods g SET g.SALES_COUNT = IFNULL((SELECT sum(d.BUY_COUNT) FROM bu_order_detail_year d LEFT JOIN bu_order_year o ON d.ORDER_ID = o.ORDER_ID WHERE")
|
|
|
+// .append(" g.GOODS_ID = d.GOODS_ID and o.CREATE_DATE > '").append(date)
|
|
|
+// .append("' and d.ORDER_ID in (select ORDER_ID from bu_order_year where status = 60)),0)");
|
|
|
+
|
|
|
+
|
|
|
+ sql.append("UPDATE bu_goods g ");
|
|
|
+ sql.append(" JOIN ( ");
|
|
|
+ sql.append("SELECT ");
|
|
|
+ sql.append("d.GOODS_ID, ");
|
|
|
+ sql.append("SUM( d.BUY_COUNT ) AS total_sales ");
|
|
|
+ sql.append("FROM ");
|
|
|
+ sql.append("bu_order_detail_year d ");
|
|
|
+ sql.append("JOIN ( ");
|
|
|
+ sql.append("SELECT ");
|
|
|
+ sql.append("ORDER_ID ");
|
|
|
+ sql.append("FROM ");
|
|
|
+ sql.append("bu_order_year ");
|
|
|
+ sql.append("WHERE ");
|
|
|
+ sql.append("STATUS = 60 ");
|
|
|
+ sql.append("AND CREATE_DATE > '");
|
|
|
+ sql.append(date).append("') ");
|
|
|
+ sql.append(" o ON d.ORDER_ID = o.ORDER_ID ");
|
|
|
+ sql.append("GROUP BY ");
|
|
|
+ sql.append("d.GOODS_ID ");
|
|
|
+ sql.append(") s ON g.GOODS_ID = s.GOODS_ID ");
|
|
|
+ sql.append("SET g.SALES_COUNT = IFNULL( s.total_sales, 0 );");
|
|
|
+
|
|
|
+ System.out.println("更新商品的月销量sql------------------"+sql.toString());
|
|
|
+
|
|
|
+ this.executeSql(sql.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:更新商品的销售价格为活动价格
|
|
|
+ * 功能描述:更新商品的销售价格为活动价格
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Vic
|
|
|
+ * 日 期:2023-06-06
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public void updateGoodsSalesPriceBatch(Long goodsId, Long salePrice){
|
|
|
+ String sql = "update bu_goods set SALE_PRICE = " + salePrice + " where GOODS_ID =" + goodsId;
|
|
|
+ this.executeSql(sql);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 方法名称:更新商品的销售价格为商品原价
|
|
|
+ * 功能描述:更新商品的销售价格为商品原价
|
|
|
+ * 参数说明:
|
|
|
+ * 作 者:Vic
|
|
|
+ * 日 期:2023-06-06
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public void updateGoodsSalesPriceBatch(Long goodsId){
|
|
|
+ String sql = "update bu_goods set SALE_PRICE = COST_PRICE where GOODS_ID =" + goodsId;
|
|
|
+ this.executeSql(sql);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|