Bladeren bron

Merge branch 'master' of http://git.iamberry.com/liuzhiwei/iamberry-common-tooth

liujiankang 6 jaren geleden
bovenliggende
commit
35670abaa6

+ 15 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/AdminUtils.java

@@ -85,6 +85,21 @@ public class AdminUtils {
 		response.addCookie(cookie);
 	}
 
+	/**
+	 * 创建cookie,并保存到response中,写入客户端
+	 * @param response
+	 * @param name
+	 * @param value
+	 */
+	public static void createCookieByClose(HttpServletResponse response, String name, String value) {
+		Cookie cookie = new Cookie(name, value);
+		// 有效期为(三天减一分钟)
+		cookie.setMaxAge(-1);
+//		cookie.setDomain(".acoolrat.com"); 	// 一旦正式的环境,使用此
+		cookie.setPath("/" + NameUtils.getConfig("ROOT_PATH")); 				// 一旦正式的环境,使用此
+		cookie.setHttpOnly(true);
+		response.addCookie(cookie);
+	}
 
 
 	/**

+ 47 - 2
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/WechatUtils.java

@@ -1,6 +1,7 @@
 package com.iamberry.wechat.core.entity;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
+import java.util.HashMap;
 import java.util.Map;
 
 import javax.servlet.http.Cookie;
@@ -36,7 +37,7 @@ public class WechatUtils {
 		Cookie[] cookies = request.getCookies();
 		if (cookies != null) {
 			for (Cookie cookie : cookies) {
-				if (cookie.getName().equals("WATERO_WEB_PF")) {
+				if (cookie.getName().equals("WATERO_WEB_PF") || cookie.getName().equals("CHANNEL_TYPE") || cookie.getName().equals("CHANNEL_ID")) {
 					continue;
 				}
 				// 如果cookie的name以cookie value的前8位口头,那么是用户token保存方式
@@ -89,7 +90,7 @@ public class WechatUtils {
 		}
 
 		for (Cookie cookie : cookies) {
-			if (cookie.getName().equals("WATERO_WEB_PF")) {
+			if (cookie.getName().equals("WATERO_WEB_PF") || cookie.getName().equals("CHANNEL_TYPE") || cookie.getName().equals("CHANNEL_ID")) {
 				continue;
 			}
 			// 如果cookie的name以cookie value的前8位口头,那么是用户token保存方式
@@ -175,4 +176,48 @@ public class WechatUtils {
 		
 		return builder.toString();
 	}
+
+
+	public static void setChannelCookies(HttpServletRequest request, HttpServletResponse response,Integer channelType,Integer channelId) {
+		//获取一个cookie数组
+		Cookie[] cookies = request.getCookies();
+		if (cookies == null) {
+			throw new UserNotLoginException();
+		}
+		Boolean flag = true;
+		for (Cookie cookie : cookies) {
+			if (cookie.getName().equals("CHANNEL_TYPE")) {
+				flag = false;
+				AdminUtils.createCookieByClose(response, "CHANNEL_TYPE", String.valueOf(channelType));
+			}else if(cookie.getName().equals("CHANNEL_ID")){
+				flag = false;
+				AdminUtils.createCookieByClose(response, "CHANNEL_ID", String.valueOf(channelId));
+			}
+		}
+
+		if(flag){
+			AdminUtils.createCookieByClose(response, "CHANNEL_TYPE", String.valueOf(channelType));
+			AdminUtils.createCookieByClose(response, "CHANNEL_ID", String.valueOf(channelId));
+		}
+	}
+
+	public static Map getChannelCookies(HttpServletRequest request, HttpServletResponse response) {
+		//获取一个cookie数组
+		Cookie[] cookies = request.getCookies();
+		if (cookies == null) {
+			throw new UserNotLoginException();
+		}
+
+		Map<String,Integer> map = new HashMap<>();
+		for (Cookie cookie : cookies) {
+			if (cookie.getName().equals("CHANNEL_TYPE")) {
+				map.put("CHANNEL_TYPE",Integer.valueOf(cookie.getValue()));
+			}else if(cookie.getName().equals("CHANNEL_ID")){
+				map.put("CHANNEL_ID",Integer.valueOf(cookie.getValue()));
+			}
+		}
+		return map;
+	}
+
+
 }

+ 6 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/channel/ChannelRebateService.java

@@ -19,6 +19,12 @@ public interface ChannelRebateService {
      */
     PagedResult<ChannelRebate> getChannelRebateList(PageRequest<ChannelRebate> pageRequest);
     /**
+     * 获取集合
+     * @param
+     * @return List
+     */
+    List<ChannelRebate> listChannelRebate(ChannelRebate channelRebate);
+    /**
      * 查询单条数据
      * @param  id
      * @return  channelRebate

+ 6 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/channel/ChannelRebateServiceImpl.java

@@ -32,6 +32,12 @@ public class ChannelRebateServiceImpl  implements ChannelRebateService {
         List<ChannelRebate> customerBasicList = channelRebateMapper.getChannelRebateList(pageRequest.getData());
         return PageUtil.getPage(customerBasicList);
     }
+
+    @Override
+    public List<ChannelRebate> listChannelRebate(ChannelRebate channelRebate) {
+        return channelRebateMapper.getChannelRebateList(channelRebate);
+    }
+
     /**
      * 查询单条数据
      * @param  id

+ 7 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/channelRebateMapper.xml

@@ -77,8 +77,10 @@
         tb_iamberry_channel_rebate
         (
         rebate_sales_order_id,
+        rebate_item_id,
         reback_from_open_id,
         reback_channel_id,
+        reback_channel_type,
         reback_amount,
         reback_status,
         reback_time
@@ -86,8 +88,10 @@
         values
         (
         #{rebateSalesOrderId},
+        #{rebateItemId},
         #{rebackFromOpenId},
         #{rebackChannelId},
+        #{rebackChannelType},
         #{rebackAmount},
         #{rebackStatus},
         #{rebackTime}
@@ -106,6 +110,9 @@
             <if test="rebackChannelId != null ">
                 reback_channel_id = #{rebackChannelId},
             </if >
+            <if test="rebateItemId != null ">
+                rebate_item_id = #{rebateItemId},
+            </if >
             <if test="rebackAmount != null ">
                 reback_amount = #{rebackAmount},
             </if >

+ 1 - 1
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/chargerReceiveMapper.xml

@@ -378,7 +378,7 @@
         AND t.receive_post_num = #{receivePostNum}
       </if>
     </where>
-    ORDER BY t.receive_create_time
+    ORDER BY t.receive_id DESC
   </select>
 
   <!-- 获取用户所注册的机器数量 -->

+ 8 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/cart/ProductInfoHandler.java

@@ -200,6 +200,14 @@ public class ProductInfoHandler {
 										   @RequestParam(value = "channelId",defaultValue = "0") Integer channelId,
 										   @RequestParam("colorId") Integer colorId
 	) throws Exception {
+
+//		Map channelMap = WechatUtils.getChannelCookies(request,response);
+
+		/*设置分销*/
+//		if(channelType > 0 && channelId > 0){
+//			WechatUtils.setChannelCookies(request,response,channelType,channelId);
+//		}
+
 		ResultMsg remsg = new ResultMsg();
 		Member member =  WechatUtils.getUserBySession(request);
 		Map<String, Object> map=null;

