facade-goods/src/main/java/com/yeshi/goods/facade/dto/taobao/dataoke/DaTaoKeListTopOffDTO.java
New file @@ -0,0 +1,153 @@ package com.yeshi.goods.facade.dto.taobao.dataoke; import java.io.Serializable; import java.util.Date; import java.util.List; public class DaTaoKeListTopOffDTO implements Serializable { /** * platformType : tb * source : taobao * title : * remark : * type : taobao * isLuxury : 0 * idList : ["593752130189"] * urlList : ["¥O3edXTebmVG¥"] * imageList : ["https://img.alicdn.com/bao/uploaded/i4/3512189193/O1CN01xnblyU2HmRiB4LUW1_!!0-item_pic.jpg"] * tag : * stepId : * originContent : 19.9元 桃李食品旗舰店 多口味粽子礼盒装600g ¥O3edXTebmVG¥/ * createTime : 2021-06-07 11:22:37 * updateTime : 2021-06-07 11:22:37 */ private String platformType; private String source; private String title; private String originContent; private String remark; private String type; private int isLuxury;//是否神单0-常规;1-神单(优质商品且价低,建议主推) private String tag; private String stepId; private Date createTime; private Date updateTime; private List<String> idList; private List<String> urlList; private List<String> imageList; public String getPlatformType() { return platformType; } public void setPlatformType(String platformType) { this.platformType = platformType; } public String getSource() { return source; } public void setSource(String source) { this.source = source; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public String getType() { return type; } public void setType(String type) { this.type = type; } public int getIsLuxury() { return isLuxury; } public void setIsLuxury(int isLuxury) { this.isLuxury = isLuxury; } public String getTag() { return tag; } public void setTag(String tag) { this.tag = tag; } public String getStepId() { return stepId; } public void setStepId(String stepId) { this.stepId = stepId; } public String getOriginContent() { return originContent; } public void setOriginContent(String originContent) { this.originContent = originContent; } 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; } public List<String> getIdList() { return idList; } public void setIdList(List<String> idList) { this.idList = idList; } public List<String> getUrlList() { return urlList; } public void setUrlList(List<String> urlList) { this.urlList = urlList; } public List<String> getImageList() { return imageList; } public void setImageList(List<String> imageList) { this.imageList = imageList; } } facade-goods/src/main/java/com/yeshi/goods/facade/dto/taobao/dataoke/DaTaoKeResult.java
New file @@ -0,0 +1,43 @@ package com.yeshi.goods.facade.dto.taobao.dataoke; import java.io.Serializable; import java.util.List; public class DaTaoKeResult { private long totalCount; private String pageId; private List<? extends Serializable> list; public DaTaoKeResult() { } public DaTaoKeResult(long totalCount, String pageId, List<? extends Serializable> list) { this.totalCount = totalCount; this.pageId = pageId; this.list = list; } public long getTotalCount() { return totalCount; } public void setTotalCount(long totalCount) { this.totalCount = totalCount; } public String getPageId() { return pageId; } public void setPageId(String pageId) { this.pageId = pageId; } public List<? extends Serializable> getList() { return list; } public void setList(List<? extends Serializable> list) { this.list = list; } } facade-goods/src/main/java/com/yeshi/goods/facade/utils/taobao/DaTaoKeApiUtil.java
@@ -4,8 +4,11 @@ import com.google.gson.FieldAttributes; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.yeshi.common.entity.taobao.TaoKeAppInfo; import com.yeshi.goods.facade.dto.taobao.TaoBaoShopDTO; import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeListTopOffDTO; import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeResult; import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2; import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeGoodsResult; @@ -19,12 +22,10 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.yeshi.utils.HttpUtil; import org.yeshi.utils.MoneyBigDecimalUtil; import org.yeshi.utils.StringUtil; import org.yeshi.utils.TimeUtil; import org.yeshi.utils.*; import java.io.*; import java.lang.reflect.Type; import java.math.BigDecimal; import java.net.URLEncoder; import java.util.*; @@ -845,6 +846,47 @@ return daTaoKeGoodsResult; } /** * 获取线报 (http://www.dataoke.com/kfpt/api-d.html?id=62) * * @param topic 1-超值买返2-天猫超市3-整点抢购4-最新线报-所有数据(默认)5-最新线报-天猫6-最新线报-京东7-最新线报-拼多多8-最新线报-淘宝 * @param pageSize * @return */ public static DaTaoKeResult listTipOff(int topic, String pageId, int pageSize) { TaoKeAppInfo app = getRandomApp(); Map<String, String> params = new TreeMap<>(); params.put("version", "v3.0.0"); params.put("appKey", app.getAppKey()); params.put("pageSize", pageSize + ""); params.put("topic", topic + ""); params.put("selectTime", System.currentTimeMillis() / 1000 + ""); if (pageId != null) params.put("pageId", pageId + ""); else params.put("pageId", 1 + ""); params.put("sign", getSign(params, app.getAppSecret())); String result = null; try { result = baseGet("https://openapi.dataoke.com/api/dels/spider/list-tip-off", params); } catch (Exception e) { result = baseGet("https://openapi.dataoke.com/api/dels/spider/list-tip-off", params); } JSONObject root = JSONObject.fromObject(result); if (root.optInt("code") != 0) { return null; } JSONObject data = root.optJSONObject("data"); JSONArray array = data.optJSONArray("list"); Type type = new TypeToken<List<DaTaoKeListTopOffDTO>>() { }.getType(); List<DaTaoKeListTopOffDTO> resultList = new Gson().fromJson(array.toString(), type); return new DaTaoKeResult(data.optLong("totalNum"), data.optString("pageId"), resultList); } /** * 解析淘口令 @@ -870,4 +912,10 @@ } return null; } public static void main(String[] args) { DaTaoKeResult result = listTipOff(4, null, 20); System.out.println(result); } } fanli/error.log.2021-04-08
fanli/error.log.2021-05-10
File was deleted fanli/error.log.2021-05-12
File was deleted fanli/error.log.2021-05-14
File was deleted fanli/pom.xml
@@ -212,7 +212,7 @@ <dependency> <groupId>com.ks</groupId> <artifactId>facade-vip</artifactId> <version>0.0.6</version> <version>0.1.3</version> </dependency> <dependency> fanli/src/main/java/com/yeshi/fanli/controller/AlipayController.java
New file @@ -0,0 +1,92 @@ package com.yeshi.fanli.controller; import com.alipay.api.AlipayApiException; import com.alipay.api.internal.util.AlipaySignature; import com.ks.vip.pojo.DO.VipOrder; import com.yeshi.fanli.entity.bus.user.UserActiveLog; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserInfoModifyRecord.ModifyTypeEnum; import com.yeshi.fanli.entity.taobao.TaoBaoUnionAuthRecord; import com.yeshi.fanli.exception.taobao.TaoBaoAuthException; import com.yeshi.fanli.exception.user.UserExtraTaoBaoInfoException; import com.yeshi.fanli.lijin.manager.UserLijinMnager; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.log.LogManager; import com.yeshi.fanli.log.LogType; import com.yeshi.fanli.service.inter.user.UserActiveLogService; import com.yeshi.fanli.service.inter.user.UserInfoModifyRecordService; import com.yeshi.fanli.service.inter.user.msg.UserAccountMsgNotificationService; import com.yeshi.fanli.service.inter.user.tb.TaoBaoUnionAuthRecordService; import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; import com.yeshi.fanli.util.*; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import org.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * 授权回调 * * @author Administrator */ @Controller @RequestMapping("alipay") public class AlipayController { @Resource private UserLijinMnager userLijinMnager; @RequestMapping("printPayForm") public void printPayForm(String formId, HttpServletResponse response) { String form = userLijinMnager.getAlipayPayForm(formId); if (StringUtil.isNullOrEmpty(form)) { form = "出错了,请稍后再试"; } response.setContentType("text/html;charset=GBK"); try { response.getWriter().write(form);//直接将完整的表单html输出到页面 response.getWriter().flush(); response.getWriter().close(); } catch (IOException e) { e.printStackTrace(); } } @RequestMapping("pay/lijinvip") public void pay(HttpServletRequest request, HttpServletResponse response) throws Exception { try { request.setCharacterEncoding("GBK"); response.setCharacterEncoding("GBK"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } Map<String, String[]> params = request.getParameterMap(); Map<String, String> map = new HashMap<>(); for (Iterator<String> its = params.keySet().iterator(); its.hasNext(); ) { String key = its.next(); map.put(key, params.get(key)[0]); } String outOrderNo = userLijinMnager.getAlipayPaySuccessOutOrderNo(map); VipOrder vipOrder = userLijinMnager.selectVipOrderByThreeOrderId(outOrderNo); if (vipOrder != null) userLijinMnager.checkPay(vipOrder.getId()); response.getWriter().print("success"); response.getWriter().close(); } } fanli/src/main/java/com/yeshi/fanli/controller/WXController.java
New file @@ -0,0 +1,85 @@ package com.yeshi.fanli.controller; import com.ks.vip.pojo.DO.VipOrder; import com.yeshi.fanli.lijin.manager.UserLijinMnager; import net.sf.json.JSONObject; import org.apache.commons.io.IOUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.yeshi.utils.StringUtil; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @RequestMapping("wx") public class WXController { @Resource private UserLijinMnager userLijinMnager; /** * 处理通知结果 * * @param request * @throws Exception */ private void process(HttpServletRequest request) throws Exception { //验证证书序列号 String mchSerialNo = request.getHeader("Wechatpay-Serial"); String timeStamp = request.getHeader("Wechatpay-Timestamp"); String nonce = request.getHeader("Wechatpay-Nonce"); String signature = request.getHeader("Wechatpay-Signature"); String data = null; try { if (request.getInputStream() != null) { String entity = IOUtils.toString(request.getInputStream(), "UTF-8"); data = entity; } } catch (IOException e) { e.printStackTrace(); } if (StringUtil.isNullOrEmpty(data)) { throw new Exception("通知的内容为空"); } String outOrderNo = userLijinMnager.getWXPaySuccessOutOrderNo(data); VipOrder vipOrder = userLijinMnager.selectVipOrderByThreeOrderId(outOrderNo); if (vipOrder != null) { userLijinMnager.checkPay(vipOrder.getId()); } } /** * 微信支付结果通知 * * @param request * @param response */ @RequestMapping("pay/lijinvip") public void vipPay(HttpServletRequest request, HttpServletResponse response) throws IOException { try { process(request); JSONObject data = new JSONObject(); data.put("code", "SUCCESS"); data.put("message", "处理成功"); response.sendError(200, data.toString()); } catch (Exception e) { e.printStackTrace(); JSONObject data = new JSONObject(); data.put("code", "FAIL"); data.put("message", e.getMessage()); response.sendError(500, data.toString()); } } } fanli/src/main/java/com/yeshi/fanli/controller/client/lijin/UserControllerLijin.java
@@ -4,7 +4,10 @@ import com.ks.vip.pojo.DO.VipCenter; import com.ks.vip.pojo.DO.VipCenterRecord; import com.ks.vip.pojo.DO.VipCombo; import com.ks.vip.pojo.DO.VipOrder; import com.ks.vip.pojo.DTO.PayWayInfoDTO; import com.ks.vip.pojo.Enums.OrderTypeEnum; import com.ks.vip.pojo.Enums.PayWayEnum; import com.ks.vip.pojo.Enums.VIPEnum; import com.ks.vip.service.VipComboService; import com.yeshi.fanli.entity.accept.AcceptData; @@ -21,13 +24,12 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.MoneyBigDecimalUtil; import org.yeshi.utils.TimeUtil; import org.yeshi.utils.*; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.PrintWriter; import java.math.BigDecimal; import java.util.ArrayList; @@ -214,8 +216,10 @@ name += "-年卡"; } else if (hour > 24 * 31) { name += "-季卡"; } else if (hour > 24) { } else if (hour > 24 * 7) { name += "-月卡"; } else if (hour > 24) { name += "-周卡"; } else if (hour == 24) { name += "-1天"; } else { @@ -231,4 +235,59 @@ out.print(JsonUtil.loadTrueResult(data)); } /** * 创建VIP订单 * * @param acceptData * @param uid * @param id * @param payWay 1-支付宝 2-微信 * @param out */ @RequestMapping("createVIPOrder") public void createVIPOrder(AcceptData acceptData, Long uid, Long id, int payWay, HttpServletRequest request, PrintWriter out) { try { PayWayInfoDTO payWayInfoDTO = userLijinMnager.createVIPOrder(uid, id, payWay == 1 ? PayWayEnum.alipay : PayWayEnum.weChat, IPUtil.getRemotIP(request)); JSONObject data = new JSONObject(); if (payWayInfoDTO.getPayWay() == PayWayEnum.alipay) { data.put("url", "http://api.tejia.yeshitv.com/fanli/alipay/printPayForm?formId=" + payWayInfoDTO.getAlipayFormId()); } else { data.put("url", payWayInfoDTO.getPayUrl()); } out.print(JsonUtil.loadTrueResult(data)); } catch (VipOrderException e) { e.printStackTrace(); out.print(JsonUtil.loadFalseResult(e.getCode(), "创建订单出错")); } } @RequestMapping("checkVIPOrderPay") public void checkPayResult(AcceptData acceptData, String id, PrintWriter out) { if (id == null || !NumberUtil.isNumeric(id)) { out.print(JsonUtil.loadFalseResult("id格式有误")); return; } VipOrder vipOrder = userLijinMnager.checkPay(Long.parseLong(id)); if (vipOrder == null) { out.print(JsonUtil.loadFalseResult("订单不存在")); return; } if (vipOrder.getState() == VipOrder.STATE_PAY) { //支付成功 JSONObject data = new JSONObject(); data.put("money", vipOrder.getPayMoney()); out.print(JsonUtil.loadTrueResult(data)); } else { //支付失败 out.print(JsonUtil.loadFalseResult("订单尚未支付成功")); } } } fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
@@ -25,6 +25,7 @@ import com.yeshi.fanli.service.manger.goods.TaoBaoLinkManager; import com.yeshi.fanli.util.*; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.goods.GoodsTextUtil; import org.apache.commons.beanutils.PropertyUtils; import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Controller; @@ -1102,6 +1103,18 @@ } String newText = text; // 非通用券需要验证 //特价只需要复制文字,不需要转链 if (acceptData.getSystem() == SystemEnum.yhqjx) { newText = GoodsTextUtil.decodeAppHtmlText(newText); //只复制文字 JSONObject data = new JSONObject(); data.put("text", newText); out.print(JsonUtil.loadTrueResult(data)); return; } if (comment != null && (comment.getNeedSpin() == null || comment.getNeedSpin())) { try { newText = convertLinkManager.convertLinkFromText(acceptData.getSystem(), text, uid, true, true); fanli/src/main/java/com/yeshi/fanli/controller/client/v2/LostOrderControllerV2.java
@@ -21,101 +21,103 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.PrintWriter; import java.util.HashSet; import java.util.List; import java.util.Set; /** * 动态 * * @author Administrator * * @author Administrator */ @Controller @RequestMapping("api/v2/lostOrder") public class LostOrderControllerV2 { @Resource private LostOrderService lostOrderService; @Resource private LostOrderService lostOrderService; @Resource private ConfigService configService; @Resource private ConfigService configService; @RequestMapping("findLostOrder") public void findLostOrder(AcceptData acceptData, LostOrder lostOrder, HttpServletRequest request, PrintWriter out) { Integer type = lostOrder.getType(); if (type == null) { type = Constant.SOURCE_TYPE_TAOBAO; } @RequestMapping("findLostOrder") public void findLostOrder(AcceptData acceptData, LostOrder lostOrder, HttpServletRequest request, PrintWriter out) { Integer type = lostOrder.getType(); if (type == null) { type = Constant.SOURCE_TYPE_TAOBAO; } boolean orderNum = true; String orderId = lostOrder.getOrderId(); if (type == Constant.SOURCE_TYPE_TAOBAO) { if (!NumberUtil.isNumeric(orderId) || (orderId.length() < 12 || orderId.length() > 20)) { orderNum = false; } else { orderNum = Utils.isOrderNum(orderId); } } else if (type == Constant.SOURCE_TYPE_JD) { if (!NumberUtil.isNumeric(orderId) || (orderId.length() < 6 || orderId.length() > 20)) { orderNum = false; } } else if (type == Constant.SOURCE_TYPE_PDD) { if (!orderId.contains("-")) { orderNum = false; } else { String[] split = orderId.split("-"); if (split == null || split.length != 2) { orderNum = false; } else { if (!NumberUtil.isNumeric(split[0]) || !NumberUtil.isNumeric(split[1])) { orderNum = false; } } } } else if (type == Constant.SOURCE_TYPE_VIP) { if (!NumberUtil.isNumeric(orderId) || (orderId.length() < 10 || orderId.length() > 18)) { orderNum = false; } } else if (type == Constant.SOURCE_TYPE_SUNING) { if (!NumberUtil.isNumeric(orderId) || (orderId.length() < 10 || orderId.length() > 15)) { orderNum = false; } } boolean orderNum = true; String orderId = lostOrder.getOrderId(); if (type == Constant.SOURCE_TYPE_TAOBAO) { if (!NumberUtil.isNumeric(orderId) || (orderId.length() < 12 || orderId.length() > 20)) { orderNum = false; } else { orderNum = Utils.isOrderNum(orderId); } } else if (type == Constant.SOURCE_TYPE_JD) { if (!NumberUtil.isNumeric(orderId) || (orderId.length() < 6 || orderId.length() > 20)) { orderNum = false; } } else if (type == Constant.SOURCE_TYPE_PDD) { if (!orderId.contains("-")) { orderNum = false; } else { String[] split = orderId.split("-"); if (split == null || split.length != 2) { orderNum = false; } else { if (!NumberUtil.isNumeric(split[0]) || !NumberUtil.isNumeric(split[1])) { orderNum = false; } } } } else if (type == Constant.SOURCE_TYPE_VIP) { if (!NumberUtil.isNumeric(orderId) || (orderId.length() < 10 || orderId.length() > 18)) { orderNum = false; } } else if (type == Constant.SOURCE_TYPE_SUNING) { if (!NumberUtil.isNumeric(orderId) || (orderId.length() < 10 || orderId.length() > 15)) { orderNum = false; } } if (lostOrder.getUserInfo() == null || lostOrder.getUserInfo().getId() == null || lostOrder.getUserInfo().getId() <= 0) { out.print(JsonUtil.loadFalseResult(1, String.format("请登录%s账号", Constant.getAppName(acceptData.getPlatform(), acceptData.getVersion())))); return; } lostOrder.setIpInfo(IPUtil.getRemotIP(request) + ":" + request.getRemotePort()); int state; String stateInfo = "提交成功,请等待审核结果"; if (!orderNum) { state = -4; stateInfo = "请提交准确的订单号"; } else { lostOrder.setResultCode(LostOrder.RESULT_CODE_VERFING); state = lostOrderService.addLostOrder(lostOrder); if (state == -3) { stateInfo = "该订单已被统计,无需申诉"; } else if (state == -2) { stateInfo = "请勿重复提交,该订单正在审核中"; } else if (state == -1) { stateInfo = "该订单申诉已通过,请在订单列表中查看"; } else if (state == -5) { stateInfo = "分享奖金订单无需申诉"; } else if (state == -6) { stateInfo = "该订单申诉已失败,请在订单列表中查看"; } else if (state == -7) { stateInfo = "今日申诉次数已达上限"; } else if (state == -1001) { stateInfo = "订单违规"; } } JSONObject data = new JSONObject(); data.put("state", state); data.put("info", stateInfo); out.print(JsonUtil.loadTrueResult(data)); } if (lostOrder.getUserInfo() == null || lostOrder.getUserInfo().getId() == null || lostOrder.getUserInfo().getId() <= 0) { out.print(JsonUtil.loadFalseResult(1, String.format("请登录%s账号", Constant.getAppName(acceptData.getPlatform(), acceptData.getVersion())))); return; } lostOrder.setIpInfo(IPUtil.getRemotIP(request) + ":" + request.getRemotePort()); int state; String stateInfo = "提交成功,请等待审核结果"; if (!orderNum) { state = -4; stateInfo = "请提交准确的订单号"; } else { lostOrder.setResultCode(LostOrder.RESULT_CODE_VERFING); state = lostOrderService.addLostOrder(lostOrder); if (state == -3) { stateInfo = "该订单已被统计,无需申诉"; } else if (state == -2) { stateInfo = "请勿重复提交,该订单正在审核中"; } else if (state == -1) { stateInfo = "该订单申诉已通过,请在订单列表中查看"; } else if (state == -5) { stateInfo = "分享奖金订单无需申诉"; } else if (state == -6) { stateInfo = "该订单申诉已失败,请在订单列表中查看"; } else if (state == -7) { stateInfo = "今日申诉次数已达上限"; } else if (state == -1001) { stateInfo = "订单违规"; } } JSONObject data = new JSONObject(); data.put("state", state); data.put("info", stateInfo); out.print(JsonUtil.loadTrueResult(data)); } } fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java
@@ -928,7 +928,7 @@ // AESUtil.encrypt(uid + "", Constant.UIDAESKEY), // goodsId + ""); String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goods.getGoodsSign(), pid, uid + ""); String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goods.getGoodsSign(), pid, pddAuthService.getFanliCustomParams(uid) + ""); SystemEnum system = SystemInfoUtil.getSystem(acceptData); fanli/src/main/java/com/yeshi/fanli/dao/dynamic/GoodsEvaluateDao.java
@@ -23,423 +23,455 @@ @Repository public class GoodsEvaluateDao { @Resource private MongoTemplate mongoTemplate; @Resource private MongoTemplate mongoTemplate; /** * 新增 * * @param record */ public void save(GoodsEvaluate record) { if (record == null) { return; } mongoTemplate.save(record); } /** * 状态切换 * @param id * @param state */ public void updateSatate(String id, int state) { Query query = new Query(); query.addCriteria(Criteria.where("id").is(id)); Update update = Update.update("state", state); mongoTemplate.updateMulti(query, update, GoodsEvaluate.class); } /** * 删除 * @param record */ public void remove(GoodsEvaluate record) { if (record == null) { return; } mongoTemplate.remove(record); } /** * 根据id查询数据 * * @param id * @return */ public GoodsEvaluate getById(String id) { Query query = new Query(); query.addCriteria(Criteria.where("id").is(id)); return mongoTemplate.findOne(query, GoodsEvaluate.class); } /** * 删除 * * @param id * @return */ public void deleteById(String id) { GoodsEvaluate info = getById(id); if (info == null) { return; } mongoTemplate.remove(info); } /** * 查询 * * @return */ public List<GoodsEvaluate> query(int start, int count, String key, Integer state, int dynamicType, String typeEnum, SystemEnum system) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(dynamicType)); if (state != null) { list.add(Criteria.where("state").is(state)); } if (!StringUtil.isNullOrEmpty(typeEnum)) list.add(Criteria.where("type").is(typeEnum)); if(system!=null) list.add(Criteria.where("system").is(system)); if (!StringUtil.isNullOrEmpty(key)) list.add(new Criteria().orOperator( Criteria.where("title").regex(Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE)))); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } query.skip(start).limit(count); query.with(new Sort(Sort.Direction.DESC,"weight")).with(new Sort(Sort.Direction.DESC,"createTime")); return mongoTemplate.find(query, GoodsEvaluate.class); } public long count(String key, Integer state, int dynamicType, String typeEnum, SystemEnum system) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(dynamicType)); if (state != null) { list.add(Criteria.where("state").is(state)); } if(system!=null) list.add(Criteria.where("system").is(system)); if (!StringUtil.isNullOrEmpty(typeEnum)) list.add(Criteria.where("type").is(typeEnum)); if (!StringUtil.isNullOrEmpty(key)) list.add(new Criteria().orOperator( Criteria.where("title").regex(Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE)))); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.count(query, GoodsEvaluate.class); } /** * 查询有效 * @param start * @param count * @return */ public List<GoodsEvaluate> queryValid(int start, int count, int dynamicType,SystemEnum system) { Date now = new Date(); Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(dynamicType)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("startTime").lte(now)); list.add(Criteria.where("endTime").gte(now)); if(system!=null) list.add(Criteria.where("system").is(system)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } query.skip(start).limit(count); query.with(new Sort(Sort.Direction.DESC,"weight")).with(new Sort(Sort.Direction.DESC,"startTime")); return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 统计有效 * @return */ public long countValid(int dynamicType,SystemEnum system) { Date now = new Date(); Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(dynamicType)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("startTime").lte(now)); list.add(Criteria.where("endTime").gte(now)); if(system!=null) list.add(Criteria.where("system").is(system)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.count(query, GoodsEvaluate.class); } /** * 查询有效 * @return */ public List<GoodsEvaluate> querySingleExist(SystemEnum system) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("goods.goodsType").is(1)); if(system!=null) list.add(Criteria.where("system").is(system)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 查询有效 * @param goodsType * @param goodsId * @param system * @return */ public List<GoodsEvaluate> queryExist(int goodsType, String goodsId,SystemEnum system) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); if(system!=null) list.add(Criteria.where("system").is(system)); list.add(Criteria.where("imgList.goods.goodsId").is(goodsId)); list.add(Criteria.where("imgList.goods.goodsType").is(goodsType)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 查询有效 * @return */ public List<GoodsEvaluate> queryExistSingle(int goodsType, String goodsId,SystemEnum system) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("type").is("single")); if(system!=null) list.add(Criteria.where("system").is(system)); list.add(Criteria.where("imgList.goods.goodsId").is(goodsId)); list.add(Criteria.where("imgList.goods.goodsType").is(goodsType)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 查询有效 * @return */ public List<GoodsEvaluate> queryOverdue() { Date now = new Date(); Query query = new Query(); query.addCriteria(Criteria.where("endTime").lte(now)); query.with(new Sort(Sort.Direction.ASC,"createTime")); return mongoTemplate.find(query, GoodsEvaluate.class); } /** * @return */ public List<GoodsEvaluate> removeDownGoods() { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("type").is("single")); list.add(Criteria.where("goods.state").is(1)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 根据起始时间查询 * @param date * @return */ public List<GoodsEvaluate> listByStartTime(Date date) { List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("startTime").gt(date)); list.add(Criteria.where("startTime").lte(new Date())); list.add(new Criteria().orOperator(Criteria.where("type").is("single"), new Criteria().andOperator(Criteria.where("type").is("activity")))); Query query = new Query(); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } query.with(new Sort(Sort.Direction.DESC,"startTime")); return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 查询有效-倒序 * @param start * @param count * @return */ public List<GoodsEvaluate> queryValidSortASC(int start, int count, EvaluateEnum tyepEnum, boolean sortDesc) { Date now = new Date(); Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("type").is(tyepEnum.name())); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("startTime").lte(now)); list.add(Criteria.where("endTime").gte(now)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } query.skip(start).limit(count); if (sortDesc) { query.with(new Sort(Sort.Direction.DESC,"startTime")); } else { query.with(new Sort(Sort.Direction.ASC,"startTime")); /** * 新增 * * @param record */ public void save(GoodsEvaluate record) { if (record == null) { return; } return mongoTemplate.find(query, GoodsEvaluate.class); } mongoTemplate.save(record); } /** * 状态切换 * * @param id * @param state */ public void updateSatate(String id, int state) { Query query = new Query(); query.addCriteria(Criteria.where("id").is(id)); Update update = Update.update("state", state); mongoTemplate.updateMulti(query, update, GoodsEvaluate.class); } /** * * @param goodsType * @param goodsId * @param limitTime * @return */ public List<GoodsEvaluate> queryExistLimitTime(int goodsType, String goodsId, Date limitTime) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("goods.goodsId").is(goodsId)); list.add(Criteria.where("goods.goodsType").is(goodsType)); // 限制时间内 list.add(Criteria.where("startTime").gte(limitTime)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.find(query, GoodsEvaluate.class); } public List<GoodsEvaluate> queryValidZeroPoint(int start, int count) { // 今日22点发圈 :0点下单 Date now = new Date(); Date startTime = TimeUtil.parseYYYYMMDD_HHMM(TimeUtil.getGernalTime(now) + " 22:00"); Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("zeroPoint").is(1)); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("startTime").is(startTime)); list.add(new Criteria().orOperator(Criteria.where("type").is("single"), new Criteria().andOperator(Criteria.where("type").is("activity")))); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } /** * 删除 * * @param record */ public void remove(GoodsEvaluate record) { if (record == null) { return; } mongoTemplate.remove(record); } /** * 根据id查询数据 * * @param id * @return */ public GoodsEvaluate getById(String id) { Query query = new Query(); query.addCriteria(Criteria.where("id").is(id)); return mongoTemplate.findOne(query, GoodsEvaluate.class); } /** * 删除 * * @param id * @return */ public void deleteById(String id) { GoodsEvaluate info = getById(id); if (info == null) { return; } mongoTemplate.remove(info); } /** * 查询 * * @return */ public List<GoodsEvaluate> query(int start, int count, String key, Integer state, int dynamicType, String typeEnum, SystemEnum system) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(dynamicType)); if (state != null) { list.add(Criteria.where("state").is(state)); } if (!StringUtil.isNullOrEmpty(typeEnum)) list.add(Criteria.where("type").is(typeEnum)); if (system != null) list.add(Criteria.where("system").is(system)); if (!StringUtil.isNullOrEmpty(key)) list.add(new Criteria().orOperator( Criteria.where("title").regex(Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE)))); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } query.skip(start).limit(count); return mongoTemplate.find(query, GoodsEvaluate.class); } query.with(new Sort(Sort.Direction.DESC, "weight")).with(new Sort(Sort.Direction.DESC, "createTime")); return mongoTemplate.find(query, GoodsEvaluate.class); } public long count(String key, Integer state, int dynamicType, String typeEnum, SystemEnum system) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(dynamicType)); if (state != null) { list.add(Criteria.where("state").is(state)); } if (system != null) list.add(Criteria.where("system").is(system)); if (!StringUtil.isNullOrEmpty(typeEnum)) list.add(Criteria.where("type").is(typeEnum)); if (!StringUtil.isNullOrEmpty(key)) list.add(new Criteria().orOperator( Criteria.where("title").regex(Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE)))); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.count(query, GoodsEvaluate.class); } /** * 查询有效 * * @param start * @param count * @return */ public List<GoodsEvaluate> queryValid(int start, int count, int dynamicType, SystemEnum system) { Date now = new Date(); Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(dynamicType)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("startTime").lte(now)); list.add(Criteria.where("endTime").gte(now)); if (system != null) list.add(Criteria.where("system").is(system)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } query.skip(start).limit(count); query.with(new Sort(Sort.Direction.DESC, "weight")).with(new Sort(Sort.Direction.DESC, "startTime")); return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 统计有效 * * @return */ public long countValid(int dynamicType, SystemEnum system) { Date now = new Date(); Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(dynamicType)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("startTime").lte(now)); list.add(Criteria.where("endTime").gte(now)); if (system != null) list.add(Criteria.where("system").is(system)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.count(query, GoodsEvaluate.class); } /** * 查询有效 * * @return */ public List<GoodsEvaluate> querySingleExist(SystemEnum system) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("goods.goodsType").is(1)); if (system != null) list.add(Criteria.where("system").is(system)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 查询有效 * * @param goodsType * @param goodsId * @param system * @return */ public List<GoodsEvaluate> queryExist(int goodsType, String goodsId, SystemEnum system) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); if (system != null) list.add(Criteria.where("system").is(system)); list.add(Criteria.where("imgList.goods.goodsId").is(goodsId)); list.add(Criteria.where("imgList.goods.goodsType").is(goodsType)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 查询有效 * * @return */ public List<GoodsEvaluate> queryExistSingle(int goodsType, String goodsId, SystemEnum system) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("type").is("single")); if (system != null) list.add(Criteria.where("system").is(system)); list.add(Criteria.where("imgList.goods.goodsId").is(goodsId)); list.add(Criteria.where("imgList.goods.goodsType").is(goodsType)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 查询有效 * * @return */ public List<GoodsEvaluate> queryOverdue() { Date now = new Date(); Query query = new Query(); query.addCriteria(Criteria.where("endTime").lte(now)); query.with(new Sort(Sort.Direction.ASC, "createTime")); return mongoTemplate.find(query, GoodsEvaluate.class); } /** * @return */ public List<GoodsEvaluate> removeDownGoods() { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("type").is("single")); list.add(Criteria.where("goods.state").is(1)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 根据起始时间查询 * * @param date * @return */ public List<GoodsEvaluate> listByStartTime(Date date) { List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("startTime").gt(date)); list.add(Criteria.where("startTime").lte(new Date())); list.add(new Criteria().orOperator(Criteria.where("type").is("single"), new Criteria().andOperator(Criteria.where("type").is("activity")))); Query query = new Query(); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } query.with(new Sort(Sort.Direction.DESC, "startTime")); return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 查询有效-倒序 * * @param start * @param count * @return */ public List<GoodsEvaluate> queryValidSortASC(int start, int count, EvaluateEnum tyepEnum, boolean sortDesc) { Date now = new Date(); Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("type").is(tyepEnum.name())); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("startTime").lte(now)); list.add(Criteria.where("endTime").gte(now)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } query.skip(start).limit(count); if (sortDesc) { query.with(new Sort(Sort.Direction.DESC, "startTime")); } else { query.with(new Sort(Sort.Direction.ASC, "startTime")); } return mongoTemplate.find(query, GoodsEvaluate.class); } /** * @param goodsType * @param goodsId * @param limitTime * @return */ public List<GoodsEvaluate> queryExistLimitTime(int goodsType, String goodsId, Date limitTime) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("goods.goodsId").is(goodsId)); list.add(Criteria.where("goods.goodsType").is(goodsType)); // 限制时间内 list.add(Criteria.where("startTime").gte(limitTime)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.find(query, GoodsEvaluate.class); } /** * 查询已经存在的数据 * * @param identifyCode * @param limitTime * @return */ public GoodsEvaluate selectExistLimitTime(String identifyCode, Date limitTime) { Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("identifyCode").is(identifyCode)); // 限制时间内 list.add(Criteria.where("startTime").gte(limitTime)); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } return mongoTemplate.findOne(query, GoodsEvaluate.class); } public List<GoodsEvaluate> queryValidZeroPoint(int start, int count) { // 今日22点发圈 :0点下单 Date now = new Date(); Date startTime = TimeUtil.parseYYYYMMDD_HHMM(TimeUtil.getGernalTime(now) + " 22:00"); Query query = new Query(); List<Criteria> list = new ArrayList<Criteria>(); list.add(Criteria.where("zeroPoint").is(1)); list.add(Criteria.where("dynamicType").is(1)); list.add(Criteria.where("state").is(1)); list.add(Criteria.where("startTime").is(startTime)); list.add(new Criteria().orOperator(Criteria.where("type").is("single"), new Criteria().andOperator(Criteria.where("type").is("activity")))); if (list.size() > 0) { Criteria[] cas = new Criteria[list.size()]; for (int i = 0; i < list.size(); i++) cas[i] = list.get(i); query.addCriteria(new Criteria().andOperator(cas)); } query.skip(start).limit(count); return mongoTemplate.find(query, GoodsEvaluate.class); } } fanli/src/main/java/com/yeshi/fanli/entity/dynamic/GoodsEvaluate.java
@@ -45,6 +45,10 @@ } } //唯一标识 @Field private String identifyCode; @Id @Expose @Field("_id") @@ -346,4 +350,11 @@ this.zeroPoint = zeroPoint; } public String getIdentifyCode() { return identifyCode; } public void setIdentifyCode(String identifyCode) { this.identifyCode = identifyCode; } } fanli/src/main/java/com/yeshi/fanli/job/DynamicInfoJob.java
@@ -10,7 +10,11 @@ import com.yeshi.fanli.entity.SystemEnum; import com.yeshi.fanli.entity.SystemFunction; import com.yeshi.fanli.service.manger.goods.tb.DaTaoKeTipOffManager; import com.yeshi.fanli.util.SystemInfoUtil; import com.yeshi.fanli.util.taobao.DaTaoKeTipOffUtil; import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeListTopOffDTO; import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeResult; import org.apache.commons.lang.StringEscapeUtils; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -534,4 +538,34 @@ return addResult; } @XxlJob("dynamic-tejia-updateBetterGoods") public ReturnT<String> updateTejiaBetterGoods(String param) throws Exception { addDTKTipOffList(SystemEnum.yhqjx); return ReturnT.SUCCESS; } /** * 大淘客线报 * * @param system * @return */ private void addDTKTipOffList(SystemEnum system) { DaTaoKeResult result = DaTaoKeApiUtil.listTipOff(4, null, 50); if (result != null) { List<DaTaoKeListTopOffDTO> list = (List<DaTaoKeListTopOffDTO>) result.getList(); for (DaTaoKeListTopOffDTO dto : list) { try { List<ActivityRuleUser> ruleList = activityUserService .listByRuleCode(ActivityRuleUser.RULE_HAOHUO, 1, 20); ActivityUser user = ruleList.get((int) (ruleList.size() * Math.random())).getActivityUser(); goodsEvaluateService.addGoodsEvaluate(dto, user, system); } catch (Exception e) { e.printStackTrace(); } } } } } fanli/src/main/java/com/yeshi/fanli/lijin/manager/UserLijinMnager.java
@@ -5,6 +5,9 @@ import com.ks.lijin.service.LijinCreateService; import com.ks.vip.exception.VipOrderException; import com.ks.vip.pojo.DO.*; import com.ks.vip.pojo.DTO.PayWayInfoDTO; import com.ks.vip.pojo.DTO.VipOrderDTO; import com.ks.vip.pojo.Enums.PayWayEnum; import com.ks.vip.pojo.Enums.VIPEnum; import com.ks.vip.service.*; import com.yeshi.fanli.entity.SystemEnum; @@ -14,11 +17,13 @@ import com.yeshi.fanli.service.inter.config.ConfigService; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Component; import org.yeshi.utils.TimeUtil; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; @Component public class UserLijinMnager { @@ -50,6 +55,9 @@ @Reference(version = "1.0", check = false) private VipOrederService vipOrederService; @Reference(version = "1.0", check = false) private VipOrederPayService vipOrederPayService; @Resource private ConfigService configService; @@ -198,5 +206,76 @@ return potence.getRebatePercent(); } /** * 创建订单 * * @param uid * @param cid * @param payWay * @return */ public PayWayInfoDTO createVIPOrder(Long uid, Long cid, PayWayEnum payWay, String ip) throws VipOrderException { VipCombo vipCombo = vipComboService.selectByPrimaryKey(cid); if (vipCombo == null) { throw new VipOrderException(1, "套餐为空"); } String notifuUrl = "http://api.tejia.yeshitv.com/fanli/alipay/pay/lijinvip"; String resturnUrl = "http://vip.tejia.yeshitv.com/pay_success.html"; if (payWay == PayWayEnum.weChat) { resturnUrl = "http://vip.tejia.yeshitv.com/pay_finish.html"; notifuUrl = "http://api.tejia.yeshitv.com/fanli/wx/pay/lijinvip"; } VipOrderDTO dto = new VipOrderDTO(); dto.setUid(getUid(uid)); dto.setComboId(cid); dto.setPayAccount(null); dto.setPayMoney(vipCombo.getDiscountPrice()); dto.setPayWay(payWay); dto.setThreeOrderId("tejia-vip-" + uid + "-" + TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMddHHmmssSSS")); return vipOrederPayService.addOrderWithPay(dto, notifuUrl, resturnUrl, ip); } /** * 获取支付宝的支付表单 * * @param formId * @return */ public String getAlipayPayForm(String formId) { return vipOrederPayService.getAlipayForm(formId); } /** * 检查是否支付 * * @param id * @return */ public VipOrder checkPay(Long id) { return vipOrederPayService.checkOrderPayState(id); } /** * 根据三方支付订单ID查询 * * @param threeOrderId * @return */ public VipOrder selectVipOrderByThreeOrderId(String threeOrderId) { return vipOrederService.selectByThreeOrderId(threeOrderId); } public String getWXPaySuccessOutOrderNo(String notifyContent) throws Exception { return vipOrederPayService.getWXPaySuccessOutOrderNo(notifyContent); } public String getAlipayPaySuccessOutOrderNo(Map<String, String> params) throws Exception { return vipOrederPayService.getAlipayPaySuccessOutOrderNo(params); } } fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -1,47 +1,15 @@ package com.yeshi.fanli.service.impl.dynamic; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.UUID; import javax.annotation.Resource; import javax.imageio.ImageIO; import com.yeshi.fanli.entity.SystemEnum; import com.yeshi.fanli.entity.SystemFunction; import com.yeshi.fanli.entity.SystemPIDInfo; import com.yeshi.fanli.exception.taobao.TaoBaoConvertLinkException; import com.yeshi.fanli.service.manger.PIDManager; import com.yeshi.fanli.service.manger.goods.TaoBaoLinkManager; import com.yeshi.fanli.util.*; import com.yeshi.fanli.util.FileUtil; import com.yeshi.fanli.util.StringUtil; import org.apache.commons.beanutils.PropertyUtils; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.yeshi.utils.*; import org.yeshi.utils.tencentcloud.COSManager; import com.yeshi.common.vo.ClientTextStyleVO; import com.yeshi.fanli.dao.dynamic.GoodsEvaluateDao; import com.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO; import com.yeshi.fanli.dto.jd.JDCouponInfo; import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; import com.yeshi.fanli.dto.suning.SuningGoodsInfo; import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo; import com.yeshi.fanli.entity.SystemEnum; import com.yeshi.fanli.entity.SystemFunction; import com.yeshi.fanli.entity.SystemPIDInfo; import com.yeshi.fanli.entity.bus.activity.ActivityRuleUser; import com.yeshi.fanli.entity.bus.activity.ActivityUser; import com.yeshi.fanli.entity.bus.clazz.GoodsClass; @@ -54,13 +22,13 @@ import com.yeshi.fanli.entity.dynamic.SimpleGoods; import com.yeshi.fanli.entity.jd.JDGoods; import com.yeshi.fanli.entity.system.ConfigKeyEnum; import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.TaoBaoLink; import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2; import com.yeshi.fanli.exception.dynamic.ActivityUserException; import com.yeshi.fanli.exception.dynamic.GoodsEvaluateException; import com.yeshi.fanli.exception.goods.ConvertLinkExceptionException; import com.yeshi.fanli.exception.taobao.TaoBaoConvertLinkException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.lijin.manager.GoodsLijinMnager; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.activity.ActivityUserService; import com.yeshi.fanli.service.inter.config.ConfigService; @@ -68,20 +36,50 @@ import com.yeshi.fanli.service.inter.goods.ShareGoodsService; import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service; import com.yeshi.fanli.service.manger.PIDManager; import com.yeshi.fanli.service.manger.goods.ConvertLinkManager; import com.yeshi.fanli.service.manger.goods.TaoBaoLinkManager; import com.yeshi.fanli.service.manger.goods.tb.DaTaoKeTipOffManager; import com.yeshi.fanli.util.*; import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; import com.yeshi.fanli.util.factory.CommonGoodsFactory; import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; import com.yeshi.fanli.util.jd.JDApiUtil; import com.yeshi.fanli.util.jd.JDUtil; import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; import com.yeshi.fanli.util.taobao.DaTaoKeTipOffUtil; import com.yeshi.fanli.util.taobao.DaTaoKeUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import com.yeshi.fanli.vo.goods.CouponInfoVO; import com.yeshi.fanli.vo.goods.GoodsDetailVO; import com.yeshi.common.vo.ClientTextStyleVO; import sun.plugin2.util.SystemUtil; import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeListTopOffDTO; import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2; import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service; import org.apache.commons.beanutils.PropertyUtils; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.yeshi.utils.DateUtil; import org.yeshi.utils.ImageCropUtil; import org.yeshi.utils.MoneyBigDecimalUtil; import org.yeshi.utils.TimeUtil; import org.yeshi.utils.tencentcloud.COSManager; import javax.annotation.Resource; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; @Service public class GoodsEvaluateServiceImpl implements GoodsEvaluateService { @@ -128,6 +126,9 @@ @Resource private PIDManager pidManager; @Resource private GoodsLijinMnager goodsLijinMnager; @Override public void switchState(String id) throws GoodsEvaluateException { @@ -2280,6 +2281,149 @@ return result; } @Resource private DaTaoKeTipOffManager daTaoKeTipOffManager; @Override public int addGoodsEvaluate(DaTaoKeListTopOffDTO dto, ActivityUser user, SystemEnum system) throws GoodsEvaluateException { if (dto == null || user == null || system == null) { throw new GoodsEvaluateException(1, "相关参数不能为空"); } String title = null; try { title = daTaoKeTipOffManager.convertLinkForEvaluateWithEncode(dto, system); } catch (Exception e) { throw new GoodsEvaluateException(1, "转链出错"); } Date limitDate = DateUtil.reduceDay(new Date(), 7); String identifyCode = "dataoke-" + StringUtil.Md5(DaTaoKeTipOffUtil.getRecoomendDesc(dto)) + "-" + dto.getUpdateTime().getTime(); GoodsEvaluate evaluate = goodsEvaluateDao.selectExistLimitTime(identifyCode, limitDate); if (evaluate != null) throw new GoodsEvaluateException(1, "线报已存在"); List<String> imgs = new ArrayList<>(); if (dto.getImageList() != null && dto.getImageList().size() > 0) { imgs.addAll(dto.getImageList()); } GoodsDetailVO goods = null; //获取图片 if (dto.getIdList() != null && dto.getIdList().size() > 0) { Set<String> imgSet = new HashSet<>(); imgSet.addAll(imgs); String id = dto.getIdList().get(0); String source = dto.getSource(); switch (source) { case "tmall": case "taobao": try { TaoBaoGoodsBrief goodsBrief = TaoKeApiUtil.getSimpleGoodsInfo(Long.parseLong(id)); if (goodsBrief != null && goodsBrief.getImgList() != null) { GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); goods = GoodsDetailVOFactory.convertTaoBao(goodsBrief, params); goods = goodsLijinMnager.loadTBMoneyInfo(system, null, goodsBrief, goods); for (String img : goodsBrief.getImgList()) { if (!imgSet.contains(img) && imgs.size() < 9) { imgSet.add(img); imgs.add(img); } } } } catch (TaobaoGoodsDownException e) { e.printStackTrace(); } break; case "jd": { JDGoods jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(id)); if (jdGoods != null && jdGoods.getImageList() != null) { GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); goods = GoodsDetailVOFactory.convertJDGoods(jdGoods, params); goods = goodsLijinMnager.loadOtherMoneyInfo(system, null, CommonGoodsFactory.create(jdGoods), goods); for (String img : jdGoods.getImageList()) { if (!imgSet.contains(img) && imgs.size() < 9) { imgSet.add(img); imgs.add(img); } } } } break; case "pdd": { PDDGoodsDetail goodsDetail = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(id)); if (goodsDetail != null && goodsDetail.getGoodsGalleryUrls() != null) { GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); goods = GoodsDetailVOFactory.convertPDDGoods(goodsDetail, params); goods = goodsLijinMnager.loadOtherMoneyInfo(system, null, CommonGoodsFactory.create(goodsDetail), goods); for (String img : goodsDetail.getGoodsGalleryUrls()) { if (!imgSet.contains(img) && imgs.size() < 9) { imgSet.add(img); imgs.add(img); } } } } break; default: throw new GoodsEvaluateException(1, "不支持的source:" + source); } } // 商品图片信息 List<ImgInfo> imgList = new ArrayList<>(); for (String img : imgs) { ImgInfo imgInfo = new ImgInfo(); imgInfo.setH(1); imgInfo.setW(1); imgInfo.setLarge(false); imgInfo.setUrl(img); imgInfo.setUrlHD(img); imgInfo.setType(ImgEnum.img); imgList.add(imgInfo); } // 一行显示多少个图片 int lineNum = 3; int result = 0; int zeroPoint = 0; Date startTime = new Date(); GoodsEvaluate goodsEvaluate = new GoodsEvaluate(); goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", "")); goodsEvaluate.setUser(user); goodsEvaluate.setTitle(title); goodsEvaluate.setState(1); goodsEvaluate.setZeroPoint(zeroPoint); goodsEvaluate.setDynamicType(1); goodsEvaluate.setType(EvaluateEnum.single); goodsEvaluate.setShareNum((int) (Math.random() * 5000) + 1000); goodsEvaluate.setShareNumReal(0); goodsEvaluate.setWeight(0.0); goodsEvaluate.setStartTime(startTime); goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, startTime)); goodsEvaluate.setPublishTime(new Date()); goodsEvaluate.setCreateTime(new Date()); goodsEvaluate.setUpdateTime(new Date()); goodsEvaluate.setGoods(goods); goodsEvaluate.setLineNum(lineNum); goodsEvaluate.setImgList(imgList); goodsEvaluate.setComments(null); goodsEvaluate.setSystem(system); goodsEvaluate.setIdentifyCode(identifyCode); goodsEvaluateDao.save(goodsEvaluate); return result; } @Override public void addGoodsEvaluateByDaTaoKe(SystemEnum system) { List<Long> listId = null; fanli/src/main/java/com/yeshi/fanli/service/inter/dynamic/GoodsEvaluateService.java
@@ -4,6 +4,7 @@ import java.util.List; import com.yeshi.fanli.entity.SystemEnum; import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeListTopOffDTO; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; @@ -227,6 +228,17 @@ public int addGoodsEvaluate(TaoBaoGoodsBrief goodsBrief, List<String> imgs, ActivityUser user, String title,SystemEnum system) throws GoodsEvaluateException; /** * 添加大淘客的线报 * @param dto * @param user * @param system * @return * @throws GoodsEvaluateException */ public int addGoodsEvaluate(DaTaoKeListTopOffDTO dto, ActivityUser user, SystemEnum system) throws GoodsEvaluateException; public List<GoodsEvaluate> queryValidZeroPoint(int start, int count); } fanli/src/main/java/com/yeshi/fanli/service/manger/goods/tb/DaTaoKeTipOffManager.java
New file @@ -0,0 +1,40 @@ package com.yeshi.fanli.service.manger.goods.tb; import com.yeshi.fanli.entity.SystemEnum; import com.yeshi.fanli.service.manger.goods.ConvertLinkManager; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.goods.GoodsTextUtil; import com.yeshi.fanli.util.taobao.DaTaoKeTipOffUtil; import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeListTopOffDTO; import org.springframework.stereotype.Component; import javax.annotation.Resource; /** * 大淘客线报 */ @Component public class DaTaoKeTipOffManager { @Resource private ConvertLinkManager convertLinkManager; /** * 发圈转链 * * @param dto * @param system * @return */ public String convertLinkForEvaluateWithEncode(DaTaoKeListTopOffDTO dto, SystemEnum system) throws Exception { //获取推荐语 String data = DaTaoKeTipOffUtil.getRecoomendDesc(dto); //转链 return GoodsTextUtil.encodeAppHtmlText(convertLinkManager.convertLinkFromText(system, data, 437032L, false, true),"icon_common_emoji_link","查看详情"); } } fanli/src/main/java/com/yeshi/fanli/util/goods/GoodsTextUtil.java
New file @@ -0,0 +1,74 @@ package com.yeshi.fanli.util.goods; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import org.jsoup.Jsoup; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 商品文案 */ public class GoodsTextUtil { /** * APP内推荐语编码 * * @param content * @param linkIconPath * @param linkName * @return */ public static String encodeAppHtmlText(String content, String linkIconPath, String linkName) { //将链接替换成客户端可展示的内容 //提取链接 String result = content; String URL_REGEX = "(((http|https)://)|(www\\.))[a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6}(:[0-9]{1,4})?(/[a-zA-Z0-9\\&%_\\./-~-]*)?"; Pattern p = Pattern.compile(URL_REGEX); Matcher matcher = p.matcher(content); while (matcher.find()) { String url = matcher.group(); if (!StringUtil.isNullOrEmpty(url)) { //将链接替换成APP输出的标准模式 result = result.replace(url, String.format("<img src='%s'><a href=\"%s\">%s</a>", linkIconPath, url, linkName)); } } //提取淘口令; List<String> taoBaoTokenList = TaoBaoUtil.getTokenListFromTextWithKuoHao(result); if (taoBaoTokenList != null) for (String token : taoBaoTokenList) { //替换淘口令 result = result.replace(token, String.format("<img src='%s'><a href=\"%s\">%s</a>", linkIconPath, token, linkName)); } //替换换行符 result = result.replace("\n", "<br>"); return result; } /** * APP内推荐语反编码 * * @param decodeContent * @return */ public static String decodeAppHtmlText(String decodeContent) { //替换img标签 String result = decodeContent.replaceAll("<img[^>]*>", ""); //替换a标签 Pattern p = Pattern.compile("<a[^>]*>([^<]*)</a>"); Matcher m = p.matcher(result); while (m.find()) { String r = m.group(0); String href = Jsoup.parse(r).getElementsByTag("a").get(0).attr("href"); result = result.replace(r, href); } //替换换行符 result = result.replace("<br>", "\n"); return result; } } fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java
@@ -13,7 +13,6 @@ import java.util.List; import java.util.Map; import com.sun.istack.internal.NotNull; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; @@ -146,7 +145,7 @@ return resultJson.optJSONObject("data").optString("clickURL"); } public static String convertLinkWithSubUnionId(@NotNull String materialId, String couponUrl, String giftCouponKey, @NotNull String positionId, public static String convertLinkWithSubUnionId(String materialId, String couponUrl, String giftCouponKey, String positionId, String subUnionId) { String log = "京东转链出错:"; try { fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeTipOffUtil.java
New file @@ -0,0 +1,41 @@ package com.yeshi.fanli.util.taobao; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.goods.GoodsTextUtil; import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeListTopOffDTO; /** * 大淘客线报帮助类 */ public class DaTaoKeTipOffUtil { /** * 获取APP内的推荐语 * * @param dto * @return */ public static String getRecoomendDesc(DaTaoKeListTopOffDTO dto) { String text = dto.getOriginContent(); if (StringUtil.isNullOrEmpty(text)) { text = dto.getTitle(); if (dto.getUrlList() != null && dto.getUrlList().size() > 0) { text += "\n" + dto.getUrlList().get(0); } } return text; } public static void main(String[] args) { String st = "好价-14点 商品页准点抢20元劵\n" + "【39.9元】蒙牛 纯甄 酸牛奶 200g*24盒\n" + "https://u.jd.com/8K2aSJ1"; st = GoodsTextUtil.encodeAppHtmlText(st, "test", "查看详情"); System.out.println(st); st = GoodsTextUtil.decodeAppHtmlText(st); System.out.println(st); } }