fanli/src/main/java/com/yeshi/fanli/controller/client/RecommendController.java
@@ -11,6 +11,9 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -91,6 +94,7 @@ import com.yeshi.fanli.service.inter.user.ShamUserService; import com.yeshi.fanli.service.inter.user.ShareManageService; import com.yeshi.fanli.service.inter.user.TBPidService; import com.yeshi.fanli.service.inter.user.UserGoodsStorageService; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.RedisManager; @@ -103,9 +107,6 @@ import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @Controller @RequestMapping("api/v1/user") @@ -212,7 +213,10 @@ @Resource private CommonGoodsService commonGoodsService; @Resource private UserGoodsStorageService userGoodsStorageService; @RequestMapping(value = "getrecommendsection") public void getRecommendSection(AcceptData acceptData, int index, PrintWriter out) { @@ -1960,6 +1964,13 @@ // 分享路径 String shareUrl = String.format("%s?id=" + tb.getAuctionId(), Constant.systemCommonConfig.getAppShareInfoUrl()); // 是否加入选品库: 0未加入 1 已加入 boolean storageState = false; if (uid != null && uid.trim().length() > 0) { storageState = userGoodsStorageService.isExistStorage(Long.parseLong(uid), Long.parseLong(id)); } data.put("storageState", storageState); data.put("shareUrl", shareUrl); data.put("goods", goods); data.put("shareUsers", listShareUser); fanli/src/main/java/com/yeshi/fanli/controller/client/UserGoodsStorageController.java
New file @@ -0,0 +1,194 @@ package com.yeshi.fanli.controller.client; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.annotation.Resource; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.yeshi.utils.JsonUtil; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.UserGoodsStorage; import com.yeshi.fanli.exception.user.UserGoodsStorageException; import com.yeshi.fanli.service.inter.user.UserGoodsStorageService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; @Controller @RequestMapping("api/v1/userstorage") public class UserGoodsStorageController { @Resource private UserGoodsStorageService userGoodsStorageService; /** * 添加选品库 * * @param acceptData * @param uid * 用户id * @param auctionId * 淘宝商品id * @param out */ @RequestMapping(value = "addstorage", method = RequestMethod.POST) public void addStorage(AcceptData acceptData, Long uid, String auctionIds, PrintWriter out) { try { Gson gson = new Gson(); Set<Long> set = gson.fromJson(auctionIds, new TypeToken<HashSet<Long>>() {}.getType()); if (set == null || set.size() == 0) { out.print(JsonUtil.loadFalseResult("未选择商品")); return; } userGoodsStorageService.save(uid, set); out.print(JsonUtil.loadTrueResult("添加成功")); } catch (UserGoodsStorageException e) { out.print(JsonUtil.loadFalseResult(e.getMsg())); } catch (Exception e) { out.print(JsonUtil.loadFalseResult("添加失败")); e.printStackTrace(); } } /** * 查询用户选品库数据 * * @param acceptData * @param page * 页码 初始值 1 * @param uid * 用户id * @param out */ @RequestMapping(value = "getstoragelist", method = RequestMethod.POST) public void getStorageList(AcceptData acceptData, Integer page, Long uid, PrintWriter out) { if (page == null || page < 1) { out.print(JsonUtil.loadFalseResult("页码不正确")); } if (uid == null) { out.print(JsonUtil.loadFalseResult("用户未登陆")); } try { int pageSize = Constant.PAGE_SIZE; JSONObject data = new JSONObject(); JSONArray array = null; long count = userGoodsStorageService.countQueryByUid(uid); if (count > 0) { array = userGoodsStorageService.getMyStorage((page - 1) * pageSize, pageSize, uid); } data.put("count", count); data.put("result_list", array); out.print(JsonUtil.loadTrueResult(data)); } catch (Exception e) { out.print(JsonUtil.loadFalseResult("加载列表失败")); e.printStackTrace(); } } /** * 删除 * * @param callback * @param storageIds * id数组 * @param out */ @RequestMapping(value = "deletestorage", method = RequestMethod.POST) public void deleteStorage(AcceptData acceptData, Long uid, String storageIds, PrintWriter out) { if (StringUtil.isNullOrEmpty(storageIds)) { out.print(JsonUtil.loadFalseResult("未选择商品")); return; } if (uid == null) { out.print(JsonUtil.loadFalseResult("用户未登陆")); return; } try { Gson gson = new Gson(); List<Long> list = gson.fromJson(storageIds, new TypeToken<ArrayList<Long>>() {}.getType()); if (list == null || list.size() == 0) { out.print(JsonUtil.loadFalseResult("未选择商品")); return; } userGoodsStorageService.deleteBatchByUidAndPrimaryKey(uid, list); out.print(JsonUtil.loadTrueResult("删除成功")); } catch (Exception e) { out.print(JsonUtil.loadFalseResult("删除失败")); e.printStackTrace(); } } /** * 根据商品id移除选品库 * * @param callback * @param storageIds * id数组 * @param out */ @RequestMapping(value = "accordtorage", method = RequestMethod.POST) public void accordtorage(AcceptData acceptData, Long uid, Long auctionId, PrintWriter out) { if (auctionId == null) { out.print(JsonUtil.loadFalseResult("未选择商品")); return; } if (uid == null) { out.print(JsonUtil.loadFalseResult("用户未登陆")); return; } try { UserGoodsStorage userGoodsStorage = userGoodsStorageService.getByUidAndAuctionId(uid, auctionId); boolean storageState = false; if (userGoodsStorage != null) { // 取消加入选品库 userGoodsStorageService.deleteByPrimaryKey(userGoodsStorage.getId()); } else { // 加入选品库 Set<Long> set = new HashSet<Long>(); set.add(auctionId); userGoodsStorageService.save(uid, set); storageState = true; } JSONObject data = new JSONObject(); data.put("storageState", storageState); out.print(JsonUtil.loadTrueResult(data)); } catch (Exception e) { out.print(JsonUtil.loadFalseResult("操作失败")); e.printStackTrace(); } } } fanli/src/main/java/com/yeshi/fanli/dao/mybatis/user/UserGoodsStorageMapper.java
New file @@ -0,0 +1,67 @@ package com.yeshi.fanli.dao.mybatis.user; import java.util.List; import org.apache.ibatis.annotations.Param; import com.yeshi.fanli.entity.bus.user.UserGoodsStorage; public interface UserGoodsStorageMapper { int deleteByPrimaryKey(Long id); int insert(UserGoodsStorage record); int insertSelective(UserGoodsStorage record); UserGoodsStorage selectByPrimaryKey(Long id); int updateByPrimaryKeySelective(UserGoodsStorage record); int updateByPrimaryKey(UserGoodsStorage record); /** * 根据主键批量删除 * @param list * @return */ int deleteBatchByPrimaryKey(List<Long> list); /** * 查询用户对应的选品库 * @param start * @param count * @param uid * @return */ List<UserGoodsStorage> listQueryByUid(@Param("start") long start, @Param("count") int count, @Param("uid") Long uid); long countQueryByUid(@Param("uid") Long uid); /** * 根据用户id、 简版商品 id(CommonGoods.id) * @param uid 用户id * @param cid 商品id(CommonGoods.id) * @return */ UserGoodsStorage getByUidAndCid(@Param("uid") Long uid, @Param("cid") Long cid); /** * 根据主键 、uid 批量删除 * @param list * @return */ int deleteBatchByUidAndPrimaryKey(@Param("uid") Long uid, @Param("list") List<Long> list); /** * 根据用户id、淘宝商品 id * @param uid 用户id * @param auctionId 淘宝商品 id * @return */ UserGoodsStorage getByUidAndAuctionId(@Param("uid") Long uid, @Param("auctionId") Long auctionId); } fanli/src/main/java/com/yeshi/fanli/entity/bus/user/UserGoodsStorage.java
New file @@ -0,0 +1,84 @@ package com.yeshi.fanli.entity.bus.user; import java.util.Date; import org.yeshi.utils.mybatis.Column; import org.yeshi.utils.mybatis.Table; import com.yeshi.fanli.entity.goods.CommonGoods; @Table("yeshi_ec_user_goods_storage") public class UserGoodsStorage { public static int STATE_NORMAL = 0;// 初始 public static int STATE_SHARED = 1;// 1已分享 @Column(name = "guc_id") private Long id; // 商品 @Column(name = "guc_common_id") private CommonGoods commonGoods; // 用户id @Column(name = "guc_uid") private Long uid; // 状态 0 初始 1已分享 @Column(name = "guc_state") private Integer state; @Column(name = "guc_createtime") private Date createTime; @Column(name = "guc_updatetime") private Date updateTime; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public CommonGoods getCommonGoods() { return commonGoods; } public void setCommonGoods(CommonGoods commonGoods) { this.commonGoods = commonGoods; } public Long getUid() { return uid; } public void setUid(Long uid) { this.uid = uid; } public Integer getState() { return state; } public void setState(Integer state) { this.state = state; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Date getUpdateTime() { return updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } } fanli/src/main/java/com/yeshi/fanli/exception/user/UserGoodsStorageException.java
New file @@ -0,0 +1,32 @@ package com.yeshi.fanli.exception.user; public class UserGoodsStorageException extends Exception { /** * */ private static final long serialVersionUID = 1L; private int code; private String msg; public int getCode() { return code; } public String getMsg() { return msg; } public UserGoodsStorageException(int code, String msg) { this.code = code; this.msg = msg; } public UserGoodsStorageException() { } @Override public String getMessage() { return this.msg; } } fanli/src/main/java/com/yeshi/fanli/mapping/user/UserGoodsStorageMapper.xml
New file @@ -0,0 +1,91 @@ <?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.yeshi.fanli.dao.mybatis.user.UserGoodsStorageMapper"> <resultMap id="BaseResultMap" type="com.yeshi.fanli.entity.bus.user.UserGoodsStorage"> <id column="guc_id" property="id" jdbcType="BIGINT"/> <result column="guc_uid" property="uid" jdbcType="BIGINT"/> <result column="guc_state" property="state" jdbcType="INTEGER"/> <result column="guc_createtime" property="createTime" jdbcType="TIMESTAMP"/> <result column="guc_updatetime" property="updateTime" jdbcType="TIMESTAMP"/> <association property="commonGoods" column="guc_common_id" resultMap="com.yeshi.fanli.dao.mybatis.goods.CommonGoodsMapper.BaseResultMap" /> </resultMap> <sql id="Base_Column_List">guc_id,guc_common_id,guc_uid,guc_state,guc_createtime,guc_updatetime</sql> <sql id="Convert_Column_List">guc_id,guc_common_id as cg_id,guc_uid,guc_state,guc_createtime,guc_updatetime</sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long">select <include refid="Base_Column_List"/>from yeshi_ec_user_goods_storage where guc_id = #{id,jdbcType=BIGINT} </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from yeshi_ec_user_goods_storage where guc_id = #{id,jdbcType=BIGINT}</delete> <insert id="insert" parameterType="com.yeshi.fanli.entity.bus.user.UserGoodsStorage" useGeneratedKeys="true" keyProperty="id">insert into yeshi_ec_user_goods_storage (guc_id,guc_common_id,guc_uid,guc_state,guc_createtime,guc_updatetime) values (#{id,jdbcType=BIGINT},#{commonGoods.id,jdbcType=BIGINT},#{uid,jdbcType=BIGINT},#{state,jdbcType=INTEGER},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP})</insert> <insert id="insertSelective" parameterType="com.yeshi.fanli.entity.bus.user.UserGoodsStorage" useGeneratedKeys="true" keyProperty="id">insert into yeshi_ec_user_goods_storage <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null">guc_id,</if> <if test="commonGoods != null">guc_common_id,</if> <if test="uid != null">guc_uid,</if> <if test="state != null">guc_state,</if> <if test="createTime != null">guc_createtime,</if> <if test="updateTime != null">guc_updatetime,</if> </trim>values <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null">#{id,jdbcType=BIGINT},</if> <if test="commonGoods != null">#{commonGoods.id,jdbcType=BIGINT},</if> <if test="uid != null">#{uid,jdbcType=BIGINT},</if> <if test="state != null">#{state,jdbcType=INTEGER},</if> <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if> <if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP},</if> </trim> </insert> <update id="updateByPrimaryKey" parameterType="com.yeshi.fanli.entity.bus.user.UserGoodsStorage">update yeshi_ec_user_goods_storage set guc_common_id = #{commonGoods.id,jdbcType=BIGINT},guc_uid = #{uid,jdbcType=BIGINT},guc_state = #{state,jdbcType=INTEGER},guc_createtime = #{createTime,jdbcType=TIMESTAMP},guc_updatetime = #{updateTime,jdbcType=TIMESTAMP} where guc_id = #{id,jdbcType=BIGINT}</update> <update id="updateByPrimaryKeySelective" parameterType="com.yeshi.fanli.entity.bus.user.UserGoodsStorage">update yeshi_ec_user_goods_storage <set> <if test="commonGoods != null">guc_common_id=#{commonGoods.id,jdbcType=BIGINT},</if> <if test="uid != null">guc_uid=#{uid,jdbcType=BIGINT},</if> <if test="state != null">guc_state=#{state,jdbcType=INTEGER},</if> <if test="createTime != null">guc_createtime=#{createTime,jdbcType=TIMESTAMP},</if> <if test="updateTime != null">guc_updatetime=#{updateTime,jdbcType=TIMESTAMP},</if> </set> where guc_id = #{id,jdbcType=BIGINT} </update> <select id="listQueryByUid" resultMap="BaseResultMap"> SELECT * FROM yeshi_ec_user_goods_storage tg LEFT JOIN `yeshi_ec_common_goods` cg ON tg.`guc_common_id` = cg.`cg_id` WHERE tg.`guc_uid` = #{uid} ORDER BY tg.`guc_updatetime` DESC LIMIT #{start},#{count} </select> <select id="countQueryByUid" resultType="java.lang.Long"> SELECT IFNULL(count(guc_id),0) FROM yeshi_ec_user_goods_storage tg WHERE tg.`guc_uid` = #{uid} </select> <select id="getByUidAndCid" resultMap="BaseResultMap"> SELECT <include refid="Convert_Column_List"/> FROM yeshi_ec_user_goods_storage tg WHERE tg.`guc_uid` = #{uid} AND tg.`guc_common_id`= #{cid} </select> <delete id="deleteBatchByPrimaryKey" parameterType="java.util.List"> delete from yeshi_ec_user_goods_storage WHERE guc_id in <foreach collection="list" item="item" open="(" close=")" separator=",">#{item}</foreach> </delete> <delete id="deleteBatchByUidAndPrimaryKey" parameterType="java.util.List"> delete from yeshi_ec_user_goods_storage WHERE guc_uid = #{uid} AND guc_id in <foreach collection="list" item="item" open="(" close=")" separator=",">#{item}</foreach> </delete> <select id="getByUidAndAuctionId" resultMap="BaseResultMap"> SELECT <include refid="Convert_Column_List"/> FROM `yeshi_ec_user_goods_storage` g LEFT JOIN `yeshi_ec_common_goods` c ON g.`guc_common_id` = c.`cg_id` WHERE g.`guc_uid` = #{uid} AND c.`cg_goods_id`= #{auctionId} </select> </mapper> fanli/src/main/java/com/yeshi/fanli/service/impl/goods/CommonGoodsServiceImpl.java
@@ -1,16 +1,18 @@ package com.yeshi.fanli.service.impl.goods; import java.util.Date; import java.util.List; import javax.annotation.Resource; import javax.transaction.Transactional; import org.springframework.stereotype.Service; import org.yeshi.utils.StringUtil; import com.yeshi.fanli.dao.mybatis.goods.CommonGoodsMapper; import com.yeshi.fanli.entity.goods.CommonGoods; import com.yeshi.fanli.exception.goods.CommonGoodsException; import com.yeshi.fanli.service.inter.goods.CommonGoodsService; import com.yeshi.fanli.util.StringUtil; @Service public class CommonGoodsServiceImpl implements CommonGoodsService { @@ -116,4 +118,20 @@ return commonGoodsMapper.selectByGoodsIdAndGoodsType(goodsId, goodsType); } @Override @Transactional public void updateBatchCommonGoods(List<CommonGoods> listCommonGoods) { if (listCommonGoods == null || listCommonGoods.size() == 0) { return; } for (CommonGoods commonGoods: listCommonGoods) { try { updateCommonGoods(commonGoods); } catch (Exception e) { e.printStackTrace(); } } } } fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserGoodsStorageServiceImpl.java
New file @@ -0,0 +1,300 @@ package com.yeshi.fanli.service.impl.user; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; import javax.annotation.Resource; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Service; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.taobao.TbImgUtil; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.yeshi.fanli.dao.mybatis.user.UserGoodsStorageMapper; import com.yeshi.fanli.entity.bus.user.UserGoodsStorage; import com.yeshi.fanli.entity.goods.CommonGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.exception.goods.CommonGoodsException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.exception.user.UserGoodsStorageException; import com.yeshi.fanli.service.inter.goods.CommonGoodsService; import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; import com.yeshi.fanli.service.inter.user.UserGoodsStorageService; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.factory.CommonGoodsFactory; import com.yeshi.fanli.util.taobao.TaoBaoUtil; @Service public class UserGoodsStorageServiceImpl implements UserGoodsStorageService { @Resource(name = "taskExecutor") private TaskExecutor executor; @Resource private RedisManager redisManager; @Resource private CommonGoodsService commonGoodsService; @Resource private HongBaoManageService manageService; @Resource private UserGoodsStorageMapper userGoodsStorageMapper; @Override public int deleteByPrimaryKey(Long id) { return userGoodsStorageMapper.deleteByPrimaryKey(id); } @Override public int insert(UserGoodsStorage record) { return userGoodsStorageMapper.insert(record); } @Override public int insertSelective(UserGoodsStorage record) { return userGoodsStorageMapper.insertSelective(record); } @Override public UserGoodsStorage selectByPrimaryKey(Long id) { return userGoodsStorageMapper.selectByPrimaryKey(id); } @Override public int updateByPrimaryKeySelective(UserGoodsStorage record) { return userGoodsStorageMapper.updateByPrimaryKeySelective(record); } @Override public int updateByPrimaryKey(UserGoodsStorage record) { return userGoodsStorageMapper.updateByPrimaryKey(record); } /** * 根据主键批量删除 * * @param list * @return */ @Override public int deleteBatchByPrimaryKey(List<Long> list) { return userGoodsStorageMapper.deleteBatchByPrimaryKey(list); } /** * 根据主键 、uid 批量删除 * @param list * @return */ @Override public int deleteBatchByUidAndPrimaryKey(Long uid, List<Long> list) { return userGoodsStorageMapper.deleteBatchByUidAndPrimaryKey(uid, list); } @Override public List<UserGoodsStorage> listQueryByUid(long start, int count, Long uid) { return userGoodsStorageMapper.listQueryByUid(start, count, uid); } @Override public UserGoodsStorage getByUidAndAuctionId(Long uid, Long auctionId) { return userGoodsStorageMapper.getByUidAndAuctionId(uid, auctionId); } @Override public long countQueryByUid(Long uid) { return userGoodsStorageMapper.countQueryByUid(uid); } @Override public void save(Long uid, Set<Long> auctionIds) throws UserGoodsStorageException { if (uid == null) { throw new UserGoodsStorageException(1, "用户尚未登录"); } if (auctionIds == null || auctionIds.size() == 0) { throw new UserGoodsStorageException(1, "商品ID为空"); } for (Long auctionId : auctionIds) { TaoBaoGoodsBrief goodsBrief = null; try { // 获取商品详情 goodsBrief = redisManager.getTaoBaoGoodsBrief(auctionId); } catch (TaobaoGoodsDownException e) { // 更新简版 下架状态 CommonGoods commonGoods = new CommonGoods(); commonGoods.setGoodsId(auctionId); commonGoods.setGoodsType(CommonGoods.GOODS_TYPE_TB); commonGoods.setState(CommonGoods.STATE_OFFLINE); throw new UserGoodsStorageException(1, "该商品已下架"); } // 转换简版商品信息 CommonGoods commonGoods = CommonGoodsFactory.create(goodsBrief); try { commonGoodsService.addOrUpdateCommonGoods(commonGoods); } catch (CommonGoodsException e) { e.printStackTrace(); throw new UserGoodsStorageException(1, "商品信息更新失败"); } Long cid = commonGoods.getId(); UserGoodsStorage goodsStorage = userGoodsStorageMapper.getByUidAndCid(uid, cid); if (goodsStorage != null) { // 初始话状态 goodsStorage.setState(UserGoodsStorage.STATE_NORMAL); goodsStorage.setUpdateTime(new Date()); userGoodsStorageMapper.updateByPrimaryKeySelective(goodsStorage); } else { goodsStorage = new UserGoodsStorage(); goodsStorage.setUid(uid);; goodsStorage.setState(UserGoodsStorage.STATE_NORMAL); goodsStorage.setCommonGoods(commonGoods); goodsStorage.setCreateTime(new Date()); goodsStorage.setUpdateTime(new Date()); userGoodsStorageMapper.insertSelective(goodsStorage); } } } @Override public JSONArray getMyStorage(int page, int pageSize, Long uid) throws UserGoodsStorageException { JSONArray array = new JSONArray(); List<UserGoodsStorage> listStorage = listQueryByUid(page , pageSize, uid); if (listStorage == null || listStorage.size() == 0) { return array; } Date nowDate = new Date(); long nh = 1000 * 60 * 60; long nd = 1000 * 24 * 60 * 60; List<CommonGoods> listUpadteCommonGoods = new ArrayList<CommonGoods>(); Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); Map<String, String> map = manageService.convertMap(); String proportion = map.get("hongbao_goods_proportion"); String fcRate = map.get("hongbao_fc_ratio"); for (UserGoodsStorage userGoodsStorage : listStorage) { CommonGoods commonGoods = userGoodsStorage.getCommonGoods(); if (commonGoods == null) { continue; } TaoBaoGoodsBrief goodsBrief = null; JSONObject dataObject = new JSONObject(); // 更新一个小时之内的商品不再更新 Integer goodsState = commonGoods.getState(); // 状态未下架时进行更新 if (goodsState != null && (goodsState != 1 || !goodsState.equals(1))) { Date updateTime = commonGoods.getUpdateTime(); if (updateTime != null) { long diff = nowDate.getTime() - updateTime.getTime(); // 计算差多少小时 long hour = diff % nd / nh; if (hour > 1 ) { try { if (commonGoods.getGoodsType() == CommonGoods.GOODS_TYPE_TB) { goodsBrief = redisManager.getTaoBaoGoodsBrief(commonGoods.getGoodsId()); goodsBrief.setState(0); goodsState = 0; } } catch (TaobaoGoodsDownException e) { // 已下架 goodsState = 1; commonGoods.setState(1); e.printStackTrace(); } } } } if (goodsBrief == null) { goodsBrief = TaoBaoUtil.convert(commonGoods); } else { CommonGoods upadeteCommonGoods = CommonGoodsFactory.create(goodsBrief); upadeteCommonGoods.setState(goodsState); listUpadteCommonGoods.add(upadeteCommonGoods); } // 判断是否已分享 Integer state = userGoodsStorage.getState(); int shared = UserGoodsStorage.STATE_SHARED; if (state != null && (state == shared || state.equals(shared))) { if (goodsState != 1 || goodsState.equals(1)) { goodsBrief.setState(2); // 已分享状态 } } // 改变图片尺寸 String pictUrl = commonGoods.getPicture(); if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) { commonGoods.setPicture(TbImgUtil.getTBSize320Img(pictUrl)); } String json = gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, proportion, fcRate, null)); dataObject.put("storageId", userGoodsStorage.getId()); dataObject.put("goods", json); array.add(dataObject); } if (listUpadteCommonGoods.size() > 0) { executor.execute(new Runnable() { @Override public void run() { try { // 更新简版信息 commonGoodsService.updateBatchCommonGoods(listUpadteCommonGoods); } catch (Exception e) { e.printStackTrace(); } } }); } return array; } @Override public boolean isExistStorage(Long uid, Long auctionId) { boolean state = false; if (uid != null && auctionId != null) { UserGoodsStorage userGoodsStorage = userGoodsStorageMapper.getByUidAndAuctionId(uid, auctionId); if (userGoodsStorage != null) { state = true; } } return state; } } fanli/src/main/java/com/yeshi/fanli/service/inter/goods/CommonGoodsService.java
@@ -1,5 +1,7 @@ package com.yeshi.fanli.service.inter.goods; import java.util.List; import com.yeshi.fanli.entity.goods.CommonGoods; import com.yeshi.fanli.exception.goods.CommonGoodsException; @@ -53,6 +55,12 @@ * @param goodsType * @return */ CommonGoods getCommonGoodsByGoodsIdAndGoodsType(Long goodsId, int goodsType); public CommonGoods getCommonGoodsByGoodsIdAndGoodsType(Long goodsId, int goodsType); /** * 批量更新 * @param listCommonGoods */ public void updateBatchCommonGoods(List<CommonGoods> listCommonGoods); } fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserGoodsStorageService.java
New file @@ -0,0 +1,88 @@ package com.yeshi.fanli.service.inter.user; import java.util.List; import java.util.Set; import net.sf.json.JSONArray; import org.apache.ibatis.annotations.Param; import com.yeshi.fanli.entity.bus.user.UserGoodsStorage; import com.yeshi.fanli.exception.user.UserGoodsStorageException; public interface UserGoodsStorageService { public int deleteByPrimaryKey(Long id); public int insert(UserGoodsStorage record); public int insertSelective(UserGoodsStorage record); public UserGoodsStorage selectByPrimaryKey(Long id); public int updateByPrimaryKeySelective(UserGoodsStorage record); public int updateByPrimaryKey(UserGoodsStorage record); /** * 查询用户对应的选品库 * @param start * @param count * @param uid * @return */ public List<UserGoodsStorage> listQueryByUid(@Param("start") long start, @Param("count") int count, @Param("uid") Long uid); public long countQueryByUid(@Param("uid") Long uid); /** * 新增或初始化用户选品库 * @param uid 用户id * @param auctionIds 商品id集合 * @return * @throws UserGoodsStorageException */ public void save(Long uid, Set<Long> auctionIds) throws UserGoodsStorageException; /** * 批量删除 * @param list * @return */ public int deleteBatchByPrimaryKey(List<Long> list); /** * 查询备选库 * @param page * @param pageSize * @param uid * @return * @throws UserGoodsStorageException */ public JSONArray getMyStorage(int page, int pageSize, Long uid) throws UserGoodsStorageException; /** * 根据主键 、uid 批量删除 * @param list * @return */ public int deleteBatchByUidAndPrimaryKey(Long uid, List<Long> list); /** * 根据用户id、淘宝商品 id * @param uid 用户id * @param auctionId 淘宝商品 id * @return */ public UserGoodsStorage getByUidAndAuctionId(Long uid, Long auctionId); /** * 判断是否属于选品库 * @param uid 用户id * @param auctionId 商品id * @return */ public boolean isExistStorage(Long uid, Long auctionId); }