|
@@ -63,7 +63,8 @@ import com.iamberry.wechat.tools.ValidatorUtil;
|
|
|
* Update Date:2016年4月20日
|
|
|
*/
|
|
|
@Controller
|
|
|
-@RequestMapping("/wechat/order")
|
|
|
+//@RequestMapping("/wechat/order")
|
|
|
+@RequestMapping("/order")
|
|
|
public class OrderHandler {
|
|
|
|
|
|
@Autowired
|
|
@@ -104,7 +105,7 @@ public class OrderHandler {
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@ResponseBody
|
|
|
- @RequestMapping(value = "/payBefore", method = RequestMethod.POST)
|
|
|
+ @RequestMapping(value = "/payBefore")
|
|
|
public ResultMsg payBefore(HttpServletRequest request) throws Exception {
|
|
|
|
|
|
ResultMsg msg = new ResultMsg();
|
|
@@ -244,7 +245,12 @@ public class OrderHandler {
|
|
|
|
|
|
SendPayDto dto = new SendPayDto();
|
|
|
dto.setSuccess(false);
|
|
|
- Member member = WechatUtils.getUserBySession(request); // 当前用户
|
|
|
+
|
|
|
+ //Member member = WechatUtils.getUserBySession(request); // 当前用户
|
|
|
+ Member member = new Member();
|
|
|
+ member.setUserId(14708);
|
|
|
+ member.setUserOpenid("oZ9pv02WMRQgyDVRY1a_daYecwHI");
|
|
|
+
|
|
|
/** 数据格式校验 */
|
|
|
if (member == null || member.getUserOpenid() == null) {// 校验当前用户信息是否丢失
|
|
|
msg.setMessage(ResultInfo.loginOutError);
|
|
@@ -280,119 +286,18 @@ public class OrderHandler {
|
|
|
return msg;
|
|
|
}
|
|
|
|
|
|
- //根据openid查询该用户是否购买过订单
|
|
|
- ShopSalesOrderDto shopSalesOrderDto = new ShopSalesOrderDto();
|
|
|
- shopSalesOrderDto.setSalesOpenid(member.getUserOpenid());
|
|
|
- shopSalesOrderDto.setSalesStatus("2");
|
|
|
- int orderNum = cartService.selectOrderCount(shopSalesOrderDto);
|
|
|
+ /*是否含有电动牙刷*/
|
|
|
+ boolean isContainProduct = false;
|
|
|
|
|
|
int total = 0; // 需要支付的总额, 单位为分
|
|
|
-
|
|
|
-
|
|
|
- //查询金牌会员模板id
|
|
|
- int templateId = systemService.selectOneShopRuleById(114).getRuleNum().intValue();
|
|
|
- UserGiftDto userGift = null;
|
|
|
- int giftNum = 0;
|
|
|
-
|
|
|
/** 提前准备订单项数据 */
|
|
|
/** 准备数据 */
|
|
|
Order order = new Order();
|
|
|
order.setSalesOrderid(OrderNOUtil.createOrderCode(member.getUserId())); // 订单ID
|
|
|
List<OrderItem> list = new ArrayList<OrderItem>();
|
|
|
List<Integer> cartIds = new ArrayList<Integer>();
|
|
|
- String userQrcodeType = request.getParameter("userQrcodeType");
|
|
|
int num = productInfoService.getQrCodeByPlaceOpenId(member.getUserOpenid());
|
|
|
for (CartDto cartDto : cartDtos) {
|
|
|
-
|
|
|
- /*//如果是有二维码的商户,进入后显示优惠价
|
|
|
- if (num > 0) {
|
|
|
- QrcodeGift gift = new QrcodeGift();
|
|
|
- List<QrcodeGift> giftList = productInfoService.listQrcodeGift(gift);
|
|
|
- if (giftList != null && giftList.size() > 0) {
|
|
|
- for (QrcodeGift qrcodeGift : giftList) {
|
|
|
- if (cartDto.getCartColorId().intValue() == qrcodeGift.getQrcodeColorId()
|
|
|
- && qrcodeGift.getQrcodePreDiscount() != null
|
|
|
- && qrcodeGift.getQrcodePreDiscount() > 0) {
|
|
|
- cartDto.setProductDiscount(qrcodeGift.getQrcodePreDiscount());
|
|
|
- cartDto.setProductPrice(qrcodeGift.getQrcodePreDiscount());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }*/
|
|
|
-
|
|
|
- if (userQrcodeType != null && !"".equals(userQrcodeType)) {
|
|
|
-
|
|
|
- //如果是扫描优惠二维码进来,则显示优惠价并赠送滤芯
|
|
|
- QrcodeGift gift = new QrcodeGift();
|
|
|
- gift.setQrcodeStatus(1);
|
|
|
- List<QrcodeGift> giftList = productInfoService.listQrcodeGift(gift);
|
|
|
- if (giftList != null && giftList.size() > 0) {
|
|
|
- for (QrcodeGift qrcodeGift : giftList) {
|
|
|
- if (cartDto.getCartColorId().intValue() == qrcodeGift.getQrcodeColorId()) {
|
|
|
- switch (userQrcodeType) {
|
|
|
- case "1":
|
|
|
- if (qrcodeGift.getQrcodePreDiscount() != null && qrcodeGift.getQrcodePreDiscount() > 0) {
|
|
|
- cartDto.setProductDiscount(qrcodeGift.getQrcodePreDiscount());
|
|
|
- cartDto.setProductPrice(qrcodeGift.getQrcodePreDiscount());
|
|
|
- }
|
|
|
- if (qrcodeGift.getQrcodePreGiftColor() != null) {
|
|
|
- for (int i = 0;i < cartDto.getCartNum();i++) {
|
|
|
- preGift.append(qrcodeGift.getQrcodePreGiftColor());
|
|
|
- preGift.append(",");
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- if (qrcodeGift.getQrcodeSalesDiscount() != null && qrcodeGift.getQrcodeSalesDiscount() > 0) {
|
|
|
- cartDto.setProductDiscount(qrcodeGift.getQrcodeSalesDiscount());
|
|
|
- cartDto.setProductPrice(qrcodeGift.getQrcodeSalesDiscount());
|
|
|
- }
|
|
|
- if (qrcodeGift.getQrcodeSalesGiftColor() != null) {
|
|
|
- for (int i = 0;i < cartDto.getCartNum();i++) {
|
|
|
- preGift.append(qrcodeGift.getQrcodeSalesGiftColor());
|
|
|
- preGift.append(",");
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //如果购买过订单,则滤芯的价格可按折扣价购买
|
|
|
- if (orderNum > 0) {
|
|
|
- if (cartDto.getProductType().intValue() == 2) {
|
|
|
- UserGiftDto userGiftDto = new UserGiftDto();
|
|
|
- userGiftDto.setUserLevel(3);
|
|
|
- userGiftDto.setUserProductId(cartDto.getCartProductId());
|
|
|
- userGiftDto.setUserColorId(cartDto.getCartColorId());
|
|
|
- //根据商品id和会员等级查询礼品信息
|
|
|
- userGiftDto = productInfoService.selectUserGift(userGiftDto);
|
|
|
- if (userGiftDto != null) {
|
|
|
- cartDto.setProductPrice(userGiftDto.getUserDiscount());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //如果模板id等于金牌会模板id,则该用户为金牌会员下线
|
|
|
- if (member.getUserDealers() != null && member.getTemplateId() != null
|
|
|
- && templateId == member.getTemplateId().intValue() && member.getUserResType().intValue() == 3) {
|
|
|
- UserGiftDto userGiftDto = new UserGiftDto();
|
|
|
- userGiftDto.setUserLevel(2);
|
|
|
- userGiftDto.setUserProductId(cartDto.getCartProductId());
|
|
|
- userGiftDto.setUserColorId(cartDto.getCartColorId());
|
|
|
- //根据商品id和会员等级查询礼品信息
|
|
|
- userGiftDto = productInfoService.selectUserGift(userGiftDto);
|
|
|
- if (userGiftDto != null) {
|
|
|
- cartDto.setProductPrice(userGiftDto.getUserDiscount());
|
|
|
- giftNum += cartDto.getCartNum();
|
|
|
- if (userGift == null) {
|
|
|
- userGift = userGiftDto;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
if (cartDto.getProductStatus() != null && cartDto.getProductStatus().intValue() == 1) {
|
|
|
cartIds.add(cartDto.getCartId());
|
|
|
Integer subTotal = cartDto.getCartNum() * cartDto.getProductPrice(); // 小计
|
|
@@ -410,63 +315,8 @@ public class OrderHandler {
|
|
|
item.setItemColorId(cartDto.getCartColorId());
|
|
|
list.add(item);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- //扫描优惠二维码赠送赠品信息
|
|
|
- if (preGift != null && !"".equals(preGift.toString())) {
|
|
|
- String[] giftss = preGift.toString().split(",");
|
|
|
- ProductColor color = new ProductColor();
|
|
|
- color.setPage(null);
|
|
|
- List<ProductColor> colorList = productColorService.selectProductColorList(color);
|
|
|
- for (int i = 0;i < giftss.length;i++) {
|
|
|
- boolean cartFlag = false;
|
|
|
- for (OrderItem item : list) {
|
|
|
- //判断是否已经存在该赠品,如果存在则数量加1
|
|
|
- if (Integer.parseInt(giftss[i]) == item.getItemColorId() && item.getItemTotal() == 0) {
|
|
|
- item.setItemNum(item.getItemNum().intValue() + 1);
|
|
|
- cartFlag = true;
|
|
|
- }
|
|
|
- }
|
|
|
- //如果不存在,则新增订单项
|
|
|
- if (!cartFlag) {
|
|
|
- for (ProductColor productColor : colorList) {
|
|
|
- if (Integer.parseInt(giftss[i]) == productColor.getColorId()) {
|
|
|
- OrderItem orderItem = new OrderItem();
|
|
|
- orderItem.setItemNum(1);
|
|
|
- orderItem.setItemProductDiscount(0);
|
|
|
- orderItem.setItemProductId(productColor.getColorProductId());
|
|
|
- orderItem.setItemProductName(productColor.getColorProductName());
|
|
|
- orderItem.setItemProductPic(productColor.getColorProductPic());
|
|
|
- orderItem.setItemSalesOrderid(order.getSalesOrderid());
|
|
|
- orderItem.setItemTotal(0);
|
|
|
- orderItem.setItemProductType(productColor.getColorProductType());
|
|
|
- orderItem.setItemProductPrice(0);
|
|
|
- orderItem.setItemColorId(productColor.getColorId());
|
|
|
- list.add(orderItem);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //如果模板id等于金牌会模板id,来源是3,则该用户为金牌会员直接下线,直接下线送三年滤芯
|
|
|
- if (member.getUserDealers() != null && member.getTemplateId() != null &&
|
|
|
- templateId == member.getTemplateId().intValue() && member.getUserResType().intValue() == 3) {
|
|
|
- //当userGift不为空时,说明该用户购买的商品有奖励礼品,奖励礼品取第一个产品的,不适用于多个产品有不同奖励礼品的情况
|
|
|
- if (userGift != null && userGift.getUserGiftId() != null && !"".equals(userGift.getUserGiftId())) {
|
|
|
- Product product = productInfoService.getProductByProductId(userGift.getUserGiftId(),userGift.getUserGiftColor());
|
|
|
- OrderItem orderItem = new OrderItem();
|
|
|
- orderItem.setItemNum(userGift.getUserGiftCount() * giftNum);
|
|
|
- orderItem.setItemProductDiscount(0);
|
|
|
- orderItem.setItemProductId(userGift.getUserGiftId());
|
|
|
- orderItem.setItemProductName(product.getProductName());
|
|
|
- orderItem.setItemProductPic(product.getProductIntroduceImg());
|
|
|
- orderItem.setItemSalesOrderid(order.getSalesOrderid());
|
|
|
- orderItem.setItemTotal(0);
|
|
|
- orderItem.setItemProductType(product.getProductType().getTypeId());
|
|
|
- orderItem.setItemProductPrice(0);
|
|
|
- orderItem.setItemColorId(userGift.getUserColorId());
|
|
|
- list.add(orderItem);
|
|
|
+ if(cartDto.getProductType() == 100){ //当订单中有电动牙刷时,isContainProduct为true
|
|
|
+ isContainProduct = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -491,6 +341,7 @@ public class OrderHandler {
|
|
|
couponItem.setCouponItemUseropenid(couponItemDto.getUseropenid());
|
|
|
couponItem.setCouponUseEndDate(couponItemDto.getCouponUseEndDate());
|
|
|
couponItem.setCouponUseDate(couponItemDto.getCouponUseDate());
|
|
|
+ couponItem.setCouponIsNewPeople(couponItemDto.getCouponIsNewPeople());
|
|
|
|
|
|
if(null==couponItemDto || !couponItemDto.getUseropenid().equals(member.getUserOpenid()) || couponItemDto.getCouponUseStatus()!=1){
|
|
|
msg.setMessage(ResultInfo.COUPON_INVALID); //优惠券无效
|
|
@@ -500,20 +351,25 @@ public class OrderHandler {
|
|
|
msg.setMessage(ResultInfo.COUPON_OUTOFDATE); //优惠券过期
|
|
|
return msg;
|
|
|
}
|
|
|
-
|
|
|
//消费达到指定额度
|
|
|
CouponType couponType = couponTypeService.getCouponTypeById(couponItemDto.getCouponId());
|
|
|
if(couponType.getCouponConsumeEnough()>total){
|
|
|
msg.setMessage(ResultInfo.COUPON_CONSUME_NO_ENOUGH); //消费额度不足
|
|
|
return msg;
|
|
|
}
|
|
|
- //优惠券的类型,是直接减免额度 还是折扣价
|
|
|
+ if(member.getUserIdentity() != 1){ //判断该用户是否为会员
|
|
|
+ if(couponItem.getCouponIsNewPeople() == 1 && !isContainProduct){
|
|
|
+ msg.setMessage(ResultInfo.COUPON_NO_MEMBER); //非会员需要购买电动牙刷才能使用该优惠券
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //优惠券的类型,是直接减免额度 还是折扣价
|
|
|
if(couponType.getCouponType()==1){
|
|
|
total=total-couponType.getCouponReduce();
|
|
|
}else if(couponType.getCouponType()==2){
|
|
|
+ Integer all = new Integer(total);
|
|
|
total=total*couponType.getCouponReduce()/100;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
if(total==0 || total<0){
|
|
|
total=0;
|
|
@@ -522,20 +378,11 @@ public class OrderHandler {
|
|
|
mustPay=total;
|
|
|
}
|
|
|
|
|
|
- //获取账户余额,判断是否在可用范围内
|
|
|
- int balancePayAmount=temp.getBalancePayAmount();
|
|
|
- if(balancePayAmount>0 && member.getUserIncome()>balancePayAmount){
|
|
|
- mustPay=total-temp.getBalancePayAmount()>0?total-temp.getBalancePayAmount():0;
|
|
|
- }else if(balancePayAmount>0 && member.getUserIncome()<balancePayAmount){
|
|
|
- msg.setMessage(ResultInfo.NO_ENOUGH_FOR_PAY);
|
|
|
- return msg;
|
|
|
- }
|
|
|
-
|
|
|
order.setSalesYetAmount(total);
|
|
|
order.setSalesRateAmount(0);
|
|
|
- order.setSalesIntegralNum(temp.getOrderIntegralNum()); // 订单使用积分
|
|
|
+ order.setSalesIntegralNum(0); // 订单使用积分
|
|
|
order.setSalesCreateDate(new Date()); // 创建时间
|
|
|
- order.setBalancePayAmount(temp.getBalancePayAmount()); //账户余额支付金额
|
|
|
+ order.setBalancePayAmount(0); //账户余额支付金额
|
|
|
order.setCouponId(couponId); //优惠券id
|
|
|
|
|
|
order.setSalesStatus(1); // 待支付订单
|
|
@@ -550,7 +397,7 @@ public class OrderHandler {
|
|
|
boolean flag = false;
|
|
|
try {
|
|
|
flag = cartService.addOrderAndSaveOrderItem(order, list, cartIds);
|
|
|
-//System.out.println("====插入订单列表信息===="+flag);
|
|
|
+ //System.out.println("====插入订单列表信息===="+flag);
|
|
|
//修改优惠券状态为临时状态
|
|
|
if(hasCoupon){
|
|
|
couponItem.setCouponUseStatus(7);
|
|
@@ -601,40 +448,7 @@ public class OrderHandler {
|
|
|
couponItem.setCouponUseDate(new Date());//添加使用时间
|
|
|
int i=couponItemService.updateCouponItemById(couponItem);
|
|
|
}
|
|
|
-
|
|
|
- //更新账户余额
|
|
|
- if(balancePayAmount>0){
|
|
|
- member.setUserIncome(-balancePayAmount);
|
|
|
- memberService.updateUserIncomeByOpenId(member);
|
|
|
-
|
|
|
- //修改用户购买记录为已购买
|
|
|
- memberService.updateIsBaughtByOpenid(member.getUserOpenid(), 2);
|
|
|
- //更新用户绑定状态
|
|
|
- if (member.getUserIsFlag()!= null && member.getUserIsFlag() == 1) {
|
|
|
- member.setUserIsFlag(2);//终身绑定
|
|
|
- homeService.updateMemberIsFlagByOpenid(member);
|
|
|
- }
|
|
|
- try {
|
|
|
- temporaryQrcodeService.applyTempQrcode(member.getUserOpenid());//为用户生成二维码
|
|
|
- } catch (Exception e) {
|
|
|
- System.out.println("为用户生成二维码失败!");
|
|
|
- }
|
|
|
-
|
|
|
- //现金使用记录
|
|
|
- CashLog log=new CashLog();
|
|
|
- log.setCashLogsIntroduction("订单支出");
|
|
|
- log.setCashLogsNum(balancePayAmount);
|
|
|
- log.setCashLogsOpenid(member.getUserOpenid());
|
|
|
- log.setCashLogsType(2);
|
|
|
- log.setCashLogsResType(3);
|
|
|
- log.setCashLogsOrderid(order.getSalesOrderid());
|
|
|
- log.setCashLogsCreateDate(nowDate);
|
|
|
- cashLogService.addCashLog(log);
|
|
|
-
|
|
|
- }
|
|
|
- rebackServices.loadSingleOrderReward(order);
|
|
|
productInfoService.updateProductNumList(order.getSalesOrderid());
|
|
|
-
|
|
|
}
|
|
|
msg.setResultCode(ResultInfo.SUCCESSCODE);
|
|
|
msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
|