| | |
| | |
|
| | | import org.springframework.core.task.TaskExecutor;
|
| | | import org.springframework.stereotype.Service;
|
| | | import org.springframework.transaction.annotation.Transactional;
|
| | | import org.yeshi.utils.JsonUtil;
|
| | | import org.yeshi.utils.entity.FileUploadResult;
|
| | |
|
| | |
| | | import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
|
| | | import com.yeshi.fanli.dto.share.ShareGoodsRecordDTO;
|
| | | import com.yeshi.fanli.entity.bus.user.UserGoodsStorage;
|
| | | import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
|
| | | import com.yeshi.fanli.entity.goods.CommonGoods;
|
| | | import com.yeshi.fanli.entity.jd.JDGoods;
|
| | | import com.yeshi.fanli.entity.system.ConfigKeyEnum;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
|
| | | import com.yeshi.fanli.exception.goods.CommonGoodsException;
|
| | | import com.yeshi.fanli.exception.share.UserShareGoodsRecordException;
|
| | |
| | | import com.yeshi.fanli.exception.user.UserGoodsStorageException;
|
| | | import com.yeshi.fanli.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
|
| | | import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
|
| | | import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
|
| | | import com.yeshi.fanli.service.inter.user.UserGoodsStorageService;
|
| | | import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
|
| | | import com.yeshi.fanli.util.CommonGoodsUtil;
|
| | |
| | |
|
| | | @Service
|
| | | public class UserGoodsStorageServiceImpl implements UserGoodsStorageService {
|
| | | |
| | |
|
| | | @Resource(name = "taskExecutor")
|
| | | private TaskExecutor executor;
|
| | | |
| | |
|
| | | @Resource
|
| | | private RedisManager redisManager;
|
| | | |
| | |
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | | |
| | |
|
| | | @Resource
|
| | | private CommonGoodsService commonGoodsService;
|
| | | |
| | |
|
| | | @Resource
|
| | | private HongBaoManageService manageService;
|
| | |
|
| | | @Resource
|
| | | private UserGoodsStorageMapper userGoodsStorageMapper;
|
| | | |
| | |
|
| | | @Resource
|
| | | private UserShareGoodsRecordService userShareGoodsRecordService;
|
| | | @Resource
|
| | |
| | | public int deleteBatchByPrimaryKey(List<Long> list) {
|
| | | return userGoodsStorageMapper.deleteBatchByPrimaryKey(list);
|
| | | }
|
| | | |
| | |
|
| | | /**
|
| | | * 根据主键 、uid 批量删除
|
| | | * |
| | | * @param list
|
| | | * @return
|
| | | */
|
| | |
| | | public List<UserGoodsStorage> listQueryByUid(long start, int count, Long uid, Integer source) {
|
| | | return userGoodsStorageMapper.listQueryByUid(start, count, uid, source);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | public UserGoodsStorage getByUidAndAuctionId(Long uid, Long auctionId, Integer goodsType) {
|
| | | return userGoodsStorageMapper.getByUidAndAuctionId(uid, auctionId, goodsType);
|
| | |
| | | public long countQueryByUid(Long uid, Integer source) {
|
| | | return userGoodsStorageMapper.countQueryByUid(uid, source);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | public void save(Long uid, Set<Long> auctionIds, Integer goodsType) throws UserGoodsStorageException {
|
| | |
|
| | |
| | | for (Long auctionId : auctionIds) {
|
| | | CommonGoods commonGoods = null;
|
| | | if (goodsType == null) {
|
| | | goodsType = Constant.SOURCE_TYPE_TAOBAO;
|
| | | } |
| | | |
| | | goodsType = Constant.SOURCE_TYPE_TAOBAO;
|
| | | }
|
| | |
|
| | | if (goodsType == Constant.SOURCE_TYPE_JD) {
|
| | | // 京东 |
| | | // 京东
|
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(auctionId);
|
| | | if (jdGoods == null) {
|
| | | jdGoods = JDApiUtil.getGoodsDetail(auctionId);
|
| | |
| | | throw new UserGoodsStorageException(1, auctionId + "商品已下架");
|
| | | }
|
| | | commonGoods = CommonGoodsFactory.create(jdGoods);
|
| | | |
| | |
|
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
|
| | | // 拼多多 |
| | | // 拼多多
|
| | | PDDGoodsDetail pddGoods = PinDuoDuoApiUtil.getGoodsDetail(auctionId);
|
| | | if (pddGoods == null) {
|
| | | throw new UserGoodsStorageException(1, auctionId + "商品已下架");
|
| | |
| | | throw new UserGoodsStorageException(1, auctionId + "商品已下架");
|
| | | }
|
| | | }
|
| | | |
| | | |
| | |
|
| | | if (commonGoods != null) {
|
| | | try {
|
| | | commonGoodsService.addOrUpdateCommonGoods(commonGoods);
|
| | |
| | | userGoodsStorageMapper.updateByPrimaryKeySelective(goodsStorage);
|
| | | } else {
|
| | | goodsStorage = new UserGoodsStorage();
|
| | | goodsStorage.setUid(uid);;
|
| | | goodsStorage.setUid(uid);
|
| | | ;
|
| | | goodsStorage.setState(UserGoodsStorage.STATE_NORMAL);
|
| | | goodsStorage.setCommonGoods(commonGoods);
|
| | | goodsStorage.setCreateTime(new Date());
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | |
| | | @Override
|
| | | @Transactional(rollbackFor=Exception.class)
|
| | | public void addCommonGoods(Long uid, Set<Long> ids) throws UserGoodsStorageException {
|
| | |
|
| | | if (uid == null) {
|
| | |
| | | userGoodsStorageMapper.updateByPrimaryKeySelective(goodsStorage);
|
| | | } else {
|
| | | goodsStorage = new UserGoodsStorage();
|
| | | goodsStorage.setUid(uid);;
|
| | | goodsStorage.setUid(uid);
|
| | | ;
|
| | | goodsStorage.setState(UserGoodsStorage.STATE_NORMAL);
|
| | | goodsStorage.setCommonGoods(commonGoods);
|
| | | goodsStorage.setCreateTime(new Date());
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | |
| | | @Override
|
| | | public JSONArray getMyStorage(int page, int pageSize, Long uid, Integer source) throws UserGoodsStorageException {
|
| | | |
| | |
|
| | | JSONArray array = new JSONArray();
|
| | |
|
| | | List<UserGoodsStorage> listStorage = listQueryByUid(page , pageSize, uid, source);
|
| | | List<UserGoodsStorage> listStorage = listQueryByUid(page, pageSize, uid, source);
|
| | | if (listStorage == null || listStorage.size() == 0) {
|
| | | return array;
|
| | | }
|
| | | |
| | |
|
| | | if (source == null) {
|
| | | source = Constant.SOURCE_TYPE_TAOBAO;
|
| | | }
|
| | | |
| | |
|
| | | List<TaoBaoGoodsBrief> listTaoKeGoods = null;
|
| | | if (source == Constant.SOURCE_TYPE_TAOBAO) {
|
| | | List<Long> listGid = new ArrayList<Long>();
|
| | |
| | | }
|
| | | listGid.add(commonGoods.getGoodsId());
|
| | | }
|
| | | |
| | |
|
| | | // API网络接口验证是否在售
|
| | | try {
|
| | | listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid);
|
| | |
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | |
| | | |
| | | BigDecimal rate = manageService.getFanLiRate();
|
| | |
|
| | | BigDecimal rate = manageService.getFanLiRate(UserLevelEnum.daRen);
|
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
|
| | | |
| | |
|
| | | for (UserGoodsStorage userGoodsStorage : listStorage) {
|
| | | CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
|
| | | if (commonGoods == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | |
| | |
|
| | | int state = 0;
|
| | | Integer goodsType = commonGoods.getGoodsType();
|
| | | |
| | | if (listTaoKeGoods != null && listTaoKeGoods.size() > 0 |
| | | && goodsType != null && goodsType == Constant.SOURCE_TYPE_TAOBAO) {
|
| | | state = 1; // 默认停售
|
| | |
|
| | | if (listTaoKeGoods != null && listTaoKeGoods.size() > 0 && goodsType != null
|
| | | && goodsType == Constant.SOURCE_TYPE_TAOBAO) {
|
| | | state = 1; // 默认停售
|
| | | Long goodsId = commonGoods.getGoodsId();
|
| | | for (TaoBaoGoodsBrief taoKeGoods: listTaoKeGoods) {
|
| | | for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) {
|
| | | Long auctionId = taoKeGoods.getAuctionId();
|
| | | if (goodsId == auctionId || goodsId.equals(auctionId)) {
|
| | | state = 0; // 在售
|
| | |
| | | }
|
| | | commonGoods.setState(state);
|
| | | TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(commonGoods);
|
| | | |
| | |
|
| | | // 判断是否已分享
|
| | | Integer storageState = userGoodsStorage.getState();
|
| | | if (storageState != null && storageState == UserGoodsStorage.STATE_SHARED) {
|
| | |
| | | goodsBrief.setState(2); // 已分享状态 优先显示已下架
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | String json = gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, rate.toString(), null));
|
| | | |
| | |
|
| | | JSONObject dataObject = new JSONObject();
|
| | | dataObject.put("storageId", userGoodsStorage.getId());
|
| | | dataObject.put("goods", json);
|
| | | array.add(dataObject);
|
| | | }
|
| | | |
| | |
|
| | | return array;
|
| | | }
|
| | | |
| | | |
| | |
|
| | | @Override
|
| | | public boolean isExistStorage(Long uid, Long auctionId, Integer goodType) {
|
| | | boolean state = false;
|
| | |
| | | }
|
| | | return state;
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | public JSONObject shareGoods(Long uid, List<Long> listStorageID) |
| | | public JSONObject shareGoods(Long uid, List<Long> listStorageID)
|
| | | throws UserGoodsStorageException, UserShareGoodsRecordException {
|
| | | List<UserGoodsStorage> listStorage = userGoodsStorageMapper.listQueryByIds(listStorageID);
|
| | | if (listStorage == null || listStorage.size() == 0) {
|
| | | throw new UserGoodsStorageException(1, "选品库商品不存在");
|
| | | }
|
| | | |
| | |
|
| | | List<UserGoodsStorage> listResult = new ArrayList<UserGoodsStorage>();
|
| | | // 还原顺序 用于制图
|
| | | for (Long sid: listStorageID) {
|
| | | for (UserGoodsStorage torage: listStorage) {
|
| | | for (Long sid : listStorageID) {
|
| | | for (UserGoodsStorage torage : listStorage) {
|
| | | Long id = torage.getId();
|
| | | if (sid == id || sid.equals(id)) {
|
| | | listResult.add(torage);
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | BigDecimal totalMoney = new BigDecimal(0.00);
|
| | | List<TaoBaoGoodsBrief> listGoodsBrief = new ArrayList<TaoBaoGoodsBrief>();
|
| | | |
| | | BigDecimal rate = hongBaoManageService.getShareRate();
|
| | | for (UserGoodsStorage userGoodsStorage: listResult) {
|
| | |
|
| | | BigDecimal rate = hongBaoManageService.getShareRate(UserLevelEnum.daRen);
|
| | | for (UserGoodsStorage userGoodsStorage : listResult) {
|
| | | CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
|
| | | TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(commonGoods);
|
| | | listGoodsBrief.add(goodsBrief);
|
| | | |
| | |
|
| | | BigDecimal money = TaoBaoUtil.getGoodsHongBaoMoney(goodsBrief, rate);
|
| | | totalMoney = MoneyBigDecimalUtil.add(totalMoney, money);
|
| | | }
|
| | | |
| | | ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsStorage(uid, listGoodsBrief, listStorageID);
|
| | |
|
| | | ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsStorage(uid, listGoodsBrief,
|
| | | listStorageID);
|
| | | FileUploadResult uploadResult = new FileUploadResult();
|
| | | uploadResult.setUrl(shareRecord.getSharePictureUrl());
|
| | | |
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("revenue", listGoodsBrief.size() + "个商品预估分享奖金:¥"+totalMoney);
|
| | | data.put("revenue", listGoodsBrief.size() + "个商品预估分享奖金:¥" + totalMoney);
|
| | | data.put("shareId", shareRecord.getRedisKey());
|
| | | data.put("shareImg", uploadResult);
|
| | | data.put("notifyDesc", configService.get("goods_share_multiple_notify"));
|
| | | data.put("notifyDesc", configService.get(ConfigKeyEnum.goodsShareMultipleNotify.getKey()));
|
| | | return data;
|
| | | }
|
| | | |
| | | |
| | | |
| | |
|
| | | @Override
|
| | | public JSONObject createShareV2(Long uid, List<Long> listStorageID) throws UserGoodsStorageException, UserShareGoodsRecordException {
|
| | | public JSONObject createShareV2(Long uid, List<Long> listStorageID, boolean needDrawPicture)
|
| | | throws UserGoodsStorageException, UserShareGoodsRecordException {
|
| | | List<UserGoodsStorage> listStorage = userGoodsStorageMapper.listQueryByIds(listStorageID);
|
| | | if (listStorage == null || listStorage.size() == 0) {
|
| | | throw new UserGoodsStorageException(1, "选品库商品不存在");
|
| | | }
|
| | | |
| | |
|
| | | List<UserGoodsStorage> listResult = new ArrayList<UserGoodsStorage>();
|
| | | // 还原顺序 用于制图
|
| | | for (Long sid: listStorageID) {
|
| | | for (UserGoodsStorage torage: listStorage) {
|
| | | for (Long sid : listStorageID) {
|
| | | for (UserGoodsStorage torage : listStorage) {
|
| | | Long id = torage.getId();
|
| | | if (sid == id || sid.equals(id)) {
|
| | | listResult.add(torage);
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | BigDecimal totalMoney = new BigDecimal(0.00);
|
| | | List<CommonGoods> listCommonGoods = new ArrayList<CommonGoods>();
|
| | | |
| | |
|
| | | Integer goodsType = null;
|
| | | BigDecimal rate = hongBaoManageService.getShareRate();
|
| | | for (UserGoodsStorage userGoodsStorage: listResult) {
|
| | | BigDecimal rate = hongBaoManageService.getShareRate(UserLevelEnum.daRen);
|
| | | for (UserGoodsStorage userGoodsStorage : listResult) {
|
| | | CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
|
| | | BigDecimal money = CommonGoodsUtil.getCommission(commonGoods, rate);
|
| | | totalMoney = MoneyBigDecimalUtil.add(totalMoney, money);
|
| | | |
| | | listCommonGoods.add(commonGoods);
|
| | |
|
| | | if (goodsType == null) {
|
| | | goodsType = commonGoods.getGoodsType();
|
| | | }
|
| | | }
|
| | | |
| | | ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsStorageV2(uid, listCommonGoods, listStorageID);
|
| | |
|
| | | ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsStorageV2(uid, listCommonGoods,
|
| | | listStorageID, needDrawPicture);
|
| | | FileUploadResult uploadResult = new FileUploadResult();
|
| | | uploadResult.setUrl(shareRecord.getSharePictureUrl());
|
| | | |
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("revenue", listCommonGoods.size() + "个商品预估分享奖金:¥"+totalMoney);
|
| | | data.put("revenue", listCommonGoods.size() + "个商品预估分享奖金:¥" + totalMoney);
|
| | | data.put("shareId", shareRecord.getRedisKey());
|
| | | data.put("shareImg", uploadResult);
|
| | | |
| | |
|
| | | // 提示语不同
|
| | | if (goodsType == Constant.SOURCE_TYPE_JD) {
|
| | | // 京东
|
| | | data.put("notifyDesc", configService.get("goods_share_notify_jd"));
|
| | | data.put("notifyDesc", configService.get(ConfigKeyEnum.goodsShareNotifyJD.getKey()));
|
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
|
| | | // 拼多多
|
| | | data.put("notifyDesc", configService.get("goods_share_notify_pdd"));
|
| | | data.put("notifyDesc", configService.get(ConfigKeyEnum.goodsShareNotifyPDD.getKey()));
|
| | | } else {
|
| | | data.put("notifyDesc", configService.get("goods_share_multiple_notify"));
|
| | | data.put("notifyDesc", configService.get(ConfigKeyEnum.goodsShareMultipleNotify.getKey()));
|
| | | }
|
| | | return data;
|
| | | }
|