提交 8b3336f4 authored 作者: zgy's avatar zgy

完成商品管理,sku,规格,属性等

上级 993a9ef9
package com.platform.controller;
import com.platform.entity.TbCfItemSkusEntity;
import com.platform.service.TbCfItemSkusService;
import com.platform.utils.PageUtils;
import com.platform.utils.Query;
import com.platform.utils.R;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
import java.util.Map;
/**
* Controller
*
* @author lipengjun
* @date 2019-12-24 17:10:28
*/
@Controller
@RequestMapping("tbcfitemskus")
public class TbCfItemSkusController {
@Autowired
private TbCfItemSkusService tbCfItemSkusService;
/**
* 查看列表
*/
@RequestMapping("/list")
@RequiresPermissions("tbcfitemskus:list")
@ResponseBody
public R list(@RequestParam Map<String, Object> params) {
//查询列表数据
Query query = new Query(params);
List<TbCfItemSkusEntity> tbCfItemSkusList = tbCfItemSkusService.queryList(query);
int total = tbCfItemSkusService.queryTotal(query);
PageUtils pageUtil = new PageUtils(tbCfItemSkusList, total, query.getLimit(), query.getPage());
return R.ok().put("page", pageUtil);
}
/**
* 查看信息
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("tbcfitemskus:info")
@ResponseBody
public R info(@PathVariable("id") String id) {
TbCfItemSkusEntity tbCfItemSkus = tbCfItemSkusService.queryObject(id);
return R.ok().put("tbCfItemSkus", tbCfItemSkus);
}
/**
* 保存
*/
@RequestMapping("/save")
@RequiresPermissions("tbcfitemskus:save")
@ResponseBody
public R save(@RequestBody TbCfItemSkusEntity tbCfItemSkus) {
tbCfItemSkusService.save(tbCfItemSkus);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@RequiresPermissions("tbcfitemskus:update")
@ResponseBody
public R update(@RequestBody TbCfItemSkusEntity tbCfItemSkus) {
tbCfItemSkusService.update(tbCfItemSkus);
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
@RequiresPermissions("tbcfitemskus:delete")
@ResponseBody
public R delete(@RequestBody String[] ids) {
tbCfItemSkusService.deleteBatch(ids);
return R.ok();
}
/**
* 查看所有列表
*/
@RequestMapping("/queryAll")
@ResponseBody
public R queryAll(@RequestParam Map<String, Object> params) {
List<TbCfItemSkusEntity> list = tbCfItemSkusService.queryList(params);
return R.ok().put("list", list);
}
}
package com.platform.controller;
import com.platform.entity.TbCfDescripitonEntity;
import com.platform.entity.TbCfGoodstwotypeEntity;
import com.platform.entity.TbCfStationItemEntity;
import com.platform.entity.*;
import com.platform.enums.OssFolderNameEnum;
import com.platform.service.TbCfDescripitonService;
import com.platform.service.TbCfGoodstwotypeService;
......@@ -17,6 +15,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;
......@@ -81,9 +80,8 @@ public class TbCfStationItemController extends ApiBaseAction {
@RequiresPermissions("tbcfstationitem:info")
@ResponseBody
public R info(@PathVariable("itemId") String itemId) {
TbCfStationItemEntity tbCfStationItem = tbCfStationItemService.queryObject(itemId);
return R.ok().put("tbCfStationItem", tbCfStationItem);
ItemInfo itemInfo = tbCfStationItemService.queryItemInfoById(itemId);
return R.ok().put("tbCfStationItem", itemInfo);
}
/**
......@@ -92,8 +90,8 @@ public class TbCfStationItemController extends ApiBaseAction {
@RequestMapping("/save")
@RequiresPermissions("tbcfstationitem:save")
@ResponseBody
public R save(@RequestBody TbCfStationItemEntity tbCfStationItem, String itemDesc) {
tbCfStationItemService.save(tbCfStationItem, itemDesc);
public R save(@RequestBody ItemDescSkus items) throws UnsupportedEncodingException {
tbCfStationItemService.save(items);
return R.ok();
}
......@@ -103,8 +101,8 @@ public class TbCfStationItemController extends ApiBaseAction {
@RequestMapping("/update")
@RequiresPermissions("tbcfstationitem:update")
@ResponseBody
public R update(@RequestBody TbCfStationItemEntity tbCfStationItem, String itemDesc) {
tbCfStationItemService.update(tbCfStationItem, itemDesc);
public R update(@RequestBody ItemDescSkus items, String itemDesc)throws UnsupportedEncodingException {
tbCfStationItemService.update(items, itemDesc);
return R.ok();
}
......
package com.platform.dao;
import com.platform.entity.TbCfCategoryEntity;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Dao
*
* @author lipengjun
* @date 2019-12-26 15:10:48
*/
public interface TbCfCategoryDao extends BaseDao<TbCfCategoryEntity> {
List<TbCfCategoryEntity> queryByItemId(String itemId);
int changStatus(String itemId);
int changStatusBatch(String[] itemId);
TbCfCategoryEntity queryByOrderNum(@Param("orderNum") Integer orderNum, @Param("itemId") String itemId);
}
......@@ -10,5 +10,7 @@ import org.apache.ibatis.annotations.Param;
* @date 2019-12-23 14:28:47
*/
public interface TbCfItemDescDao extends BaseDao<TbCfItemDescEntity> {
int changeItemDescStatus(@Param("status") Integer status, @Param("itemIds") String[] itemIds);
int changStatus(String itemId);
int changStatusBatch(String []itemId);
}
package com.platform.dao;
import com.platform.entity.TbCfItemSkusEntity;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Dao
*
* @author lipengjun
* @date 2019-12-24 17:10:28
*/
public interface TbCfItemSkusDao extends BaseDao<TbCfItemSkusEntity> {
List<TbCfItemSkusEntity> querySkusByItemId(String itemId);
int changStatus(String itemId);
int changStatusBatch(String[] itemId);
TbCfItemSkusEntity queryByOrderNum(@Param("orderNum") Integer orderNum, @Param("itemId") String itemId);
int deleteByItemId(String itemId);
}
package com.platform.dao;
import com.platform.entity.TbCfOptionEntity;
/**
* 商品属性Dao
*
* @author lipengjun
* @date 2019-12-26 16:36:21
*/
public interface TbCfOptionDao extends BaseDao<TbCfOptionEntity> {
int changStatus(String itemId);
int changStatusBatch(String[] itemIds);
int deleteByItemId(String itemId);
}
package com.platform.dao;
import com.platform.entity.ItemDescSkus;
import com.platform.entity.TbCfStationItemEntity;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 站点商品Dao
*
......@@ -11,4 +14,5 @@ import org.apache.ibatis.annotations.Param;
*/
public interface TbCfStationItemDao extends BaseDao<TbCfStationItemEntity> {
int changeItemStatus(@Param("status") Integer status, @Param("itemIds") String[] itemIds);
List<ItemDescSkus> queryItemInfoById(String itemId);
}
package com.platform.entity;
import java.util.List;
/**
* @Auther: wudepeng
* @Date: 2019/12/24
* @Description:
*/
public class ItemDescSkus extends TbCfStationItemEntity {
private String itemDesc;
private boolean putaway;
private List<TbCfItemSkusEntity> prevItem;
private List<TbCfCategoryEntity> tree;
public String getItemDesc() {
return itemDesc;
}
public void setItemDesc(String itemDesc) {
this.itemDesc = itemDesc;
}
public boolean isPutaway() {
return putaway;
}
public void setPutaway(boolean putaway) {
this.putaway = putaway;
}
public List<TbCfItemSkusEntity> getPrevItem() {
return prevItem;
}
public void setPrevItem(List<TbCfItemSkusEntity> prevItem) {
this.prevItem = prevItem;
}
public List<TbCfCategoryEntity> getTree() {
return tree;
}
public void setTree(List<TbCfCategoryEntity> tree) {
this.tree = tree;
}
}
package com.platform.entity;
import java.util.List;
/**
* @Auther: wudepeng
* @Date: 2019/12/25
* @Description:
*/
public class ItemInfo {
private TbCfStationItemEntity item;
private TbCfItemDescEntity itemDesc;
private List<TbCfItemSkusEntity> itemSkusList;
private List<TbCfCategoryEntity> categoryList;
public TbCfStationItemEntity getItem() {
return item;
}
public void setItem(TbCfStationItemEntity item) {
this.item = item;
}
public TbCfItemDescEntity getItemDesc() {
return itemDesc;
}
public void setItemDesc(TbCfItemDescEntity itemDesc) {
this.itemDesc = itemDesc;
}
public List<TbCfItemSkusEntity> getItemSkusList() {
return itemSkusList;
}
public void setItemSkusList(List<TbCfItemSkusEntity> itemSkusList) {
this.itemSkusList = itemSkusList;
}
public List<TbCfCategoryEntity> getCategoryList() {
return categoryList;
}
public void setCategoryList(List<TbCfCategoryEntity> categoryList) {
this.categoryList = categoryList;
}
}
package com.platform.entity;
import java.util.List;
/**
* @Auther: wudepeng
* @Date: 2019/12/26
* @Description:属性封装类
*/
public class ItemOptions {
private List<Option> option;
public void setOption(List<Option> option) {
this.option = option;
}
public List<Option> getOption() {
return option;
}
}
package com.platform.entity;
/**
* @Auther: wudepeng
* @Date: 2019/12/26
* @Description:商品属性
*/
public class Option {
private String opt_order;
private String opt_name;
private String opt_desc;
public void setOpt_order(String opt_order) {
this.opt_order = opt_order;
}
public String getOpt_order() {
return opt_order;
}
public void setOpt_name(String opt_name) {
this.opt_name = opt_name;
}
public String getOpt_name() {
return opt_name;
}
public void setOpt_desc(String opt_desc) {
this.opt_desc = opt_desc;
}
public String getOpt_desc() {
return opt_desc;
}
}
package com.platform.entity;
import java.io.Serializable;
import java.util.Date;
/**
* 实体
* 表名 tb_cf_category
*
* @author lipengjun
* @date 2019-12-26 21:20:36
*/
public class TbCfCategoryEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 商品规格ID
*/
private String categoryId;
/**
* 规格名称
*/
private String categoryName;
/**
* 规格详情
*/
private String categoryDesc;
/**
* option
*/
private String option;
/**
* 商品ID
*/
private String itemId;
/**
* 排序
*/
private Integer orderNum;
/**
* 删除标志 0:正常 1:已删除
*/
private Integer delFlag;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 设置:商品规格ID
*/
public void setCategoryId(String categoryId) {
this.categoryId = categoryId;
}
/**
* 获取:商品规格ID
*/
public String getCategoryId() {
return categoryId;
}
/**
* 设置:规格名称
*/
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
/**
* 获取:规格名称
*/
public String getCategoryName() {
return categoryName;
}
/**
* 设置:规格详情
*/
public void setCategoryDesc(String categoryDesc) {
this.categoryDesc = categoryDesc;
}
/**
* 获取:规格详情
*/
public String getCategoryDesc() {
return categoryDesc;
}
/**
* 设置:option
*/
public void setOption(String option) {
this.option = option;
}
/**
* 获取:option
*/
public String getOption() {
return option;
}
/**
* 设置:商品ID
*/
public void setItemId(String itemId) {
this.itemId = itemId;
}
/**
* 获取:商品ID
*/
public String getItemId() {
return itemId;
}
/**
* 设置:排序
*/
public void setOrderNum(Integer orderNum) {
this.orderNum = orderNum;
}
/**
* 获取:排序
*/
public Integer getOrderNum() {
return orderNum;
}
/**
* 设置:删除标志 0:正常 1:已删除
*/
public void setDelFlag(Integer delFlag) {
this.delFlag = delFlag;
}
/**
* 获取:删除标志 0:正常 1:已删除
*/
public Integer getDelFlag() {
return delFlag;
}
/**
* 设置:创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取:创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置:更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取:更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
}
package com.platform.entity;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 实体
* 表名 tb_cf_item_skus
*
* @author lipengjun
* @date 2019-12-26 20:47:21
*/
public class TbCfItemSkusEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 商品规格ID
*/
private String id;
/**
* 商品ID
*/
private String itemId;
/**
* 数量
*/
private Integer skuCount;
/**
* 规格名称
*/
private String skuName;
/**
* 规格描述
*/
private String skuDesc;
/**
* 价格
*/
private BigDecimal skuPrice;
/**
* 属性IDS
*/
private String optionIds;
/**
* 排序号
*/
private Integer orderNum;
/**
* 删除标记
*/
private Integer delFlag;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 设置:商品规格ID
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取:商品规格ID
*/
public String getId() {
return id;
}
/**
* 设置:商品ID
*/
public void setItemId(String itemId) {
this.itemId = itemId;
}
/**
* 获取:商品ID
*/
public String getItemId() {
return itemId;
}
/**
* 设置:规格名称
*/
public void setSkuName(String skuName) {
this.skuName = skuName;
}
/**
* 获取:规格名称
*/
public String getSkuName() {
return skuName;
}
/**
* 设置:规格描述
*/
public void setSkuDesc(String skuDesc) {
this.skuDesc = skuDesc;
}
/**
* 获取:规格描述
*/
public String getSkuDesc() {
return skuDesc;
}
/**
* 设置:价格
*/
public void setSkuPrice(BigDecimal skuPrice) {
this.skuPrice = skuPrice;
}
/**
* 获取:价格
*/
public BigDecimal getSkuPrice() {
return skuPrice;
}
/**
* 设置:属性IDS
*/
public void setOptionIds(String optionIds) {
this.optionIds = optionIds;
}
/**
* 获取:属性IDS
*/
public String getOptionIds() {
return optionIds;
}
/**
* 设置:数量
*/
public void setSkuCount(Integer skuCount) {
this.skuCount = skuCount;
}
/**
* 获取:数量
*/
public Integer getSkuCount() {
return skuCount;
}
/**
* 设置:排序号
*/
public void setOrderNum(Integer orderNum) {
this.orderNum = orderNum;
}
/**
* 获取:排序号
*/
public Integer getOrderNum() {
return orderNum;
}
/**
* 设置:删除标记
*/
public void setDelFlag(Integer delFlag) {
this.delFlag = delFlag;
}
/**
* 获取:删除标记
*/
public Integer getDelFlag() {
return delFlag;
}
/**
* 设置:创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取:创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置:更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取:更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
}
package com.platform.entity;
import java.io.Serializable;
import java.util.Date;
/**
* 商品属性实体
* 表名 tb_cf_option
*
* @author lipengjun
* @date 2019-12-26 16:36:21
*/
public class TbCfOptionEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 商品属性
*/
private String optionId;
/**
* 属性名
*/
private String optionName;
/**
* 属性种类
*/
private String optiionSpecies;
/**
* 商品ID
*/
private String itemId;
/**
* 商品规格ID
*/
private String cid;
/**
* 删除标志 0:正常 1:已删除
*/
private Integer delFlag;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 设置:商品属性
*/
public void setOptionId(String optionId) {
this.optionId = optionId;
}
/**
* 获取:商品属性
*/
public String getOptionId() {
return optionId;
}
/**
* 设置:属性名
*/
public void setOptionName(String optionName) {
this.optionName = optionName;
}
/**
* 获取:属性名
*/
public String getOptionName() {
return optionName;
}
/**
* 设置:属性种类
*/
public void setOptiionSpecies(String optiionSpecies) {
this.optiionSpecies = optiionSpecies;
}
/**
* 获取:属性种类
*/
public String getOptiionSpecies() {
return optiionSpecies;
}
/**
* 设置:商品ID
*/
public void setItemId(String itemId) {
this.itemId = itemId;
}
/**
* 获取:商品ID
*/
public String getItemId() {
return itemId;
}
/**
* 设置:商品规格ID
*/
public void setCid(String cid) {
this.cid = cid;
}
/**
* 获取:商品规格ID
*/
public String getCid() {
return cid;
}
/**
* 设置:删除标志 0:正常 1:已删除
*/
public void setDelFlag(Integer delFlag) {
this.delFlag = delFlag;
}
/**
* 获取:删除标志 0:正常 1:已删除
*/
public Integer getDelFlag() {
return delFlag;
}
/**
* 设置:创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取:创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置:更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取:更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
}
......@@ -77,7 +77,7 @@ public class TbCfStationItemEntity implements Serializable {
/**
* 状态 0、删除 1、上架 2、下架
*/
private Integer enableFlag;
private Integer enableFlag=2;
/**
* 创建日期
*/
......
package com.platform.service;
import com.platform.entity.TbCfCategoryEntity;
import java.util.List;
import java.util.Map;
/**
* Service接口
*
* @author lipengjun
* @date 2019-12-26 15:10:48
*/
public interface TbCfCategoryService {
/**
* 根据主键查询实体
*
* @param id 主键
* @return 实体
*/
TbCfCategoryEntity queryObject(String categoryId);
/**
* 分页查询
*
* @param map 参数
* @return list
*/
List<TbCfCategoryEntity> queryList(Map<String, Object> map);
/**
* 分页统计总数
*
* @param map 参数
* @return 总数
*/
int queryTotal(Map<String, Object> map);
/**
* 保存实体
*
* @param tbCfCategory 实体
* @return 保存条数
*/
int save(TbCfCategoryEntity tbCfCategory);
/**
* 根据主键更新实体
*
* @param tbCfCategory 实体
* @return 更新条数
*/
int update(TbCfCategoryEntity tbCfCategory);
/**
* 根据主键删除
*
* @param categoryId
* @return 删除条数
*/
int delete(String categoryId);
/**
* 根据主键批量删除
*
* @param categoryIds
* @return 删除条数
*/
int deleteBatch(String[] categoryIds);
}
package com.platform.service;
import com.platform.entity.TbCfItemSkusEntity;
import java.util.List;
import java.util.Map;
/**
* Service接口
*
* @author lipengjun
* @date 2019-12-24 17:10:28
*/
public interface TbCfItemSkusService {
/**
* 根据主键查询实体
*
* @param id 主键
* @return 实体
*/
TbCfItemSkusEntity queryObject(String id);
/**
* 分页查询
*
* @param map 参数
* @return list
*/
List<TbCfItemSkusEntity> queryList(Map<String, Object> map);
/**
* 分页统计总数
*
* @param map 参数
* @return 总数
*/
int queryTotal(Map<String, Object> map);
/**
* 保存实体
*
* @param tbCfItemSkus 实体
* @return 保存条数
*/
int save(TbCfItemSkusEntity tbCfItemSkus);
/**
* 根据主键更新实体
*
* @param tbCfItemSkus 实体
* @return 更新条数
*/
int update(TbCfItemSkusEntity tbCfItemSkus);
/**
* 根据主键删除
*
* @param id
* @return 删除条数
*/
int delete(String id);
/**
* 根据主键批量删除
*
* @param ids
* @return 删除条数
*/
int deleteBatch(String[] ids);
}
package com.platform.service;
import com.platform.entity.TbCfOptionEntity;
import java.util.List;
import java.util.Map;
/**
* 商品属性Service接口
*
* @author lipengjun
* @date 2019-12-26 16:36:21
*/
public interface TbCfOptionService {
/**
* 根据主键查询实体
*
* @param id 主键
* @return 实体
*/
TbCfOptionEntity queryObject(String optionId);
/**
* 分页查询
*
* @param map 参数
* @return list
*/
List<TbCfOptionEntity> queryList(Map<String, Object> map);
/**
* 分页统计总数
*
* @param map 参数
* @return 总数
*/
int queryTotal(Map<String, Object> map);
/**
* 保存实体
*
* @param tbCfOption 实体
* @return 保存条数
*/
int save(TbCfOptionEntity tbCfOption);
/**
* 根据主键更新实体
*
* @param tbCfOption 实体
* @return 更新条数
*/
int update(TbCfOptionEntity tbCfOption);
/**
* 根据主键删除
*
* @param optionId
* @return 删除条数
*/
int delete(String optionId);
/**
* 根据主键批量删除
*
* @param optionIds
* @return 删除条数
*/
int deleteBatch(String[] optionIds);
}
package com.platform.service;
import com.platform.entity.ItemDescSkus;
import com.platform.entity.ItemInfo;
import com.platform.entity.TbCfStationItemEntity;
import org.springframework.web.bind.annotation.RequestBody;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;
......@@ -17,10 +20,10 @@ public interface TbCfStationItemService {
/**
* 根据主键查询实体
*
* @param id 主键
*
* @return 实体
*/
TbCfStationItemEntity queryObject(String itemId);
ItemInfo queryItemInfoById(String itemId);
/**
* 分页查询
......@@ -41,18 +44,18 @@ public interface TbCfStationItemService {
/**
* 保存实体
*
* @param tbCfStationItem 实体
* @param
* @return 保存条数
*/
void save(TbCfStationItemEntity tbCfStationItem,String itemDesc);
void save(ItemDescSkus itemSkus) throws UnsupportedEncodingException;
/**
* 根据主键更新实体
*
* @param tbCfStationItem 实体
* @param
* @return 更新条数
*/
void update(TbCfStationItemEntity tbCfStationItem, String itemDesc);
void update(ItemDescSkus itemSkus, String itemDesc) throws UnsupportedEncodingException;
/**
* 根据主键删除
......
package com.platform.service.impl;
import com.platform.dao.TbCfCategoryDao;
import com.platform.entity.TbCfCategoryEntity;
import com.platform.service.TbCfCategoryService;
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 2019-12-26 15:10:48
*/
@Service("tbCfCategoryService")
public class TbCfCategoryServiceImpl implements TbCfCategoryService {
@Autowired
private TbCfCategoryDao tbCfCategoryDao;
@Override
public TbCfCategoryEntity queryObject(String categoryId) {
return tbCfCategoryDao.queryObject(categoryId);
}
@Override
public List<TbCfCategoryEntity> queryList(Map<String, Object> map) {
return tbCfCategoryDao.queryList(map);
}
@Override
public int queryTotal(Map<String, Object> map) {
return tbCfCategoryDao.queryTotal(map);
}
@Override
public int save(TbCfCategoryEntity tbCfCategory) {
tbCfCategory.setCategoryId(IdUtil.createIdbyUUID());
return tbCfCategoryDao.save(tbCfCategory);
}
@Override
public int update(TbCfCategoryEntity tbCfCategory) {
return tbCfCategoryDao.update(tbCfCategory);
}
@Override
public int delete(String categoryId) {
return tbCfCategoryDao.delete(categoryId);
}
@Override
public int deleteBatch(String[] categoryIds) {
return tbCfCategoryDao.deleteBatch(categoryIds);
}
}
package com.platform.service.impl;
import com.platform.dao.TbCfItemSkusDao;
import com.platform.entity.TbCfItemSkusEntity;
import com.platform.service.TbCfItemSkusService;
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 2019-12-24 17:10:28
*/
@Service("tbCfItemSkusService")
public class TbCfItemSkusServiceImpl implements TbCfItemSkusService {
@Autowired
private TbCfItemSkusDao tbCfItemSkusDao;
@Override
public TbCfItemSkusEntity queryObject(String id) {
return tbCfItemSkusDao.queryObject(id);
}
@Override
public List<TbCfItemSkusEntity> queryList(Map<String, Object> map) {
return tbCfItemSkusDao.queryList(map);
}
@Override
public int queryTotal(Map<String, Object> map) {
return tbCfItemSkusDao.queryTotal(map);
}
@Override
public int save(TbCfItemSkusEntity tbCfItemSkus) {
tbCfItemSkus.setId(IdUtil.createIdbyUUID());
return tbCfItemSkusDao.save(tbCfItemSkus);
}
@Override
public int update(TbCfItemSkusEntity tbCfItemSkus) {
return tbCfItemSkusDao.update(tbCfItemSkus);
}
@Override
public int delete(String id) {
return tbCfItemSkusDao.delete(id);
}
@Override
public int deleteBatch(String[] ids) {
return tbCfItemSkusDao.deleteBatch(ids);
}
}
package com.platform.service.impl;
import com.platform.dao.TbCfOptionDao;
import com.platform.entity.TbCfOptionEntity;
import com.platform.service.TbCfOptionService;
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 2019-12-26 16:36:21
*/
@Service("tbCfOptionService")
public class TbCfOptionServiceImpl implements TbCfOptionService {
@Autowired
private TbCfOptionDao tbCfOptionDao;
@Override
public TbCfOptionEntity queryObject(String optionId) {
return tbCfOptionDao.queryObject(optionId);
}
@Override
public List<TbCfOptionEntity> queryList(Map<String, Object> map) {
return tbCfOptionDao.queryList(map);
}
@Override
public int queryTotal(Map<String, Object> map) {
return tbCfOptionDao.queryTotal(map);
}
@Override
public int save(TbCfOptionEntity tbCfOption) {
tbCfOption.setOptionId(IdUtil.createIdbyUUID());
return tbCfOptionDao.save(tbCfOption);
}
@Override
public int update(TbCfOptionEntity tbCfOption) {
return tbCfOptionDao.update(tbCfOption);
}
@Override
public int delete(String optionId) {
return tbCfOptionDao.delete(optionId);
}
@Override
public int deleteBatch(String[] optionIds) {
return tbCfOptionDao.deleteBatch(optionIds);
}
}
package com.platform.service.impl;
import com.platform.dao.TbCfItemDescDao;
import com.platform.dao.TbCfStationItemDao;
import com.platform.entity.TbCfItemDescEntity;
import com.platform.entity.TbCfStationItemEntity;
import com.platform.dao.*;
import com.platform.entity.*;
import com.platform.service.TbCfStationItemService;
import com.platform.utils.IdUtil;
import com.platform.utils.util.StringUtil;
......@@ -11,6 +9,10 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -29,9 +31,32 @@ public class TbCfStationItemServiceImpl implements TbCfStationItemService {
@Autowired
private TbCfItemDescDao tbCfItemDescDao;
@Autowired
private TbCfItemSkusDao tbCfItemSkusDao;
@Autowired
private TbCfCategoryDao tbCfCategoryDao;
@Autowired
private TbCfOptionDao tbCfOptionDao;
@Override
public TbCfStationItemEntity queryObject(String itemId) {
return tbCfStationItemDao.queryObject(itemId);
public ItemInfo queryItemInfoById(String itemId) {
//查询商品主体信息
TbCfStationItemEntity item = tbCfStationItemDao.queryObject(itemId);
//查询商品sku
List<TbCfItemSkusEntity> itemSkusList = tbCfItemSkusDao.querySkusByItemId(itemId);
//查询商品描述
TbCfItemDescEntity itemDesc = tbCfItemDescDao.queryObject(itemId);
List<TbCfCategoryEntity> categoryList = tbCfCategoryDao.queryByItemId(itemId);
ItemInfo itemInfo = new ItemInfo();
itemInfo.setItem(item);
itemInfo.setCategoryList(categoryList);
itemInfo.setItemSkusList(itemSkusList);
itemInfo.setItemDesc(itemDesc);
return itemInfo;
}
@Override
......@@ -45,31 +70,202 @@ public class TbCfStationItemServiceImpl implements TbCfStationItemService {
}
@Override
public void save(TbCfStationItemEntity tbCfStationItem, String itemDesc) {
public void save(ItemDescSkus itemSkus) throws UnsupportedEncodingException {
String itemId = IdUtil.createIdbyUUID();
//商品sku
Long count = 0L;
int orederNum = 1;
List<TbCfItemSkusEntity> item = itemSkus.getPrevItem();
for (TbCfItemSkusEntity entity : item) {
TbCfItemSkusEntity skusEntity = new TbCfItemSkusEntity();
skusEntity.setId(IdUtil.createIdbyUUID());
skusEntity.setItemId(itemId);
skusEntity.setDelFlag(1);
skusEntity.setCreateTime(new Date());
skusEntity.setUpdateTime(new Date());
skusEntity.setSkuName(entity.getSkuName());
skusEntity.setSkuDesc(entity.getSkuDesc());
skusEntity.setSkuPrice(entity.getSkuPrice());
skusEntity.setSkuCount(entity.getSkuCount());
skusEntity.setOrderNum(orederNum);
tbCfItemSkusDao.save(skusEntity);
count += entity.getSkuCount();
orederNum++;
}
//商品主体信息
TbCfStationItemEntity tbCfStationItem = new TbCfStationItemEntity();
tbCfStationItem.setItemId(itemId);
tbCfStationItem.setCreateTime(new Date());
tbCfStationItem.setItemNum(0L);
tbCfStationItem.setItemPrice(itemSkus.getItemPrice());
tbCfStationItem.setItemBrief(itemSkus.getItemBrief());
tbCfStationItem.setItemName(itemSkus.getItemName());
tbCfStationItem.setItemCode(itemSkus.getItemCode());
tbCfStationItem.setItemCategory(itemSkus.getItemCategory());
tbCfStationItem.setItemCategorytwo(itemSkus.getItemCategorytwo());
tbCfStationItem.setItemCount(count);
tbCfStationItem.setItemTags(itemSkus.getItemTags());
tbCfStationItem.setItemDescritionId(itemSkus.getItemDescritionId());
tbCfStationItem.setItemTop("N");
tbCfStationItem.setItemImg(itemSkus.getItemImg());
if (itemSkus.isPutaway()) {
tbCfStationItem.setEnableFlag(1);
}
tbCfStationItemDao.save(tbCfStationItem);
//商品描述
TbCfItemDescEntity itemDescEntity = new TbCfItemDescEntity();
itemDescEntity.setItemId(itemId);
itemDescEntity.setCreateTime(new Date());
itemDescEntity.setUpdateTime(new Date());
itemDescEntity.setItemDesc(itemDesc);
itemDescEntity.setItemDesc(URLDecoder.decode(itemSkus.getItemDesc(), "UTF-8"));
itemDescEntity.setDelFlag(1);
tbCfStationItemDao.save(tbCfStationItem);
tbCfItemDescDao.save(itemDescEntity);
//商品规格
List<TbCfCategoryEntity> tree = itemSkus.getTree();
for (int i = 0; i < tree.size(); i++) {
String cid = IdUtil.createIdbyUUID();
String categoryDesc = tree.get(i).getCategoryDesc();
TbCfCategoryEntity categoryEntity = new TbCfCategoryEntity();
categoryEntity.setCategoryId(cid);
categoryEntity.setCreateTime(new Date());
categoryEntity.setUpdateTime(new Date());
categoryEntity.setDelFlag(1);
categoryEntity.setItemId(itemId);
categoryEntity.setCategoryName(tree.get(i).getCategoryName());
categoryEntity.setCategoryDesc(categoryDesc);
int num = i + 1;
categoryEntity.setOrderNum(num);
categoryEntity.setOption("option" + num);
tbCfCategoryDao.save(categoryEntity);
String[] desc = categoryDesc.split(",");
for (int j = 0; j < desc.length; j++) {
//商品属性
TbCfOptionEntity optionEntity = new TbCfOptionEntity();
optionEntity.setOptionId(IdUtil.createIdbyUUID());
optionEntity.setCid(cid);
optionEntity.setItemId(itemId);
optionEntity.setOptiionSpecies(desc[j]);
optionEntity.setCreateTime(new Date());
optionEntity.setUpdateTime(new Date());
optionEntity.setDelFlag(1);
optionEntity.setOptionName("option" + num);
tbCfOptionDao.save(optionEntity);
}
}
}
@Override
public void update(TbCfStationItemEntity tbCfStationItem, String itemDesc) {
TbCfItemDescEntity itemDescEntity = tbCfItemDescDao.queryObject(tbCfStationItem.getItemId());
if (itemDescEntity != null) {
itemDescEntity.setUpdateTime(new Date());
itemDescEntity.setItemDesc(itemDesc);
tbCfItemDescDao.update(itemDescEntity);
public void update(ItemDescSkus itemSkus, String itemDesc) throws UnsupportedEncodingException {
String itemId = itemSkus.getItemId();
Date updateTime = new Date();
//商品sku
Long count = 0L;
int orederNum = 1;
List<TbCfItemSkusEntity> itemList = itemSkus.getPrevItem();
//先清空之前的sku
tbCfItemSkusDao.deleteByItemId(itemId); //商品sku
//保存新的sku
List<TbCfItemSkusEntity> item = itemSkus.getPrevItem();
for (TbCfItemSkusEntity entity : item) {
TbCfItemSkusEntity skusEntity = new TbCfItemSkusEntity();
skusEntity.setId(IdUtil.createIdbyUUID());
skusEntity.setItemId(itemId);
skusEntity.setDelFlag(1);
skusEntity.setCreateTime(new Date());
skusEntity.setUpdateTime(new Date());
skusEntity.setSkuName(entity.getSkuName());
skusEntity.setSkuDesc(entity.getSkuDesc());
skusEntity.setSkuPrice(entity.getSkuPrice());
skusEntity.setSkuCount(entity.getSkuCount());
skusEntity.setOrderNum(orederNum);
tbCfItemSkusDao.save(skusEntity);
count += entity.getSkuCount();
orederNum++;
}
/*for (int i = 0; i < itemList.size(); i++) {
TbCfItemSkusEntity skusEntity = tbCfItemSkusDao.queryByOrderNum(i + 1, itemId);
if (skusEntity != null) {
skusEntity.setUpdateTime(updateTime);
skusEntity.setSkuName(itemList.get(i).getSkuName());
skusEntity.setSkuDesc(itemList.get(i).getSkuDesc());
skusEntity.setSkuPrice(itemList.get(i).getSkuPrice());
skusEntity.setSkuCount(itemList.get(i).getSkuCount());
tbCfItemSkusDao.update(skusEntity);
} else {
TbCfItemSkusEntity sku = new TbCfItemSkusEntity();
sku.setId(IdUtil.createIdbyUUID());
sku.setItemId(itemId);
sku.setDelFlag(1);
sku.setCreateTime(new Date());
sku.setUpdateTime(new Date());
sku.setSkuName(itemList.get(i).getSkuName());
sku.setSkuDesc(itemList.get(i).getSkuDesc());
sku.setSkuPrice(itemList.get(i).getSkuPrice());
sku.setSkuCount(itemList.get(i).getSkuCount());
sku.setOrderNum(i + 1);
tbCfItemSkusDao.save(sku);
}
count += itemList.get(i).getSkuCount();
}*/
//商品主体信息
TbCfStationItemEntity tbCfStationItem = tbCfStationItemDao.queryObject(itemId);
if (tbCfStationItem != null) {
tbCfStationItem.setItemPrice(itemSkus.getItemPrice());
tbCfStationItem.setItemBrief(itemSkus.getItemBrief());
tbCfStationItem.setItemName(itemSkus.getItemName());
tbCfStationItem.setItemCode(itemSkus.getItemCode());
tbCfStationItem.setItemCategory(itemSkus.getItemCategory());
tbCfStationItem.setItemCategorytwo(itemSkus.getItemCategorytwo());
tbCfStationItem.setItemCount(count);
tbCfStationItem.setItemTags(itemSkus.getItemTags());
tbCfStationItem.setItemDescritionId(itemSkus.getItemDescritionId());
tbCfStationItem.setItemImg(itemSkus.getItemImg());
if (itemSkus.isPutaway()) {
tbCfStationItem.setEnableFlag(1);
}
tbCfStationItemDao.update(tbCfStationItem);
}
//商品详情
TbCfItemDescEntity itemDescEntity = tbCfItemDescDao.queryObject(itemId);
if (itemDescEntity != null) {
itemDescEntity.setUpdateTime(updateTime);
itemDescEntity.setItemDesc(URLDecoder.decode(itemSkus.getItemDesc(), "UTF-8"));
tbCfItemDescDao.update(itemDescEntity);
}
//先删除之前的属性模板
tbCfOptionDao.deleteByItemId(itemId);
//商品规格
List<TbCfCategoryEntity> tree = itemSkus.getTree();
for (int i = 0; i < tree.size(); i++) {
String categoryDesc = tree.get(i).getCategoryDesc();
TbCfCategoryEntity categoryEntity = tbCfCategoryDao.queryByOrderNum(i + 1, itemId);
categoryEntity.setUpdateTime(updateTime);
categoryEntity.setCategoryName(tree.get(i).getCategoryName());
categoryEntity.setCategoryDesc(categoryDesc);
tbCfCategoryDao.update(categoryEntity);
int num = i + 1;
String[] desc = categoryDesc.split(",");
for (int j = 0; j < desc.length; j++) {
//保存新的商品属性模板
TbCfOptionEntity optionEntity = new TbCfOptionEntity();
optionEntity.setOptionId(IdUtil.createIdbyUUID());
optionEntity.setCid(categoryEntity.getCategoryId());
optionEntity.setItemId(itemId);
optionEntity.setOptiionSpecies(desc[j]);
optionEntity.setCreateTime(new Date());
optionEntity.setUpdateTime(new Date());
optionEntity.setDelFlag(1);
optionEntity.setOptionName("option" + num);
tbCfOptionDao.save(optionEntity);
}
}
}
@Override
......@@ -84,9 +280,18 @@ public class TbCfStationItemServiceImpl implements TbCfStationItemService {
tbCfItemDescDao.deleteBatch(itemIds);
}
/**
* 商品管理使用逻辑删除
*
* @param status
* @param itemIds
*/
@Override
public void changeItemStatus(Integer status, String[] itemIds) {
tbCfStationItemDao.changeItemStatus(status, itemIds);
tbCfItemDescDao.changeItemDescStatus(status, itemIds);
tbCfItemDescDao.changStatusBatch(itemIds);
tbCfItemSkusDao.changStatusBatch(itemIds);
tbCfCategoryDao.changStatusBatch(itemIds);
tbCfOptionDao.changStatusBatch(itemIds);
}
}
<?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.TbCfCategoryDao">
<resultMap type="com.platform.entity.TbCfCategoryEntity" id="tbCfCategoryMap">
<result property="categoryId" column="category_id"/>
<result property="categoryName" column="category_name"/>
<result property="categoryDesc" column="category_desc"/>
<result property="option" column="option"/>
<result property="itemId" column="item_id"/>
<result property="orderNum" column="order_num"/>
<result property="delFlag" column="del_flag"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<select id="queryObject" resultType="com.platform.entity.TbCfCategoryEntity">
select
`category_id`,
`category_name`,
`category_desc`,
`option`,
`item_id`,
`order_num`,
`del_flag`,
`create_time`,
`update_time`
from tb_cf_category
where category_id = #{id}
</select>
<select id="queryList" resultType="com.platform.entity.TbCfCategoryEntity">
select
`category_id`,
`category_name`,
`category_desc`,
`option`,
`item_id`,
`order_num`,
`del_flag`,
`create_time`,
`update_time`
from tb_cf_category
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 category_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_cf_category
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
</select>
<select id="queryByOrderNum" resultType="com.platform.entity.TbCfCategoryEntity">
select * from tb_cf_category where order_num=#{orderNum} and item_id=#{itemId}
</select>
<insert id="save" parameterType="com.platform.entity.TbCfCategoryEntity">
insert into tb_cf_category(
`category_id`,
`category_name`,
`category_desc`,
`option`,
`item_id`,
`order_num`,
`del_flag`,
`create_time`,
`update_time`)
values(
#{categoryId},
#{categoryName},
#{categoryDesc},
#{option},
#{itemId},
#{orderNum},
#{delFlag},
#{createTime},
#{updateTime})
</insert>
<update id="update" parameterType="com.platform.entity.TbCfCategoryEntity">
update tb_cf_category
<set>
<if test="categoryName != null">`category_name` = #{categoryName},</if>
<if test="categoryDesc != null">`category_desc` = #{categoryDesc},</if>
<if test="option != null">`option` = #{option},</if>
<if test="itemId != null">`item_id` = #{itemId},</if>
<if test="orderNum != null">`order_num` = #{orderNum},</if>
<if test="delFlag != null">`del_flag` = #{delFlag},</if>
<if test="createTime != null">`create_time` = #{createTime},</if>
<if test="updateTime != null">`update_time` = #{updateTime}</if>
</set>
where category_id = #{categoryId}
</update>
<update id="changStatus" parameterType="com.platform.entity.TbCfCategoryEntity">
update tb_cf_category set del_flag=0 where item_id=#{itemId}
</update>
<update id="changStatusBatch" parameterType="com.platform.entity.TbCfCategoryEntity">
update tb_cf_category set del_flag=0 where item_id in
<foreach item="itemId" collection="array" open="(" separator="," close=")">
#{itemId}
</foreach>
</update>
<select id="queryByItemId" resultType="com.platform.entity.TbCfCategoryEntity">
select * from tb_cf_category where item_id=#{itemId} order by order_num asc
</select>
<delete id="delete">
delete from tb_cf_category where category_id = #{value}
</delete>
<delete id="deleteBatch">
delete from tb_cf_category where category_id in
<foreach item="categoryId" collection="array" open="(" separator="," close=")">
#{categoryId}
</foreach>
</delete>
</mapper>
\ No newline at end of file
......@@ -81,6 +81,15 @@
where item_id = #{itemId}
</update>
<update id="changStatus" parameterType="com.platform.entity.TbCfItemDescEntity">
update tb_cf_item_desc set del_flag=0 where item_id=#{itemId}
</update>
<update id="changStatusBatch" parameterType="com.platform.entity.TbCfItemDescEntity">
update tb_cf_item_desc set del_flag=0 where item_id in
<foreach item="itemId" collection="array" open="(" separator="," close=")">
#{itemId}
</foreach>
</update>
<delete id="delete">
delete from tb_cf_item_desc where item_id = #{value}
</delete>
......@@ -91,10 +100,6 @@
#{itemId}
</foreach>
</delete>
<update id="changeItemDescStatus">
update tb_cf_item_desc set del_flag=#{status} where item_id in
<foreach item="itemId" collection="itemIds" open="(" separator="," close=")">
#{itemId}
</foreach>
</update>
</mapper>
\ No newline at end of file
<?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.TbCfItemSkusDao">
<resultMap type="com.platform.entity.TbCfItemSkusEntity" id="tbCfItemSkusMap">
<result property="id" column="id"/>
<result property="itemId" column="item_id"/>
<result property="skuName" column="sku_name"/>
<result property="skuDesc" column="sku_desc"/>
<result property="skuPrice" column="sku_price"/>
<result property="optionIds" column="option_ids"/>
<result property="skuCount" column="sku_count"/>
<result property="orderNum" column="order_num"/>
<result property="delFlag" column="del_flag"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<select id="queryObject" resultType="com.platform.entity.TbCfItemSkusEntity">
select
`id`,
`item_id`,
`sku_name`,
`sku_desc`,
`sku_price`,
`option_ids`,
`sku_count`,
`order_num`,
`del_flag`,
`create_time`,
`update_time`
from tb_cf_item_skus
where id = #{id}
</select>
<select id="queryList" resultType="com.platform.entity.TbCfItemSkusEntity">
select
`id`,
`item_id`,
`sku_name`,
`sku_desc`,
`sku_price`,
`option_ids`,
`sku_count`,
`order_num`,
`del_flag`,
`create_time`,
`update_time`
from tb_cf_item_skus
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="querySkusByItemId" resultType="com.platform.entity.TbCfItemSkusEntity">
select * from tb_cf_item_skus where item_id=#{itemId} order by order_num asc
</select>
<select id="queryByOrderNum" resultType="com.platform.entity.TbCfItemSkusEntity">
select * from tb_cf_item_skus where order_num=#{orderNum} and item_id=#{itemId}
</select>
<select id="queryTotal" resultType="int">
select count(*) from tb_cf_item_skus
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
</select>
<insert id="save" parameterType="com.platform.entity.TbCfItemSkusEntity">
insert into tb_cf_item_skus(
`id`,
`item_id`,
`sku_name`,
`sku_desc`,
`sku_price`,
`option_ids`,
`sku_count`,
`order_num`,
`del_flag`,
`create_time`,
`update_time`)
values(
#{id},
#{itemId},
#{skuName},
#{skuDesc},
#{skuPrice},
#{optionIds},
#{skuCount},
#{orderNum},
#{delFlag},
#{createTime},
#{updateTime})
</insert>
<update id="update" parameterType="com.platform.entity.TbCfItemSkusEntity">
update tb_cf_item_skus
<set>
<if test="itemId != null">`item_id` = #{itemId},</if>
<if test="skuName != null">`sku_name` = #{skuName},</if>
<if test="skuDesc != null">`sku_desc` = #{skuDesc},</if>
<if test="skuPrice != null">`sku_price` = #{skuPrice},</if>
<if test="optionIds != null">`option_ids` = #{optionIds},</if>
<if test="skuCount != null">`sku_count` = #{skuCount},</if>
<if test="orderNum != null">`order_num` = #{orderNum},</if>
<if test="delFlag != null">`del_flag` = #{delFlag},</if>
<if test="createTime != null">`create_time` = #{createTime},</if>
<if test="updateTime != null">`update_time` = #{updateTime}</if>
</set>
where id = #{id}
</update>
<update id="changStatus" parameterType="com.platform.entity.TbCfItemSkusEntity">
update tb_cf_item_skus set del_flag=0 where item_id=#{itemId}
</update>
<update id="changStatusBatch" parameterType="com.platform.entity.TbCfItemSkusEntity">
update tb_cf_item_skus set del_flag=0 where item_id in
<foreach item="itemId" collection="array" open="(" separator="," close=")">
#{itemId}
</foreach>
</update>
<delete id="delete">
delete from tb_cf_item_skus where id = #{value}
</delete>
<delete id="deleteByItemId">
delete from tb_cf_item_skus where item_id = #{item_id}
</delete>
<delete id="deleteBatch">
delete from tb_cf_item_skus 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"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.platform.dao.TbCfOptionDao">
<resultMap type="com.platform.entity.TbCfOptionEntity" id="tbCfOptionMap">
<result property="optionId" column="option_id"/>
<result property="optionName" column="option_name"/>
<result property="optiionSpecies" column="optiion_species"/>
<result property="itemId" column="item_id"/>
<result property="cid" column="cid"/>
<result property="delFlag" column="del_flag"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<select id="queryObject" resultType="com.platform.entity.TbCfOptionEntity">
select
`option_id`,
`option_name`,
`optiion_species`,
`item_id`,
`cid`,
`del_flag`,
`create_time`,
`update_time`
from tb_cf_option
where option_id = #{id}
</select>
<select id="queryList" resultType="com.platform.entity.TbCfOptionEntity">
select
`option_id`,
`option_name`,
`optiion_species`,
`item_id`,
`cid`,
`del_flag`,
`create_time`,
`update_time`
from tb_cf_option
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 option_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_cf_option
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
</select>
<insert id="save" parameterType="com.platform.entity.TbCfOptionEntity">
insert into tb_cf_option(
`option_id`,
`option_name`,
`optiion_species`,
`item_id`,
`cid`,
`del_flag`,
`create_time`,
`update_time`)
values(
#{optionId},
#{optionName},
#{optiionSpecies},
#{itemId},
#{cid},
#{delFlag},
#{createTime},
#{updateTime})
</insert>
<update id="update" parameterType="com.platform.entity.TbCfOptionEntity">
update tb_cf_option
<set>
<if test="optionName != null">`option_name` = #{optionName},</if>
<if test="optiionSpecies != null">`optiion_species` = #{optiionSpecies},</if>
<if test="itemId != null">`item_id` = #{itemId},</if>
<if test="cid != null">`cid` = #{cid},</if>
<if test="delFlag != null">`del_flag` = #{delFlag},</if>
<if test="createTime != null">`create_time` = #{createTime},</if>
<if test="updateTime != null">`update_time` = #{updateTime}</if>
</set>
where option_id = #{optionId}
</update>
<update id="changStatus" parameterType="com.platform.entity.TbCfOptionEntity">
update tb_cf_option set del_flag=0 where item_id=#{itemId}
</update>
<update id="changStatusBatch" parameterType="com.platform.entity.TbCfOptionEntity">
update tb_cf_option set del_flag=0 where item_id in
<foreach item="itemId" collection="array" open="(" separator="," close=")">
#{itemId}
</foreach>
</update>
<delete id="delete">
delete from tb_cf_option where option_id = #{value}
</delete>
<delete id="deleteBatch">
delete from tb_cf_option where option_id in
<foreach item="optionId" collection="array" open="(" separator="," close=")">
#{optionId}
</foreach>
</delete>
<delete id="deleteByItemId">
delete from tb_cf_option where item_id =#{itemId}
</delete>
</mapper>
\ No newline at end of file
......@@ -79,7 +79,7 @@
left JOIN tb_cf_goodstwotype t ON i.item_categorytwo=t.goodstwotype_id
left JOIN tb_cf_descripiton d ON i.item_descrition_id=d.descripition_id
left JOIN tb_cf_express_template e ON i.item_descrition_id = e.template_id
WHERE 1=1
WHERE 1=1 and i.enable_flag!=0
<if test="name != null and name.trim() != ''">
AND item_name LIKE concat('%',#{name},'%')
</if>
......@@ -102,10 +102,21 @@
</if>
</select>
<select id="queryItemInfoById" resultType="com.platform.entity.ItemDescSkus">
SELECT
i.*,
s.*,
d.*
FROM
tb_cf_station_item i
LEFT JOIN tb_cf_item_skus s ON i.item_id = s.item_id
LEFT JOIN tb_cf_item_desc d ON i.item_id = d.item_id
WHERE
i.item_id = #{itemId}
</select>
<select id="queryTotal" resultType="int">
select count(*) from tb_cf_station_item
WHERE 1=1
WHERE 1=1 and enable_flag!=0
<if test="name != null and name.trim() != ''">
AND item_name LIKE concat('%',#{name},'%')
</if>
......
<!DOCTYPE html>
<html>
<head>
<title></title>
#parse("sys/header.html")
</head>
<body>
<div id="rrapp" v-cloak style="height: calc(100% - 15px);">
<div v-show="showList" style="height: 100%;">
<Row :gutter="16">
<div class="search-group">
<i-col span="4">
<i-input v-model="q.name" @on-enter="query" placeholder="名称"/>
</i-col>
<i-button @click="query">查询</i-button>
<i-button @click="reloadSearch">重置</i-button>
</div>
<div class="buttons-group">
#if($shiro.hasPermission("tbcfitemskus:save"))
<i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
#end
#if($shiro.hasPermission("tbcfitemskus:update"))
<i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
#end
#if($shiro.hasPermission("tbcfitemskus:delete"))
<i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
#end
</div>
</Row>
<table id="jqGrid"></table>
</div>
<Card v-show="!showList">
<p slot="title">{{title}}</p>
<i-form ref="formValidate" :model="tbCfItemSkus" :rules="ruleValidate" :label-width="80">
<Form-item label="商品ID" prop="itemId">
<i-input v-model="tbCfItemSkus.itemId" placeholder="商品ID"/>
</Form-item>
<Form-item label="规格名称" prop="skuName">
<i-input v-model="tbCfItemSkus.skuName" placeholder="规格名称"/>
</Form-item>
<Form-item label="规格描述" prop="skuDesc">
<i-input v-model="tbCfItemSkus.skuDesc" placeholder="规格描述"/>
</Form-item>
<Form-item label="价格" prop="skuPrice">
<i-input v-model="tbCfItemSkus.skuPrice" placeholder="价格"/>
</Form-item>
<Form-item label="数量" prop="skuCount">
<i-input v-model="tbCfItemSkus.skuCount" placeholder="数量"/>
</Form-item>
<Form-item label="删除标记" prop="delFlag">
<i-input v-model="tbCfItemSkus.delFlag" placeholder="删除标记"/>
</Form-item>
<Form-item label="创建时间" prop="createTime">
<i-input v-model="tbCfItemSkus.createTime" placeholder="创建时间"/>
</Form-item>
<Form-item label="更新时间" prop="updateTime">
<i-input v-model="tbCfItemSkus.updateTime" placeholder="更新时间"/>
</Form-item>
<Form-item>
<i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>
<i-button type="warning" @click="reload" style="margin-left: 8px"/>返回</i-button>
<i-button type="ghost" @click="handleReset('formValidate')" style="margin-left: 8px">重置</i-button>
</Form-item>
</i-form>
</Card>
</div>
<script src="${rc.contextPath}/js/sys/tbcfitemskus.js?_${date.systemTime}"></script>
</body>
</html>
\ No newline at end of file
......@@ -4,68 +4,93 @@
<title>站点商品</title>
#parse("sys/header.html")
<style>
ul>li{
ul > li {
list-style: none;
}
.container{
width:800px;
color:#515a6e;
margin-left:0;
.container {
width: 800px;
color: #515a6e;
margin-left: 0;
}
.container p{
line-height: auto;
padding-bottom:10px;
.container p {
/*line-height: auto;*/
padding-bottom: 10px;
}
/* .container .title{border-bottom: 1px solid #f3f3f3;} */
.container .title>span:first-child{
.container .title > span:first-child {
padding-right: 80px;
}
/* 表单内容 */
.container .form-wrapper{
width:100%;
.container .form-wrapper {
width: 100%;
border: 1px solid #eee;
padding:5px;
padding: 5px;
}
.container .form-wrapper>h4{border-bottom: 1px solid #eee;padding:6px;}
.container .form-wrapper>ul{list-style: none;}
.container .form-wrapper>ul>li{
padding:10px;
.container .form-wrapper > h4 {
border-bottom: 1px solid #eee;
padding: 6px;
}
.container .form-wrapper .f-select{
width:80px;
.container .form-wrapper > ul {
list-style: none;
}
.container .form-wrapper > ul > li {
padding: 10px;
}
.container .form-wrapper .f-select {
width: 80px;
border-radius: 2px;
outline: none;
margin-right:50px;
margin-right: 50px;
}
.container option {
background: white;
border:white;
border: white;
}
.container textarea{
.container textarea {
vertical-align: top;
margin-right: 20px;
}
.slide-enter-active, .slide-leave-active {
transition: all 0.6s ease;
}
.slide-enter, .slide-leave-active {
transform: translate3d(50px, 0, 0);
opacity: 0;
}
/* 预览 */
.container .form-prev{
padding:5px;
.container .form-prev {
padding: 5px;
}
.container .form-prev>h4{
border-top: 1px solid #eee;padding:6px;
.container .form-prev > h4 {
border-top: 1px solid #eee;
padding: 6px;
}
.container .prev-li{
.container .prev-li {
display: flex;
justify-content: start;
}
.ivu-tag{padding:2px 8px;}
.container .prev-li>div{
margin-left:5px;
.ivu-tag {
padding: 2px 8px;
}
.container .prev-li > div {
margin-left: 5px;
display: flex;
flex-direction: column;
justify-content: space-between;
......@@ -73,11 +98,13 @@
margin-right: 30px;
/* width:100px; */
}
.container .prev-del{
height:25px;
.container .prev-del {
height: 25px;
transform: translateY(20px);
line-height: 50%;
}
.ui-jqgrid .ui-jqgrid-bdiv {
height: auto !important;
}
......@@ -106,6 +133,19 @@
float: right;
margin-right: 200px;
}
.default-price {
margin-top: 10px;
margin-left: 10px;
}
.default-price > .default-price-in > div {
display: inline-block;
}
.default-price > h4 {
margin-bottom: 5px;
}
</style>
</head>
<body>
......@@ -201,9 +241,9 @@
<Form-item label="商品价格" prop="itemPrice" style="width: 800px">
<i-input v-model="tbCfStationItem.itemPrice" placeholder="商品价格"/>
</Form-item>
<Form-item label="商品库存" prop="item_count" style="width: 800px">
<!-- <Form-item label="商品库存" prop="item_count" style="width: 800px">
<i-input v-model="tbCfStationItem.itemCount" placeholder="商品库存"/>
</Form-item>
</Form-item>-->
<Form-item label="商品图片" prop="itemImg">
<!-- <i-input v-model="xPicture.pictureUrl" placeholder="图片地址"/> -->
<upload
......@@ -230,7 +270,8 @@
</i-select>
</Form-item>
<Form-item label="商品二级分类" prop="itemCategorytwo" style="width: 800px">
<i-select placeholder="请选择" v-model="tbCfStationItem.itemCategorytwo" @on-change="changeGoodstype2">
<i-select placeholder="请选择" v-model="tbCfStationItem.itemCategorytwo"
@on-change="changeGoodstype2">
<i-option v-for="(el,i) in Goodstype2" :key='i'
:value="el.goodstwotypeId">{{el.goodstwotypeTitle}}
</i-option>
......@@ -257,45 +298,77 @@
<!-- 选项 -->
<section class="form-wrapper">
<h4>选项</h4>
<section class="default-price">
<h4>设置默认价格与库存
<i-switch v-model="setDefaultValue">
<Icon type="md-checkmark"></Icon>
<Icon type="md-close"></Icon>
</i-switch>
</h4>
<div v-show="setDefaultValue" class="default-price-in">
<div>
<i-Input v-model="default_price" style="width:160px;margin-top:5px;" size="small"
placeholder="默认价格"/>
</div>
<div>
<i-Input v-model="default_count" style="width:160px;margin-top:5px;" size="small"
placeholder="默认数量"/>
</div>
</div>
</section>
<transition-group tag="ul" name="slide">
<li v-for="(el,i) in attrItem" :key="i">
<h6>选项{{i+1}}</h6>
<label>属性</label>
<select class="f-select" v-model="el.selected">
<i-Select
filterable
v-model="el.categoryName"
style="width:100px;margin:0 25px;"
allow-create
@on-create="handleCreateSelect"
>
<i-Option v-for="(option,index) in el.option" :value="option" :key="index">{{option}}
</i-Option>
</i-Select>
<!-- <select class="f-select" v-model="el.selected">
<option v-for="(option,index) in el.option">{{option}}</option>
</select>
<textarea @input="handleChangeContent" v-model="el.content" cols="60" rows="2" placeholder="请用逗号隔开各个选项"></textarea>
</select>-->
<textarea @input="handleChangeContent" v-model="el.categoryDesc" cols="48" rows="2"
placeholder="请用逗号隔开各个选项"></textarea>
<!-- <i-button type="error" @click="delAttr(i)">删除</i-button> -->
<i-button type="error" @click="confirmDel(i)">删除</i-button>
<i-button :disabled="isDisabled" type="error" @click="confirmDel(i)">删除</i-button>
</li>
</transition-group>
<i-button
:disabled="isDisabled"
style="margin-left:10px;margin-bottom:10px;margin-top:10px;"
type="success"
@click="addAttr"
>新增其它选项</i-button>
>新增其它选项
</i-button>
<!-- 预览 -->
<section class="form-prev">
<h4>预览</h4>
<transition-group tag="ul" name="slide">
<li class="prev-li" v-for="(el,i) in prevItem" :key="i">
<div class="prev-attr">
<span>{{el.skuStrName}}</span>
<Tag size="large" color="geekblue">{{el.skuStrCombination}}</Tagsize="medium">
<span>{{el.skuName}}</span>
<Tag size="large" color="geekblue">{{el.skuDesc}}</Tag>
</div>
<div class="prev-price">
<span>价格</span>
<i-input v-model='el.price' size="small" placeholder="USD" />
<i-input v-model='el.skuPrice' size="small" placeholder="USD"/>
</div>
<div class="prev-count">
<span>数量</span>
<i-input v-model='el.num' size="small" type="number" placeholder="0" />
<i-input v-model='el.skuCount' size="small" type="number" placeholder="0"/>
</div>
<i-button class="prev-del" type="warning"@click="del(i)" >删除</i-button>
<i-button class="prev-del" type="warning" @click="del(i)">删除</i-button>
</li>
</transition-group>
</section>
<i-button style="margin-left:10px;" type="primary" @click='save'>保存</i-button>
<!-- <i-button style="margin-left:10px;" type="primary" @click='save'>保存</i-button>-->
</section>
</Card>
......@@ -307,7 +380,6 @@
</Modal>
<br/>
<br/>
<Form-item label="商品描述" prop="itemDesc">
......@@ -324,7 +396,7 @@
</Card>
</div>
<script src="${rc.contextPath}/statics/libs/iview.js"></script>
<script src="${rc.contextPath}/js/sys/tbcfstationitem.js?_${date.systemTime}"></script>
<script type="text/javascript">
var content = UE.getEditor('itemDesc');
......
$(function () {
$("#jqGrid").Grid({
url: '../tbcfitemskus/list',
colModel: [
{label: 'id', name: 'id', index: 'id', key: true, hidden: true},
{label: '商品ID', name: 'itemId', index: 'item_id', width: 80},
{label: '规格名称', name: 'skuName', index: 'sku_name', width: 80},
{label: '规格描述', name: 'skuDesc', index: 'sku_desc', width: 80},
{label: '价格', name: 'skuPrice', index: 'sku_price', width: 80},
{label: '数量', name: 'skuCount', index: 'sku_count', width: 80},
{label: '删除标记', name: 'delFlag', index: 'del_flag', width: 80},
{label: '创建时间', name: 'createTime', index: 'create_time', width: 80},
{label: '更新时间', name: 'updateTime', index: 'update_time', width: 80}]
});
});
let vm = new Vue({
el: '#rrapp',
data: {
showList: true,
title: null,
tbCfItemSkus: {},
ruleValidate: {
name: [
{required: true, message: '名称不能为空', trigger: 'blur'}
]
},
q: {
name: ''
}
},
methods: {
query: function () {
vm.reload();
},
add: function () {
vm.showList = false;
vm.title = "新增";
vm.tbCfItemSkus = {};
},
update: function (event) {
let id = getSelectedRow("#jqGrid");
if (id == null) {
return;
}
vm.showList = false;
vm.title = "修改";
vm.getInfo(id);
},
saveOrUpdate: function (event) {
let url = vm.tbCfItemSkus.id == null ? "../tbcfitemskus/save" : "../tbcfitemskus/update";
Ajax.request({
url: url,
params: JSON.stringify(vm.tbCfItemSkus),
type: "POST",
contentType: "application/json",
successCallback: function (r) {
alert('操作成功', function (index) {
vm.reload();
});
}
});
},
del: function (event) {
let ids = getSelectedRows("#jqGrid");
if (ids == null){
return;
}
confirm('确定要删除选中的记录?', function () {
Ajax.request({
url: "../tbcfitemskus/delete",
params: JSON.stringify(ids),
type: "POST",
contentType: "application/json",
successCallback: function () {
alert('操作成功', function (index) {
vm.reload();
});
}
});
});
},
getInfo: function(id){
Ajax.request({
url: "../tbcfitemskus/info/"+id,
async: true,
successCallback: function (r) {
vm.tbCfItemSkus = r.tbCfItemSkus;
}
});
},
reload: function (event) {
vm.showList = true;
let page = $("#jqGrid").jqGrid('getGridParam', 'page');
$("#jqGrid").jqGrid('setGridParam', {
postData: {'name': vm.q.name},
page: page
}).trigger("reloadGrid");
vm.handleReset('formValidate');
},
reloadSearch: function() {
vm.q = {
name: ''
};
vm.reload();
},
handleSubmit: function (name) {
handleSubmitValidate(this, name, function () {
vm.saveOrUpdate()
});
},
handleReset: function (name) {
handleResetForm(this, name);
}
}
});
\ No newline at end of file
......@@ -32,6 +32,7 @@ let vm = new Vue({
Goodstype2: null,
uploadList: [],
Goodstype3: null,
handleCreateSelect: null,
ruleValidate: {
name: [
{required: true, message: '名称不能为空', trigger: 'blur'}
......@@ -44,20 +45,24 @@ let vm = new Vue({
},
alertShow:false,//警告弹窗
attrItem:[{
selected:'尺寸',
option:['颜色','尺寸','长度'],
content:''
alertShow: false,//警告弹窗
attrItem: [{
categoryName: '尺寸',
option: ['颜色', '尺寸', '长度'],
categoryDesc: ''
}],//属性设置
prevItem:[],//组合数组
delIndex:null,
putaway:false//是否立即上架
prevItem: [],//组合数组
delIndex: null,
putaway: false,//是否立即上架
default_price: '',
default_count: '',
setDefaultValue: false,
tmdSkudata: null,
isDisabled: false
},
methods: {
//获取级分类
//获取级分类
changeGoodstype() {
// console.log(this.tbCfStationItem.itemCategory);
let url = "../tbcfstationitem/queryByItemType?typeId=" + this.tbCfStationItem.itemCategory;
// console.log('url',url)
let that = this;
......@@ -68,6 +73,9 @@ let vm = new Vue({
successCallback: function (r) {
if (r.code === 0) {
that.Goodstype2 = r.list
if(r.list.length===0){
that.tbCfStationItem.itemCategorytwo = null
}
}
}
});
......@@ -80,9 +88,11 @@ let vm = new Vue({
type: "get",
contentType: "application/json",
successCallback: function (r) {
if (r.code === 0) {
that.Goodstype3 = r.descripiton
if(r.descripiton.length===0){
that.tbCfStationItem.itemDescritionId = null
}
}
}
});
......@@ -99,25 +109,38 @@ let vm = new Vue({
UE.getEditor('itemDesc').setContent("");
},
update: function (event) {
this.prevItem = []
let itemId = getSelectedRow("#jqGrid");
if (itemId == null) {
return;
}
vm.showList = false;
vm.title = "修改";
vm.getInfo(itemId);
},
saveOrUpdate: function (event) {
let resArr = [];
this.prevItem.forEach(item => {
resArr.push(item)
})
vm.tbCfStationItem.prevItem = resArr
vm.tbCfStationItem.putaway = this.putaway
this.$set(vm.tbCfStationItem, 'tree', this.attrItem)
let _this = this
vm.tbCfStationItem.itemImg = vm.uploadList[0];
vm.tbCfStationItem.itemDesc = encodeURI(UE.getEditor('itemDesc').getContent()); // 富文本取值
let itemDesc = vm.tbCfStationItem.itemDesc.replace(/&nbsp;/g, " ");
let url = vm.tbCfStationItem.itemId == null ? "../tbcfstationitem/save?itemDesc=" + itemDesc : "../tbcfstationitem/update?itemDesc=" + itemDesc;
vm.tbCfStationItem.itemDesc = vm.tbCfStationItem.itemDesc.replace(/&nbsp;/g, " ");
let url = vm.tbCfStationItem.itemId == null ? "../tbcfstationitem/save" : "../tbcfstationitem/update";
Ajax.request({
url: url,
params: JSON.stringify(vm.tbCfStationItem),
type: "POST",
data: {
putaway: _this.putaway,
prevItem: vm.prevItem,
itemDesc: itemDesc
},
contentType: "application/json",
successCallback: function (r) {
alert('操作成功', function (index) {
......@@ -164,13 +187,44 @@ let vm = new Vue({
});
},
getInfo: function (itemId) {
this.isDisabled = true
let _this = this
Ajax.request({
url: "../tbcfstationitem/info/" + itemId,
async: true,
successCallback: function (r) {
vm.tbCfStationItem = r.tbCfStationItem;
r.code === 0 && (() => {
_this.attrItem = []
let _option = JSON.parse(localStorage.getItem('option'))
//回显属性
r.tbCfStationItem.categoryList.map(item => {
_this.attrItem.push({
categoryName: item.categoryName,
option: _option,
categoryDesc: item.categoryDesc
})
})
//回显sku组合
_this.tmdSkudata = r.tbCfStationItem.itemSkusList
r.tbCfStationItem.itemSkusList.map(item => {
_this.prevItem.push({
skuName: item.skuName,
skuDesc: item.skuDesc,
skuPrice: item.skuPrice,
skuCount: item.skuCount
})
})
console.log(r)
})()
vm.tbCfStationItem = r.tbCfStationItem.item;
vm.uploadList[0] = vm.tbCfStationItem.itemImg;
let itemDesc = vm.tbCfStationItem.itemDesc;
console.log(111, r.tbCfStationItem.item)
_this.changeGoodstype()
_this.changeGoodstype2()
vm.tbCfStationItem.enableFlag === 1 && (() => {
_this.putaway = true;
})()
UE.getEditor('itemDesc').setContent(itemDesc);
if (itemDesc == null || itemDesc == '') {
UE.getEditor('itemDesc').setContent("");
......@@ -194,6 +248,9 @@ let vm = new Vue({
},
reload: function (event) {
this.prevItem = []
this.attrItem = []
this.isDisabled = false
vm.showList = true;
let page = $("#jqGrid").jqGrid('getGridParam', 'page');
$("#jqGrid").jqGrid('setGridParam', {
......@@ -317,18 +374,23 @@ let vm = new Vue({
/* 添加属性 */
addAttr(){
if(this.attrItem.length>2){
addAttr() {
console.log(999)
if (this.attrItem.length > 2) {
this.$Message.info('最多添加三种属性');
}else{
this.attrItem.push({selected:'颜色',option:['颜色','尺寸','长度'],content:''})
} else {
this.attrItem.push({
categoryName: '颜色',
option: JSON.parse(localStorage.getItem('option')),
categoryDesc: ''
})
}
},
/* 删除属性 */
delAttr(){
let arr=new Array();
this.attrItem.map((item,index)=>{
if(this.delIndex!==index){
delAttr() {
let arr = new Array();
this.attrItem.map((item, index) => {
if (this.delIndex !== index) {
arr.push(item)
}
})
......@@ -337,22 +399,22 @@ let vm = new Vue({
this.handleChangeContent()
},
/* 删除单条组合 */
del(i){
let arr=new Array();
this.prevItem.map((item,index)=>{
if(i!==index){
del(i) {
let arr = new Array();
this.prevItem.map((item, index) => {
if (i !== index) {
arr.push(item)
}
})
this.prevItem = arr
},
/* 确定删除 */
confirmDel(i){
confirmDel(i) {
this.delIndex = i
this.alertShow = true
},
/* 计算所有规格的组合 */
handleChangeContent(){
handleChangeContent() {
/* 笛卡尔乘积 */
function product(arr) {
const result = arr.reduce((accArr, currentArr) => {
......@@ -370,46 +432,69 @@ let vm = new Vue({
}, [])
return result.map(arr => arr.join('/'))
}
this.prevItem = []
let contentArr = [] // 属性通过','分割后的数组
this.attrItem.map(item=>{
this.attrItem.map(item => {
let formatter = []
item.content.split(',').map(item_c=>{
if(item_c==='')return
item.categoryDesc.split(',').map(item_c => {
if (item_c === '') return
formatter.push(item_c)
})
contentArr.push({size:formatter,name:item.selected})
contentArr.push({size: formatter, name: item.categoryName})
})
let skuStrName='' //sku组合名
let skuName = '' //sku组合名
let skuArr = []
contentArr.forEach((item_a,index_a)=>{
skuStrName+=item_a.name+'/'
contentArr.forEach((item_a, index_a) => {
skuName += item_a.name + '/'
skuArr.push(item_a.size)
})
skuStrName=skuStrName.slice(0,skuStrName.length-1)
product(skuArr).forEach(item=>{
skuName = skuName.slice(0, skuName.length - 1)
product(skuArr).forEach((item, index) => {
this.prevItem.push({
skuStrName:skuStrName,
skuStrCombination:item,
price:null,
num:0
skuName: skuName,
skuDesc: item,
skuPrice: this.default_price,
skuCount: this.default_count
})
})
//显示回显数据
if (this.tmdSkudata) {
this.prevItem.map(item => {
this.tmdSkudata.map(_item => {
if (_item.skuDesc === item.skuDesc) {
item.skuPrice = _item.skuPrice
item.skuCount = _item.skuCount
}
})
})
}
},
handleCreateSelect(val) {
let option = JSON.parse(localStorage.getItem('option'))
option.push(val)
this.attrItem.map(item => {
item.option.push(val)
})
option = Array.from(new Set(option))
localStorage.setItem('option', JSON.stringify(option))
},
/* 保存 */
save(){
save() {
console.log(this.prevItem) //sku组合数组
console.log(this.putaway) //是否立即上架
}
/** ******************************************************************************************** */
},
created() {
var that = this
$.get('../tbcfgoodstype/queryAll', function (res) {
//console.log("成功");
that.Goodstype = res.list;
//数据初始化
if (!localStorage.getItem('option')) {
localStorage.setItem('option', JSON.stringify(this.attrItem[0].option))
} else {
this.attrItem[0].option = JSON.parse(localStorage.getItem('option'))
}
$.get('../tbcfgoodstype/queryAll', res => {
this.Goodstype = res.list;
console.log('一级分类',this.Goodstype)
})
}
});
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论