fanli/src/main/java/com/yeshi/fanli/controller/ClientJspController.java
@@ -226,17 +226,22 @@ } @RequestMapping("findThreeFriendsCount") public void findThreeFriendsCount(long id, PrintWriter out) { public void findThreeFriendsCount(long id, String callback, PrintWriter out) { int count1 = userInfoService.findFriendsCount(id, 1); int count2 = userInfoService.findFriendsCount(id, 2); JSONObject data = new JSONObject(); data.put("count1", count1); data.put("count2", count2); if (!StringUtil.isNullOrEmpty(callback)) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); } else { out.print(JsonUtil.loadTrueResult(data)); } } @RequestMapping("findThreeFriends") public void findThreeFriends(long id, int type, int page, PrintWriter out) { public void findThreeFriends(long id, int type, int page, String callback, PrintWriter out) { int pageSize = 30; List<InviteUser> list = userInfoService.getFriendsList(id, type, page, pageSize); JSONArray array = new JSONArray(); @@ -251,8 +256,12 @@ JSONObject data = new JSONObject(); data.put("list", array); data.put("pages", count % pageSize == 0 ? count / pageSize : count / pageSize + 1); if (!StringUtil.isNullOrEmpty(callback)) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); } else { out.print(JsonUtil.loadTrueResult(data)); } } @RequestMapping("findThreeSales") public void findThreeSales(long id, PrintWriter out) { fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java
@@ -456,9 +456,7 @@ data.put("inviteList", String.format("http://%s/%s/client/share/friends_new_online.html", Constant.systemCommonConfig.getProjectHost(), Constant.systemCommonConfig.getProjectName())); else data.put("inviteList", String.format("http://%s/%s/client/share/friends_new.html", Constant.systemCommonConfig.getProjectHost(), Constant.systemCommonConfig.getProjectName())); data.put("inviteList", configService.get("team_list")); out.print(JsonUtil.loadTrueResult(data)); final UserInfo uuser = user; ThreadUtil.run(new Runnable() { @@ -1432,6 +1430,7 @@ /** * h5收藏 * * @param callback * @param acceptData * @param uid fanli/src/main/java/com/yeshi/fanli/entity/bus/user/LostOrder.java
@@ -8,45 +8,77 @@ import javax.persistence.ManyToOne; import javax.persistence.Table; import org.yeshi.utils.mybatis.Column; import com.google.gson.annotations.Expose; /** * 丢失订单 * * @author cxx * * @date 2018年1月29日 */ @Entity @Table(name="yeshi_ec_lost_order") @org.yeshi.utils.mybatis.Table("yeshi_ec_lost_order") public class LostOrder { public final static int RESULT_CODE_VERFING = 1;// 审核中 public final static int RESULT_CODE_SUCCESS = 2;// 成功 public final static int RESULT_CODE_FAIL = 3;// 失败(通过后3日未处理成功则判断为失败) @Id @GeneratedValue(strategy=GenerationType.AUTO) @Expose @Column(name="id") private Long id; @Expose @Column(name="orderId") private String orderId;//订单号 @Column(name="type") @Expose private Integer type;//订单类型 private Integer type;// 订单类型 1-淘宝订单 @Column(name="state") @Expose private Integer state;//订单状态 0:审核 1:通过 2:拒绝 @Column(name="createTime") @Expose private Long createTime; @Column(name="handleTime") @Expose private Long handleTime; @Column(name="uid") @ManyToOne @JoinColumn(name="uid") @Expose private UserInfo userInfo; @Column(name="oid") @ManyToOne @JoinColumn(name="oid") @Expose private Order order; @Column(name="remake") @Expose private String remake; @Column(name="judge") @Expose private String judge;//系统判定:如果用户在本系统购买并成功上传过订单,且上传的丢失订单后6为相同的话,那么系统判定为匹配 private String judge;// 系统判定:如果用户在本系统购买并成功上传过订单,且上传的丢失订单后6位相同的话,那么系统判定为匹配 @Column(name="result_code") @javax.persistence.Column(name="result_code") @Expose private Integer resultCode;// 第三方平台订单爬取结果 public Integer getResultCode() { return resultCode; } public void setResultCode(Integer resultCode) { this.resultCode = resultCode; } public Long getId() { return id; @@ -127,6 +159,5 @@ public void setOrder(Order order) { this.order = order; } } fanli/src/main/java/com/yeshi/fanli/service/impl/order/LostOrderServiceImpl.java
@@ -8,7 +8,10 @@ import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.NumberUtil; import com.yeshi.fanli.dao.mybatis.order.LostOrderMapper; import com.yeshi.fanli.dao.order.LostOrderDao; import com.yeshi.fanli.dao.order.PidOrderDao; import com.yeshi.fanli.entity.bus.user.LostOrder; @@ -17,7 +20,6 @@ import com.yeshi.fanli.service.inter.order.OrderService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.Utils; import org.yeshi.utils.NumberUtil; @Service public class LostOrderServiceImpl implements LostOrderService { @@ -31,6 +33,9 @@ @Resource private PidOrderDao pidOrderDao; @Resource private LostOrderMapper lostOrderMapper; @Override public int addLostOrder(LostOrder lostOrder) { String orderId = lostOrder.getOrderId(); @@ -38,6 +43,16 @@ if (type == null) { // 默认为淘宝订单 lostOrder.setType(1); type = 1; } // 查询是否提交 List<LostOrder> orderList = lostOrderMapper.selectByOrderId(orderId); if (orderList != null && orderList.size() > 0) { if (orderList.get(0).getState() == 0) { return -2; } else { return -1; } } Order order = orderService.findOrderByOrderIdAndType(orderId, type); @@ -177,4 +192,62 @@ return lostOrderDao.find(LostOrder.class, id); } @Override public List<LostOrder> getLostOrderListByUid(Long uid, int page, int pageSize) { return lostOrderDao.list("from LostOrder lo where lo.userInfo.id=? order by lo.createTime desc", (page - 1) * pageSize, pageSize, new Serializable[] { uid }); } @Override public long getLostOrderCountByUid(Long uid) { return lostOrderDao.getCount("select count(*) from LostOrder lo where lo.userInfo.id=?", new Serializable[] { uid }); } @Transactional @Override public void processSuceess(String orderId) { // 查询订单号是否在申诉列表中 List<LostOrder> list = lostOrderMapper.selectByOrderId(orderId); if (list == null || list.size() == 0) return; for (LostOrder lo : list) { if (lo.getState() == 1 && lo.getResultCode() != null && lo.getResultCode() == LostOrder.RESULT_CODE_VERFING) { LostOrder update = new LostOrder(); update.setId(lo.getId()); update.setResultCode(LostOrder.RESULT_CODE_SUCCESS); lostOrderMapper.updateByPrimaryKeySelective(update); } } } @Override public void processFail(String orderId) { lostOrderDao.update("update LostOrder lo set lo.resultCode=? where lo.orderId=?", new Serializable[] { LostOrder.RESULT_CODE_FAIL, orderId }); } @Override public void processFail() { // 订单申诉人工通过后,但是隔了3天还未处理成功就视为该订单申诉失败 lostOrderDao.update( "update LostOrder lo set lo.resultCode=? where lo.state=1 and lo.resultCode=? and lo.handleTime<?", new Serializable[] { LostOrder.RESULT_CODE_FAIL, LostOrder.RESULT_CODE_VERFING, System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 3L }); } @Override public void deleteLostOrder(long id) { LostOrder lostOrder = new LostOrder(); lostOrder.setId(id); lostOrderDao.delete(lostOrder); } @Override public void deleteLostOrderByUid(long uid) { lostOrderDao.update("delete from LostOrder lo where lo.userInfo.id=?", new Serializable[] { uid }); } } fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -45,6 +45,7 @@ import com.yeshi.fanli.exception.TaoBaoWeiQuanException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.hongbao.HongBaoService; import com.yeshi.fanli.service.inter.order.LostOrderService; import com.yeshi.fanli.service.inter.order.OrderItemServcie; import com.yeshi.fanli.service.inter.order.OrderProcessService; import com.yeshi.fanli.service.inter.order.OrderService; @@ -128,6 +129,9 @@ @Resource private RedisManager redisManager; @Resource private LostOrderService lostOrderService; @Override public void processOrder(Map<String, List<TaoBaoOrder>> orders) { List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID); @@ -163,6 +167,7 @@ /** * 利用redis的原子性将订单号锁住,不让其他处理 * * @param orderId */ private void redisLockOrder(String orderId) { @@ -172,6 +177,7 @@ /** * 订单解锁 * * @param orderId */ private void redisUnlockOrder(String orderId) { @@ -181,6 +187,7 @@ /** * 订单是否被锁住了 * * @param orderId * @return */ @@ -208,6 +215,10 @@ processShopingFanliOrder(orderId, orders.get(orderId)); // redisUnlockOrder(orderId); // 出错了就不处理该订单了,需要定期检查 // 更改丢失订单的状态 lostOrderService.processSuceess(orderId); } catch (HongBaoException e1) { e1.printStackTrace(); } catch (OrderItemException e2) { fanli/src/main/java/com/yeshi/fanli/service/impl/order/PidOrderServiceImpl.java
@@ -89,6 +89,9 @@ @Resource private RedisManager redisManager; // @Resource // private LostOrderService lostOrderService; @Override @Transactional public void addPidOrderFromTaoBao(Map<String, List<PidOrder>> map) { @@ -205,6 +208,8 @@ // continue; // redisLockOrder(orderId); doPidOrder(orderId); // 处理订单找回 // lostOrderService.processSuceess(orderId); // redisUnlockOrder(orderId); } } fanli/src/main/java/com/yeshi/fanli/service/inter/order/LostOrderService.java
@@ -10,9 +10,66 @@ static final ReentrantReadWriteLock lostOrderLock = new ReentrantReadWriteLock(true); int addLostOrder(LostOrder lostOrder); void pass(LostOrder lostOrder); void reject(LostOrder lostOrder); List<LostOrder> findLostOrderList(String key, int page); int getCount(String key); LostOrder getOne(long id); /** * 按用户查找丢失订单 * * @param uid * @param page * @param pageSize * @return */ List<LostOrder> getLostOrderListByUid(Long uid, int page, int pageSize); /** * 获取丢失订单数量 * * @param uid * @return */ long getLostOrderCountByUid(Long uid); /** * 订单处理成功 * * @param orderId */ void processSuceess(String orderId); /** * 订单处理失败 * * @param orderId */ void processFail(String orderId); /** * 订单处理失败批量处理 */ void processFail(); /** * 删除记录 * * @param id */ void deleteLostOrder(long id); /** * 删除用户的所有记录 * * @param uid */ void deleteLostOrderByUid(long uid); }