+ 40 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/mq/MQTask.java

@@ -8,14 +8,17 @@ import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
 import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
+import com.iamberry.wechat.core.entity.channel.ChannelRebate;
 import com.iamberry.wechat.core.entity.coupon.CouponItem;
 import com.iamberry.wechat.core.entity.integral.IntegralConfig;
 import com.iamberry.wechat.core.entity.integral.UseIntegral;
 import com.iamberry.wechat.core.entity.member.Member;
 import com.iamberry.wechat.core.entity.order.NumberBacklogDto;
+import com.iamberry.wechat.core.entity.order.Order;
 import com.iamberry.wechat.core.entity.report.Report;
 import com.iamberry.wechat.face.admin.SystemService;
 import com.iamberry.wechat.face.agentInfo.AgentPurchaseOrderService;
+import com.iamberry.wechat.face.channel.ChannelRebateService;
 import com.iamberry.wechat.face.coupon.CouponItemService;
 import com.iamberry.wechat.face.integral.UseIntegralService;
 import com.iamberry.wechat.face.member.MemberService;
@@ -85,6 +88,8 @@ public class MQTask implements InitializingBean {
 	private MemberService memberService;
 	@Autowired
 	private ReportService reportService;
+	@Autowired
+	private ChannelRebateService channelRebateService;
 
 	private Lock lock = new ReentrantLock();
 
@@ -528,5 +533,40 @@ public class MQTask implements InitializingBean {
 	}
 
 
+	/**
+	 * 上朵分销返利定时任务
+	 * 每天1点
+	 */
+	@SuppressWarnings(value = {"unchecked", "rawtypes"})
+//	@Scheduled(cron = "0 0/2 * * * ?")	//每三分钟执行一次
+	@Scheduled(cron = "0 0 1 * * ?")	//每天1点触发
+	public void channelRebate() {
+		logger.info("上朵分销返利任务开始");
+		ChannelRebate channelRebate = new ChannelRebate();
+		channelRebate.setRebackStatus(1);
+		List<ChannelRebate> channelRebateList = channelRebateService.listChannelRebate(channelRebate);
+		Integer num = Integer.valueOf(systemService.selectOneShopRuleById(258).getRuleNum().intValue());		//10
+		logger.info("上朵分销返利订单处理时间为:"+num + "天");
+		for (ChannelRebate cr:channelRebateList) {
+			Order order = adminOrderService.getShopOrderByOrderId(cr.getSalesOrderid());
+			Calendar calendar = Calendar.getInstance();
+			calendar.setTime(order.getSalesCreateDate());
+			calendar.add(Calendar.DATE, num);
+			if(calendar.getTime().getTime() < new Date().getTime()){	//如果订单时间+10天 小于 当前时间,那么表示该返利状态更改为已返利(2)
+				ChannelRebate newCr = new ChannelRebate();
+				newCr.setRebateId(cr.getRebateId());
+				newCr.setRebackStatus(2);
+				Integer flag = channelRebateService.update(newCr);
+				if(flag > 0){
+					logger.info("上朵分销返利成功,订单号为:"+cr.getSalesOrderid()+"--返利id为:"+cr.getRebateId());
+				}else{
+					logger.info("上朵分销返利失败,订单号为:"+cr.getSalesOrderid()+"--返利id为:"+cr.getRebateId());
+				}
+			}
+		}
+		logger.info("上朵分销返利任务结束");
+	}
+
+
 
 }

