提交 e94a2d49 authored 作者: 梁业锦's avatar 梁业锦 💬

- 商品导入相关逻辑

上级 22005583
package com.platform.controller.api;
public class ProductExitException extends Exception {
public ProductExitException() {
super();
}
public ProductExitException(String message) {
super(message);
}
public ProductExitException(String message, Throwable cause) {
super(message, cause);
}
public ProductExitException(Throwable cause) {
super(cause);
}
protected ProductExitException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
...@@ -10,4 +10,6 @@ import com.platform.entity.TbCategoryTemplateEntity; ...@@ -10,4 +10,6 @@ import com.platform.entity.TbCategoryTemplateEntity;
*/ */
public interface TbCategoryTemplateDao extends BaseDao<TbCategoryTemplateEntity> { public interface TbCategoryTemplateDao extends BaseDao<TbCategoryTemplateEntity> {
TbCategoryTemplateEntity queryByDesc(String category_desc);
} }
...@@ -20,5 +20,6 @@ public interface TbCfCategoryDao extends BaseDao<TbCfCategoryEntity> { ...@@ -20,5 +20,6 @@ public interface TbCfCategoryDao extends BaseDao<TbCfCategoryEntity> {
int changStatusBatch(String[] itemId); int changStatusBatch(String[] itemId);
TbCfCategoryEntity queryByOrderNum(@Param("orderNum") Integer orderNum, @Param("itemId") String itemId); TbCfCategoryEntity queryByOrderNum(@Param("orderNum") Integer orderNum, @Param("itemId") String itemId);
int deleteByItemId(String itemId); int deleteByItemId(String itemId);
} }
...@@ -11,5 +11,8 @@ import java.util.List; ...@@ -11,5 +11,8 @@ import java.util.List;
* @date 2019-10-16 11:51:35 * @date 2019-10-16 11:51:35
*/ */
public interface TbCfDescripitonDao extends BaseDao<TbCfDescripitonEntity> { public interface TbCfDescripitonDao extends BaseDao<TbCfDescripitonEntity> {
List<TbCfDescripitonEntity> queryByItemTypeTwo(String id); List<TbCfDescripitonEntity> queryByItemTypeTwo(String id);
TbCfDescripitonEntity queryByDescriptionName(String descripition_name);
} }
...@@ -12,7 +12,10 @@ import java.util.List; ...@@ -12,7 +12,10 @@ import java.util.List;
* @date 2019-10-15 15:06:31 * @date 2019-10-15 15:06:31
*/ */
public interface TbCfGoodstwotypeDao extends BaseDao<TbCfGoodstwotypeEntity> { public interface TbCfGoodstwotypeDao extends BaseDao<TbCfGoodstwotypeEntity> {
GoodsTypeToGoodsTwo queryGoodsTypeId(String goodstype_id); GoodsTypeToGoodsTwo queryGoodsTypeId(String goodstype_id);
List<TbCfGoodstwotypeEntity> queryByTypeId(String typeId); List<TbCfGoodstwotypeEntity> queryByTypeId(String typeId);
TbCfGoodstwotypeEntity queryTitle(String title);
} }
...@@ -10,4 +10,12 @@ import com.platform.entity.TbCfGoodstypeEntity; ...@@ -10,4 +10,12 @@ import com.platform.entity.TbCfGoodstypeEntity;
*/ */
public interface TbCfGoodstypeDao extends BaseDao<TbCfGoodstypeEntity> { public interface TbCfGoodstypeDao extends BaseDao<TbCfGoodstypeEntity> {
/**
* 根据名称查询对象
*
* @param title 分类名称
* @return TbCfGoodstypeEntity
*/
TbCfGoodstypeEntity queryByTitle(String title);
} }
...@@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Param; ...@@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Param;
* @date 2019-12-23 14:28:47 * @date 2019-12-23 14:28:47
*/ */
public interface TbCfItemDescDao extends BaseDao<TbCfItemDescEntity> { public interface TbCfItemDescDao extends BaseDao<TbCfItemDescEntity> {
int changStatus(String itemId); int changStatus(String itemId);
int changStatusBatch(String []itemId); int changStatusBatch(String []itemId);
......
...@@ -6,7 +6,6 @@ import com.platform.entity.TbCfStationItemEntityExtends; ...@@ -6,7 +6,6 @@ import com.platform.entity.TbCfStationItemEntityExtends;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 站点商品Dao * 站点商品Dao
...@@ -15,11 +14,14 @@ import java.util.Map; ...@@ -15,11 +14,14 @@ import java.util.Map;
* @date 2019-09-20 11:03:38 * @date 2019-09-20 11:03:38
*/ */
public interface TbCfStationItemDao extends BaseDao<TbCfStationItemEntity> { public interface TbCfStationItemDao extends BaseDao<TbCfStationItemEntity> {
int changeItemStatus(@Param("status") Integer status, @Param("itemIds") String[] itemIds); int changeItemStatus(@Param("status") Integer status, @Param("itemIds") String[] itemIds);
List<ItemDescSkus> queryItemInfoById(String itemId); List<ItemDescSkus> queryItemInfoById(String itemId);
List<TbCfStationItemEntityExtends> queryByItems(); List<TbCfStationItemEntityExtends> queryByItems();
TbCfStationItemEntity queryByCode(String code);
List<TbCfStationItemEntity> queryByCodeList(String code);
} }
package com.platform.dao;
import com.platform.entity.TbProductMissEntity;
/**
* 产品导入失败记录表Dao
*
* @author lipengjun
* @date 2020-02-01 20:14:20
*/
public interface TbProductMissDao extends BaseDao<TbProductMissEntity> {
int deleteByCode(String productId);
}
...@@ -8,10 +8,23 @@ import java.util.List; ...@@ -8,10 +8,23 @@ import java.util.List;
* @Description: * @Description:
*/ */
public class ItemDescSkus extends TbCfStationItemEntity { public class ItemDescSkus extends TbCfStationItemEntity {
/**
* 商品详情
*/
private String itemDesc; private String itemDesc;
/**
* 是否立即上架
*/
private boolean putaway; private boolean putaway;
/**
* 商品主体信息
*/
private List<TbCfItemSkusEntity> prevItem; private List<TbCfItemSkusEntity> prevItem;
/**
* 商品规格信息
*/
private List<TbCfCategoryEntity> tree; private List<TbCfCategoryEntity> tree;
public String getItemDesc() { public String getItemDesc() {
return itemDesc; return itemDesc;
} }
......
...@@ -42,7 +42,6 @@ public class TbCfItemSkusEntity implements Serializable { ...@@ -42,7 +42,6 @@ public class TbCfItemSkusEntity implements Serializable {
* 属性IDS * 属性IDS
*/ */
private String optionIds; private String optionIds;
/** /**
* 排序号 * 排序号
*/ */
......
package com.platform.entity;
import java.io.Serializable;
import java.util.Date;
/**
* 产品导入失败记录表实体
* 表名 tb_product_miss
*
* @author lipengjun
* @date 2020-02-01 20:14:20
*/
public class TbProductMissEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 产品的id
*/
private String productId;
/**
* 失败类型【1:已存在】【2:出现了异常】
*/
private Integer missType;
/**
* 页数(每250个)
*/
private Integer pageSize;
/**
* 创建时间
*/
private Date createTime;
/**
* 设置:
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取:
*/
public String getId() {
return id;
}
/**
* 设置:产品的id
*/
public void setProductId(String productId) {
this.productId = productId;
}
/**
* 获取:产品的id
*/
public String getProductId() {
return productId;
}
/**
* 设置:失败类型【1:已存在】【2:出现了异常】
*/
public void setMissType(Integer missType) {
this.missType = missType;
}
/**
* 获取:失败类型【1:已存在】【2:出现了异常】
*/
public Integer getMissType() {
return missType;
}
/**
* 设置:页数(每250个)
*/
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
/**
* 获取:页数(每250个)
*/
public Integer getPageSize() {
return pageSize;
}
/**
* 设置:创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取:创建时间
*/
public Date getCreateTime() {
return createTime;
}
}
package com.platform.service;
import com.platform.entity.TbProductMissEntity;
import java.util.List;
import java.util.Map;
/**
* 产品导入失败记录表Service接口
*
* @author lipengjun
* @date 2020-02-01 20:14:20
*/
public interface TbProductMissService {
/**
* 根据主键查询实体
*
* @param id 主键
* @return 实体
*/
TbProductMissEntity queryObject(String id);
/**
* 分页查询
*
* @param map 参数
* @return list
*/
List<TbProductMissEntity> queryList(Map<String, Object> map);
/**
* 分页统计总数
*
* @param map 参数
* @return 总数
*/
int queryTotal(Map<String, Object> map);
/**
* 保存实体
*
* @param tbProductMiss 实体
* @return 保存条数
*/
int save(TbProductMissEntity tbProductMiss);
/**
* 根据主键更新实体
*
* @param tbProductMiss 实体
* @return 更新条数
*/
int update(TbProductMissEntity tbProductMiss);
/**
* 根据主键删除
*
* @param id
* @return 删除条数
*/
int delete(String id);
/**
* 根据主键批量删除
*
* @param ids
* @return 删除条数
*/
int deleteBatch(String[] ids);
}
package com.platform.service.impl;
import com.platform.dao.TbProductMissDao;
import com.platform.entity.TbProductMissEntity;
import com.platform.service.TbProductMissService;
import com.platform.utils.IdUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* 产品导入失败记录表Service实现类
*
* @author lipengjun
* @date 2020-02-01 20:14:20
*/
@Service("tbProductMissService")
public class TbProductMissServiceImpl implements TbProductMissService {
@Autowired
private TbProductMissDao tbProductMissDao;
@Override
public TbProductMissEntity queryObject(String id) {
return tbProductMissDao.queryObject(id);
}
@Override
public List<TbProductMissEntity> queryList(Map<String, Object> map) {
return tbProductMissDao.queryList(map);
}
@Override
public int queryTotal(Map<String, Object> map) {
return tbProductMissDao.queryTotal(map);
}
@Override
public int save(TbProductMissEntity tbProductMiss) {
tbProductMiss.setId(IdUtil.createIdbyUUID());
return tbProductMissDao.save(tbProductMiss);
}
@Override
public int update(TbProductMissEntity tbProductMiss) {
return tbProductMissDao.update(tbProductMiss);
}
@Override
public int delete(String id) {
return tbProductMissDao.delete(id);
}
@Override
public int deleteBatch(String[] ids) {
return tbProductMissDao.deleteBatch(ids);
}
}
package com.platform.task; package com.platform.task;
import cn.hutool.http.HttpRequest;
import com.platform.entity.ItemDescSkus;
import com.platform.utils.IdUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.util.*;
/** /**
* @Auther: wudepeng * 获取 Shopify 商品信息及其保存商品信息
* @Date: 2019/11/15 *
* @Description: Shopify url * @author wudepeng
* @author 爱酱油不爱醋
* @date 2019/11/15
* @date 2020/1/22
*/ */
public class ShopifyConstant { public class ShopifyConstant {
...@@ -17,12 +27,74 @@ public class ShopifyConstant { ...@@ -17,12 +27,74 @@ public class ShopifyConstant {
//password //password
public static String SHOPIFY_PASSWORD = "1c97a1222c5b40e0597c816c6dfecac0"; public static String SHOPIFY_PASSWORD = "1c97a1222c5b40e0597c816c6dfecac0";
//api //api
public static String SHOPIFY_PRODUCTS_API = "/admin/api/2019-10/products.json"; public static String SHOPIFY_PRODUCTS_API = "/admin/api/2020-01/products.json";
//https://7f0e048ac4016b9357bb1eb2217e4201:1c97a1222c5b40e0597c816c6dfecac0@mollykitty.myshopify.com/admin/api/2019-10/products.json?fields=product_type;
public static String countUrl() {
return "https://" + SHOPIFY_API_KEY + ":" + SHOPIFY_PASSWORD + "@" + SHOPIFY_HOSTNAME + "/admin/api/2020-01/count.json";
}
public static String productId(String productId) {
return "https://" + SHOPIFY_API_KEY + ":" + SHOPIFY_PASSWORD + "@" + SHOPIFY_HOSTNAME + "/admin/api/2020-01/products/" + productId + ".json";
}
public static String productTypeUrl() { public static String productTypeUrl() {
return "https://" + SHOPIFY_API_KEY + ":" + SHOPIFY_PASSWORD + "@" + SHOPIFY_HOSTNAME + SHOPIFY_PRODUCTS_API; return "https://" + SHOPIFY_API_KEY + ":" + SHOPIFY_PASSWORD + "@" + SHOPIFY_HOSTNAME + SHOPIFY_PRODUCTS_API + "?limit=250";
}
public static void main(String[] args) {
String result = HttpRequest.get(productTypeUrl())
.header("Authorization", "Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA=")
.execute().body();
JSONObject jsonObject = JSONObject.fromObject(result);
ItemDescSkus itemDescSkus = new ItemDescSkus();
// 取每个数组中的 products 数组节点
JSONArray productsArr = jsonObject.getJSONArray("products");
for (int i = 0; i < productsArr.size(); i++) {
JSONObject productsObj = productsArr.getJSONObject(i);
// 商品的基本属性
String id = productsObj.getString("id");
String title = productsObj.getString("title");
String product_type = productsObj.getString("product_type");
String handle = productsObj.getString("handle");
String tags = productsObj.getString("tags");
String image = productsObj.getJSONObject("image").getString("src");
String vendor = productsObj.getString("vendor");
// 商品的规格属性
Map<String, HashMap<String, Set<String>>> optionMap = new HashMap<>(3);
Map<String, Set<String>> skuMap = new HashMap<>(5);
JSONArray optionsArr = new JSONArray();
for (int j = 0; j < optionsArr.size(); j++) {
JSONObject optionsObj = optionsArr.getJSONObject(j);
String optionsName = optionsObj.getString("name"); // 商品的属性名
Set<String> optionsSet = new HashSet<>(); // 商品的属性集合
JSONArray optionsValuesArr = new JSONArray();
for (int k = 0; k < optionsValuesArr.size(); k++) {
optionsSet.add(optionsValuesArr.getString(k));
}
skuMap.put(optionsName, optionsSet); // 保存数据
} }
// TODO 商品的价格属性
// 商品的图片集合
List<String> imagesList = new ArrayList<>(5);
JSONArray imageArr = productsObj.getJSONArray("images");
for (int j = 0; j < imageArr.size(); j++) {
imagesList.add(imageArr.getJSONObject(j).getString("src")); // 图片组的图片路径
}
// 商品的基本属性
itemDescSkus.setItemId(IdUtil.createIdbyUUID());
itemDescSkus.setItemCode(id);
itemDescSkus.setItemName(title);
itemDescSkus.setItemBrief(title);
itemDescSkus.setItemCategory(product_type);
itemDescSkus.setItemUrl("https://www.afrieshop.com/products/" + handle);
itemDescSkus.setItemTags(tags);
itemDescSkus.setItemUrl(image);
itemDescSkus.setSupplier(vendor);
}
}
} }
...@@ -24,6 +24,19 @@ ...@@ -24,6 +24,19 @@
where id = #{id} where id = #{id}
</select> </select>
<select id="queryByDesc" resultType="com.platform.entity.TbCategoryTemplateEntity">
select
`id`,
`category_name`,
`category_desc`,
`del_flag`,
`create_time`,
`update_time`
from tb_category_template
where category_desc = #{category_desc}
</select>
<select id="queryList" resultType="com.platform.entity.TbCategoryTemplateEntity"> <select id="queryList" resultType="com.platform.entity.TbCategoryTemplateEntity">
select select
`id`, `id`,
......
...@@ -106,18 +106,22 @@ ...@@ -106,18 +106,22 @@
</set> </set>
where category_id = #{categoryId} where category_id = #{categoryId}
</update> </update>
<update id="changStatus" parameterType="com.platform.entity.TbCfCategoryEntity"> <update id="changStatus" parameterType="com.platform.entity.TbCfCategoryEntity">
update tb_cf_category set del_flag=0 where item_id=#{itemId} update tb_cf_category set del_flag=0 where item_id=#{itemId}
</update> </update>
<update id="changStatusBatch" parameterType="com.platform.entity.TbCfCategoryEntity"> <update id="changStatusBatch" parameterType="com.platform.entity.TbCfCategoryEntity">
update tb_cf_category set del_flag=0 where item_id in update tb_cf_category set del_flag=0 where item_id in
<foreach item="itemId" collection="array" open="(" separator="," close=")"> <foreach item="itemId" collection="array" open="(" separator="," close=")">
#{itemId} #{itemId}
</foreach> </foreach>
</update> </update>
<select id="queryByItemId" resultType="com.platform.entity.TbCfCategoryEntity"> <select id="queryByItemId" resultType="com.platform.entity.TbCfCategoryEntity">
select * from tb_cf_category where item_id=#{itemId} order by order_num asc select * from tb_cf_category where item_id=#{itemId} order by order_num asc
</select> </select>
<delete id="delete"> <delete id="delete">
delete from tb_cf_category where category_id = #{value} delete from tb_cf_category where category_id = #{value}
</delete> </delete>
...@@ -128,6 +132,7 @@ ...@@ -128,6 +132,7 @@
#{categoryId} #{categoryId}
</foreach> </foreach>
</delete> </delete>
<delete id="deleteByItemId"> <delete id="deleteByItemId">
delete from tb_cf_category where item_id =#{itemId} delete from tb_cf_category where item_id =#{itemId}
</delete> </delete>
......
...@@ -27,6 +27,13 @@ ...@@ -27,6 +27,13 @@
from tb_cf_descripiton from tb_cf_descripiton
where descripition_id = #{id} where descripition_id = #{id}
</select> </select>
<select id="queryByDescriptionName" resultType="com.platform.entity.TbCfDescripitonEntity">
select *
from tb_cf_descripiton
where descripition_name = #{descripition_name}
</select>
<select id="queryByItemTypeTwo" resultType="com.platform.entity.TbCfDescripitonEntity"> <select id="queryByItemTypeTwo" resultType="com.platform.entity.TbCfDescripitonEntity">
select select
`descripition_id`, `descripition_id`,
......
...@@ -29,6 +29,14 @@ ...@@ -29,6 +29,14 @@
INNER JOIN tb_cf_goodstype ds ON ds.goodstype_id = tw.goodstype_id INNER JOIN tb_cf_goodstype ds ON ds.goodstype_id = tw.goodstype_id
where tw.goodstwotype_id = #{id} where tw.goodstwotype_id = #{id}
</select> </select>
<select id="queryTitle" resultType="com.platform.entity.TbCfGoodstwotypeEntity">
SELECT
*
FROM tb_cf_goodstwotype
where goodstwotype_title = #{title}
</select>
<select id="queryByTypeId" resultType="com.platform.entity.TbCfGoodstwotypeEntity"> <select id="queryByTypeId" resultType="com.platform.entity.TbCfGoodstwotypeEntity">
select select
`goodstwotype_id`, `goodstwotype_id`,
...@@ -38,6 +46,7 @@ ...@@ -38,6 +46,7 @@
from tb_cf_goodstwotype from tb_cf_goodstwotype
WHERE goodstype_id= #{id} WHERE goodstype_id= #{id}
</select> </select>
<select id="queryObject" resultType="com.platform.entity.TbCfGoodstwotypeEntity"> <select id="queryObject" resultType="com.platform.entity.TbCfGoodstwotypeEntity">
select select
`goodstwotype_id`, `goodstwotype_id`,
......
...@@ -20,6 +20,16 @@ ...@@ -20,6 +20,16 @@
where goodstype_id = #{id} where goodstype_id = #{id}
</select> </select>
<select id="queryByTitle" resultType="com.platform.entity.TbCfGoodstypeEntity">
select
`goodstype_id`,
`goodstype_title`,
`goodstype_sort`,
`goodstype_url`
from tb_cf_goodstype
where goodstype_title = #{title}
</select>
<select id="queryList" resultType="com.platform.entity.TbCfGoodstypeEntity"> <select id="queryList" resultType="com.platform.entity.TbCfGoodstypeEntity">
select select
`goodstype_id`, `goodstype_id`,
......
...@@ -82,6 +82,19 @@ ...@@ -82,6 +82,19 @@
where where
i.enable_flag!=0 i.enable_flag!=0
</select> </select>
<select id="queryByCode" resultType="com.platform.entity.TbCfStationItemEntity">
SELECT *
FROM tb_cf_station_item
WHERE item_code = #{code}
</select>
<select id="queryByCodeList" resultType="com.platform.entity.TbCfStationItemEntity">
SELECT *
FROM tb_cf_station_item
WHERE item_code = #{code}
</select>
<select id="queryList" resultType="com.platform.entity.TbCfStationItemEntityExtends"> <select id="queryList" resultType="com.platform.entity.TbCfStationItemEntityExtends">
SELECT SELECT
i.item_id, i.item_id,
...@@ -139,6 +152,7 @@ ...@@ -139,6 +152,7 @@
</if> </if>
</select> </select>
<select id="queryItemInfoById" resultType="com.platform.entity.ItemDescSkus"> <select id="queryItemInfoById" resultType="com.platform.entity.ItemDescSkus">
SELECT SELECT
i.*, i.*,
...@@ -151,6 +165,7 @@ ...@@ -151,6 +165,7 @@
WHERE WHERE
i.item_id = #{itemId} i.item_id = #{itemId}
</select> </select>
<select id="queryTotal" resultType="int"> <select id="queryTotal" resultType="int">
select count(*) from tb_cf_station_item select count(*) from tb_cf_station_item
WHERE 1=1 and enable_flag!=0 WHERE 1=1 and enable_flag!=0
...@@ -240,7 +255,6 @@ ...@@ -240,7 +255,6 @@
</update> </update>
<delete id="delete"> <delete id="delete">
delete from tb_cf_station_item where item_id = #{value} delete from tb_cf_station_item where item_id = #{value}
</delete> </delete>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.platform.dao.TbProductMissDao">
<resultMap type="com.platform.entity.TbProductMissEntity" id="tbProductMissMap">
<result property="id" column="id"/>
<result property="productId" column="product_id"/>
<result property="missType" column="miss_type"/>
<result property="pageSize" column="page_size"/>
<result property="createTime" column="create_time"/>
</resultMap>
<select id="queryObject" resultType="com.platform.entity.TbProductMissEntity">
select
`id`,
`product_id`,
`miss_type`,
`page_size`,
`create_time`
from tb_product_miss
where id = #{id}
</select>
<select id="queryList" resultType="com.platform.entity.TbProductMissEntity">
select
`id`,
`product_id`,
`miss_type`,
`page_size`,
`create_time`
from tb_product_miss
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<otherwise>
order by id desc
</otherwise>
</choose>
<if test="offset != null and limit != null">
limit #{offset}, #{limit}
</if>
</select>
<select id="queryTotal" resultType="int">
select count(*) from tb_product_miss
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
</select>
<insert id="save" parameterType="com.platform.entity.TbProductMissEntity">
insert into tb_product_miss(
`id`,
`product_id`,
`miss_type`,
`page_size`,
`create_time`)
values(
#{id},
#{productId},
#{missType},
#{pageSize},
#{createTime})
</insert>
<update id="update" parameterType="com.platform.entity.TbProductMissEntity">
update tb_product_miss
<set>
<if test="productId != null">`product_id` = #{productId}, </if>
<if test="missType != null">`miss_type` = #{missType}, </if>
<if test="pageSize != null">`page_size` = #{pageSize}, </if>
<if test="createTime != null">`create_time` = #{createTime}</if>
</set>
where id = #{id}
</update>
<delete id="deleteByCode">
delete from tb_product_miss where product_id = #{productId};
</delete>
<delete id="deleteBatch">
delete from tb_product_miss where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.platform.dao,com.platform.service">
<!--过滤定时任务service-->
<context:exclude-filter type="regex" expression="com.platform.service.impl.ScheduleJobServiceImpl"/>
</context:component-scan>
<context:property-placeholder location="classpath:platform.properties"/>
<context:annotation-config/>
<mvc:default-servlet-handler/>
<aop:aspectj-autoproxy proxy-target-class="true"/>
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
<property name="features">
<list>
<value>WriteMapNullValue</value>
<value>QuoteFieldNames</value>
<value>WriteDateUseDateFormat</value>
<!-- 禁用fastjson循环引用检测 -->
<value>DisableCircularReferenceDetect</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<tx:annotation-driven/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="url">
<value>${jdbc.url}</value>
</property>
<property name="username">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
<property name="initialSize">
<value>${jdbc.initialSize}</value>
</property>
<property name="maxActive">
<value>${jdbc.maxActive}</value>
</property>
<property name="proxyFilters">
<list>
<ref bean="stat-filter"/>
<!--过滤永真条件 防止注入-->
<ref bean="wall-filter"/>
</list>
</property>
<property name="connectionInitSqls" value="set names utf8mb4;"/>
</bean>
<bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
<property name="slowSqlMillis" value="1000"/>
<property name="logSlowSql" value="true"/>
<property name="mergeSql" value="true"/>
</bean>
<bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">
<property name="dbType" value="mysql"/>
<property name="config" ref="wall-filter-config"/>
</bean>
<bean id="wall-filter-config" class="com.alibaba.druid.wall.WallConfig">
<property name="multiStatementAllow" value="true"/>
</bean>
<bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor"></bean>
<bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
<property name="patterns">
<list>
<value>com.platform.service.*</value>
</list>
</property>
</bean>
<aop:config>
<aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut"/>
</aop:config>
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<!-- JDBC配置 -->
<bean id="namedParameterJdbcTemplate"
class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="dataSource"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.platform.dao,com.platform.*.dao"/>
</bean>
</beans>
log4j.rootLogger=INFO,stdout,info,warn,error,file
#控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.Threshold=INFO
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%5p|%F.%M:%L|%m%n
#INFO所有日志
log4j.logger.file=info
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=../logs/info.log
log4j.appender.file.datePattern='.'yyyy-MM-dd'.log'
log4j.appender.file.append=true
log4j.appender.file.Threshold=INFO
log4j.appender.file.encoding=UTF-8
log4j.appender.file.ImmediateFlush=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%5p|%F.%M:%L|%m%n
#INFO日志
log4j.logger.info=info
log4j.appender.info=com.platform.log4j.GradeLogDailyRollingFileAppender
log4j.appender.info.File=../logs/info/info.log
log4j.appender.info.datePattern='.'yyyy-MM-dd'.log'
log4j.appender.info.append=true
log4j.appender.info.Threshold=INFO
log4j.appender.info.encoding=UTF-8
log4j.appender.info.ImmediateFlush=true
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%5p|%F.%M:%L|%m%n
#WARN日志
log4j.appender.warn=com.platform.log4j.GradeLogDailyRollingFileAppender
log4j.appender.warn.File=../logs/warn/warn.log
log4j.appender.warn.datePattern='.'yyyy-MM-dd'.log'
log4j.appender.warn.append=true
log4j.appender.warn.Threshold=WARN
log4j.appender.warn.encoding=UTF-8
log4j.appender.warn.ImmediateFlush=true
log4j.appender.warn.layout=org.apache.log4j.PatternLayout
log4j.appender.warn.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%5p|%F.%M:%L|%m%n
#ERROR日志
log4j.appender.error=com.platform.log4j.GradeLogDailyRollingFileAppender
log4j.appender.error.File=../logs/error/error.log
log4j.appender.error.datePattern='.'yyyy-MM-dd'.log'
log4j.appender.error.append=true
log4j.appender.error.Threshold=ERROR
log4j.appender.error.encoding=UTF-8
log4j.appender.error.ImmediateFlush=true
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%5p|%F.%M:%L|%m%n
#执行慢的SQL
log4j.logger.com.alibaba.druid.filter.stat.StatFilter=ERROR,slowsql
log4j.appender.slowsql=org.apache.log4j.DailyRollingFileAppender
log4j.appender.slowsql.File=../logs/slow_sql/slow_sql.log
log4j.appender.slowsql.datePattern='.'yyyy-MM-dd'.log'
log4j.appender.slowsql.append=true
log4j.appender.slowsql.encoding=UTF-8
log4j.appender.slowsql.ImmediateFlush=true
log4j.appender.slowsql.layout=org.apache.log4j.PatternLayout
log4j.appender.slowsql.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%5p|%F.%M:%L|%m%n
#控制台输出所有SQL
#便于调试 生产环境注释
log4j.logger.com.platform.dao=DEBUG,sql
log4j.appender.sql=org.apache.log4j.ConsoleAppender
log4j.appender.sql.Target=System.out
log4j.appender.sql.layout=org.apache.log4j.PatternLayout
log4j.appender.sql.layout.ConversionPattern=%m %n
#jdbc.url=jdbc:mysql://localhost:3306/chinafrica?allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8
#jdbc.username=root
#jdbc.password=root
jdbc.url=jdbc:mysql://47.106.242.175:3306/chinafrica?allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=diaoyun666
#jdbc.url: jdbc:mysql://159.138.48.71:3306/chinafrica?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=false
#jdbc.username: root
#jdbc.password: Diaoyunnuli.8
jdbc.initialSize=5
jdbc.maxActive=30
jdbc.minPoolSize=2
jdbc.maxIdleTime=30000
jdbc.idleConnectionTestPeriod=100
...@@ -291,6 +291,11 @@ ...@@ -291,6 +291,11 @@
<artifactId>jgroups</artifactId> <artifactId>jgroups</artifactId>
<version>${jgroups.version}</version> <version>${jgroups.version}</version>
</dependency> </dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.1.1</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论