+ 45 - 40
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/order/OrderHandler.java

@@ -23,6 +23,7 @@ import com.iamberry.wechat.face.admin.SystemService;
 import com.iamberry.wechat.face.cart.CartService;
 import com.iamberry.wechat.face.cart.ProductInfoService;
 import com.iamberry.wechat.face.channel.ChannelPriceService;
+import com.iamberry.wechat.face.channel.ChannelRebateService;
 import com.iamberry.wechat.face.coupon.CouponItemService;
 import com.iamberry.wechat.face.coupon.CouponTypeService;
 import com.iamberry.wechat.face.customized.CustomizedToothService;
@@ -110,6 +111,8 @@ public class OrderHandler {
 	private AdminOrderService adminOrderService;
 	@Autowired
 	private ChannelPriceService channelPriceService;
+	@Autowired
+	private ChannelRebateService channelRebateService;
 
 	/**
 	 * 支付前,调用方法
@@ -425,18 +428,6 @@ public class OrderHandler {
 				return msg;
 			}
 			cartDtos = cartService.selectCartItemByListId(cartId);
-
-			/*上朵分销,查看是否为分销*/
-			for (CartDto cd : cartDtos) {
-				Integer price = 0,discount=0;
-				if(channelType > 0 && channelId > 0){
-					ChannelPrice channelPrice = channelPriceService.getChannelPriceByChannel(channelId,channelType,cd.getCartColorId());
-					if(channelPrice != null){
-						cd.setProductPrice(channelPrice.getChannelPriceOffer());	//因结算页面都是去price,所以都赋值优惠价
-						cd.setProductDiscount(channelPrice.getChannelPriceOffer());
-					}
-				}
-			}
 		}else if("2".equals(temp.getIsCustomize())){
 			Integer id = Integer.valueOf(temp.getCartIdStr());
 			CustomizedTooth customizedTooth = customizedToothService.getCustomizedToothById(id);
@@ -480,6 +471,7 @@ public class OrderHandler {
 		int brushelCouponTotal = 0;  //优惠总价
 
 		int total = 0; // 需要支付的总额, 单位为分
+		int channelTotal = 0; // 如果有分销,此值为分销总额,没有就与total值等同
 		/** 提前准备订单项数据 */
 		/** 准备数据 */
 		Order order = new Order();
@@ -491,7 +483,19 @@ public class OrderHandler {
 			if (cartDto.getProductStatus() != null && cartDto.getProductStatus().intValue() == 1) {
 				cartIds.add(cartDto.getCartId());
 				Integer subTotal = cartDto.getCartNum() * cartDto.getProductPrice(); // 小计
- 				total += subTotal;
+
+				total += subTotal;
+
+				/*上朵分销,*/
+				if(channelType > 0 && channelId > 0){
+					ChannelPrice channelPrice = channelPriceService.getChannelPriceByChannel(channelId,channelType,cartDto.getCartColorId());
+					if(channelPrice != null){
+						subTotal = cartDto.getCartNum() * channelPrice.getChannelPriceOffer();
+					}
+				}
+				channelTotal += subTotal;
+				/*上朵分销,*/
+
 				OrderItem item = new OrderItem();
 				item.setItemNum(cartDto.getCartNum());
 				item.setItemProductDiscount(cartDto.getProductPrice());
@@ -531,6 +535,10 @@ public class OrderHandler {
 		order.setSalesOpenid(member.getUserOpenid()); // openid 
 		order.setSalesAmount(total); // 订单金额
 
+		if(total > channelTotal && channelType > 0 && channelId > 0){		//如果有分销优惠,将直接使用分销优惠价
+			total = channelTotal;
+		}
+
 		int mustPay=0;
 
 		String couponId=temp.getCouponId();
@@ -646,22 +654,34 @@ public class OrderHandler {
 
 			/*分销添加返利 -- start */
 			List<OrderItem> orderItemList = adminOrderService.getShopOrderItemByOrderId(order.getSalesOrderid());
-			for (OrderItem oi:orderItemList) {
-				Integer price = 0,discount=0;
-				if(channelType > 0 && channelId > 0){
-					ChannelPrice channelPrice = channelPriceService.getChannelPriceByChannel(channelId,channelType,oi.getItemColorId());
-					if(channelPrice != null){
-						price = channelPrice.getChannelOriginalPrice();
-						discount = channelPrice.getChannelPriceOffer();
-
-						ChannelRebate channelRebate = new ChannelRebate();
-						
-
+			try{
+				for (OrderItem oi:orderItemList) {
+					if(channelType > 0 && channelId > 0){
+						ChannelPrice channelPrice = channelPriceService.getChannelPriceByChannel(channelId,channelType,oi.getItemColorId());
+						if(channelPrice != null){
+							Integer rebateAmount = channelPrice.getChannelRebateAmount();	//channelRebateAmount  返利金额
+							rebateAmount = rebateAmount * oi.getItemNum();
+
+							ChannelRebate channelRebate = new ChannelRebate();
+							channelRebate.setRebateSalesOrderId(order.getSalesOrderid());
+							channelRebate.setRebackFromOpenId(member.getUserOpenid());
+							channelRebate.setRebateItemId(oi.getItemId());
+							channelRebate.setRebackChannelType(channelType);
+							channelRebate.setRebackChannelId(channelId);
+							channelRebate.setRebackAmount(rebateAmount);
+							channelRebate.setRebackStatus(1); 	//1:待返利
+							Integer fl = channelRebateService.save(channelRebate);
+							if(fl < 1){
+								ratFWLogger.info("返利生成失败!失败订单号:"+order.getSalesOrderid());
+							}
+						}
 					}
 				}
+			}catch (Exception e){
+				ratFWLogger.info("返利生成错误!失败订单号:"+order.getSalesOrderid());
+				e.printStackTrace();
 			}
 			/*分销添加返利 -- end */
-
 		} catch (Exception e) {
 			flag = false;
 			System.out.println("====插入订单列表信息失败====");
@@ -690,21 +710,6 @@ public class OrderHandler {
 				return msg;
 			}
 		} else if(flag && mustPay==0){
-
-			// 给百胜推送信息
-			/*try {
-				MQMessage message = new MQMessage();
-				message.setServiceToMessage(order.getSalesOrderid());
-				message.setServiceOtherMessage("efast.trade.new.add");
-				message.setServiceIsSend(2);			// 没有推送的信息
-				message.setServiceStatus(1); 			// 推送成功
-				message.setServiceType(1); 				// 添加订单信息
-				message.setServiceHandlerObjectName("efastOrderServiceImpl");
-				message.setServiceHandlerMethodName("addOrderInfoToEfast");
-				mQservice.insertMQMessage(message);
-			} catch (Exception e) {
-			}*/
-
 			dto.setInfo("isOK");
 			dto.setSuccess(true);
 			dto.setOrderId(order.getSalesOrderid());

+ 3 - 1
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/ResponseWechatPayHandler.java

@@ -5,6 +5,8 @@ import com.iamberry.wechat.core.entity.AdminUtils;
 import com.iamberry.wechat.core.entity.OrderUtil;
 import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
 import com.iamberry.wechat.core.entity.agentInfo.AgentOrder;
+import com.iamberry.wechat.core.entity.channel.ChannelPrice;
+import com.iamberry.wechat.core.entity.channel.ChannelRebate;
 import com.iamberry.wechat.core.entity.coupon.CouponItem;
 import com.iamberry.wechat.core.entity.coupon.CouponItemDto;
 import com.iamberry.wechat.core.entity.giftCard.AgentInfo;
@@ -27,6 +29,7 @@ import com.iamberry.wechat.face.admin.SystemService;
 import com.iamberry.wechat.face.agentInfo.AgentPurchaseOrderService;
 import com.iamberry.wechat.face.apparatus.ApparatusService;
 import com.iamberry.wechat.face.cart.CartService;
+import com.iamberry.wechat.face.channel.ChannelRebateService;
 import com.iamberry.wechat.face.coupon.CouponItemService;
 import com.iamberry.wechat.face.giftCard.AgentMachineService;
 import com.iamberry.wechat.face.giftCard.AgentService;
@@ -248,7 +251,6 @@ public class ResponseWechatPayHandler {
 						ratFWLogger.info("积分是否入账:" + flag);
 						/*----------计算积分-----------*/
 
-
 						/*调整库存*/
 						for (int i = 0; i < orderItemList.size(); i++) {
 							Integer fl = productColorService.updateAddSoldNum(orderItemList.get(i).getItemColorId(),orderItemList.get(i).getItemNum());

+ 1 - 1
tooth-wechat-web/src/main/resources/iamberry-wechat-web-ioc.xml

@@ -51,7 +51,7 @@
 	<bean id="loadResultInfo" class="com.iamberry.wechat.tools.loadResultUtil" lazy-init="false"></bean>
 	
 	<!-- 开启注解启动定时器  -->
-  <!--  <task:annotation-driven/>-->
+    <!--<task:annotation-driven/>-->
     
     <!-- 将30天后奖励积分的定时任务的xml引入-->
 	<!--<import resource="classpath:iamberry-wechat-service-orderTesk.xml"></import>-->