package com.yeshi.fanli.controller.client.v1;
|
|
import java.io.PrintWriter;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
|
import com.yeshi.fanli.entity.SystemEnum;
|
import com.yeshi.fanli.util.SystemInfoUtil;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.yeshi.utils.JsonUtil;
|
import org.yeshi.utils.exception.WXOrderException;
|
|
import com.yeshi.fanli.entity.accept.AcceptData;
|
import com.yeshi.fanli.entity.common.AdminUser;
|
import com.yeshi.fanli.entity.common.Config;
|
import com.yeshi.fanli.entity.shop.BanLiShopGoods;
|
import com.yeshi.fanli.entity.shop.BanLiShopGoodsSets;
|
import com.yeshi.fanli.entity.shop.BanLiShopGoodsSetsPay;
|
import com.yeshi.fanli.entity.shop.BanLiShopOrder;
|
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
|
import com.yeshi.fanli.exception.redpack.RedPackBalanceException;
|
import com.yeshi.fanli.exception.shop.BanLiShopOrderException;
|
import com.yeshi.fanli.service.AdminUserService;
|
import com.yeshi.fanli.service.inter.config.ConfigService;
|
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
|
import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService;
|
import com.yeshi.fanli.service.inter.redpack.RedPackForbidService;
|
import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsService;
|
import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsSetPayService;
|
import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsSetService;
|
import com.yeshi.fanli.service.inter.shop.BanLiShopOrderPayService;
|
import com.yeshi.fanli.service.inter.shop.BanLiShopOrderService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.ThreadUtil;
|
import com.yeshi.fanli.util.email.MailSenderUtil;
|
import com.yeshi.fanli.util.factory.shop.BanLiShopOrderGoodsVOFactory;
|
import com.yeshi.fanli.util.wx.BanLiShopWXPayUtil;
|
import com.yeshi.fanli.vo.homemodule.BannerVO;
|
import com.yeshi.fanli.vo.shop.BanLiShopOrderVO;
|
|
import net.sf.json.JSONObject;
|
|
/**
|
* 板栗商城
|
*
|
* @author Administrator
|
*
|
*/
|
@Controller
|
@RequestMapping("api/v1/banlishop")
|
public class BanLiShopController {
|
|
@Resource
|
private BanLiShopGoodsService banLiShopGoodsService;
|
|
@Resource
|
private BanLiShopOrderService banLiShopOrderService;
|
|
@Resource
|
private BanLiShopOrderPayService banLiShopOrderPayService;
|
|
@Resource
|
private SwiperPictureService swiperPictureService;
|
|
@Resource
|
private RedPackBalanceService redPackBalanceService;
|
|
@Resource
|
private BanLiShopGoodsSetPayService banLiShopGoodsSetPayService;
|
|
@Resource
|
private BanLiShopGoodsSetService banLiShopGoodsSetService;
|
|
@Resource
|
private RedPackForbidService redPackForbidService;
|
|
@Resource
|
private ConfigService configService;
|
|
|
@Resource
|
private AdminUserService adminUserService;
|
|
/**
|
* 商品列表
|
*
|
* @param acceptData
|
* @param page
|
* @param callback
|
* @param out
|
*/
|
@RequestMapping(value = "goodsList")
|
public void goodsList(AcceptData acceptData, int page, Long uid, String callback, PrintWriter out) {
|
if (page <= 0)
|
page = 1;
|
List<BanLiShopGoods> goodsList = banLiShopGoodsService.listGoods(null, BanLiShopGoods.STATE_ONLINE, page,
|
Constant.PAGE_SIZE);
|
long count = banLiShopGoodsService.countGoods(null, BanLiShopGoods.STATE_ONLINE);
|
// 获取banner
|
List<BannerVO> pictureList = swiperPictureService.getByBannerCardAndVersion("hongbao_exchange_goods_list",
|
acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()),acceptData.getSystem());
|
|
JSONObject data = new JSONObject();
|
if (pictureList != null && pictureList.size() > 0) {
|
data.put("picture", pictureList.get(0).getSrc());
|
}
|
data.put("data", goodsList);
|
data.put("count", count);
|
data.put("redPackLock", redPackForbidService.verifyForbid(uid));
|
|
if (!StringUtil.isNullOrEmpty(callback))
|
out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
|
else
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping(value = "orderList")
|
public void orderList(AcceptData acceptData, Long uid, int page, String callback, String from, PrintWriter out) {
|
if (page <= 0)
|
page = 1;
|
List<BanLiShopOrder> orderList = banLiShopOrderService.listByUid(uid, page, Constant.PAGE_SIZE);
|
if (!StringUtil.isNullOrEmpty("from") && from.equalsIgnoreCase("pay")) {// 从支付界面过来
|
// 判断第一个订单是否支付成功
|
if (orderList.size() > 0) {
|
BanLiShopOrder latestOrder = orderList.get(0);
|
if (latestOrder.getMoneyPayment() != null
|
&& latestOrder.getMoneyPayment().compareTo(new BigDecimal(0)) > 0) {
|
// 判断微信支付是否成功
|
try {
|
boolean isPaySuccess = BanLiShopWXPayUtil.isPaySuccess(latestOrder.getOrderNo());
|
if (isPaySuccess) {
|
try {
|
banLiShopOrderPayService.payOrderByMoney(latestOrder.getId(),
|
latestOrder.getMoneyPayment());
|
orderList = banLiShopOrderService.listByUid(uid, page, Constant.PAGE_SIZE);
|
} catch (BanLiShopOrderException e) {
|
e.printStackTrace();
|
}
|
}
|
} catch (WXOrderException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
|
List<BanLiShopOrderVO> voList = new ArrayList<>();
|
for (BanLiShopOrder order : orderList) {
|
voList.add(BanLiShopOrderGoodsVOFactory.create(order));
|
}
|
long count = banLiShopOrderService.countByUid(uid);
|
JSONObject data = new JSONObject();
|
data.put("data", voList);
|
data.put("count", count);
|
if (!StringUtil.isNullOrEmpty(callback))
|
out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
|
else
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
private String getPayName(int payType) {
|
switch (payType) {
|
case BanLiShopGoodsSetsPay.PAY_TYPE_BALANCE:
|
return "仅账户余额";
|
case BanLiShopGoodsSetsPay.PAY_TYPE_HONGBAO:
|
return "仅用红包";
|
|
case BanLiShopGoodsSetsPay.PAY_TYPE_HONGBAO_MONEY:
|
return "现金和红包";
|
case BanLiShopGoodsSetsPay.PAY_TYPE_MONEY:
|
return "仅用现金";
|
}
|
return "";
|
}
|
|
/**
|
* 获取商品详情
|
*
|
* @param acceptData
|
* @param uid
|
* @param id
|
* @param callback
|
* @param out
|
*/
|
@RequestMapping(value = "getGoodsDetail")
|
public void getGoodsDetail(AcceptData acceptData, Long uid, Long id, String callback, PrintWriter out) {
|
BanLiShopGoods goods = banLiShopGoodsService.getGoodsDetail(id);
|
if (goods != null)
|
for (BanLiShopGoodsSets set : goods.getSetsList()) {
|
for (BanLiShopGoodsSetsPay pay : set.getPayList()) {
|
pay.setName(getPayName(pay.getPayType()));
|
}
|
}
|
BigDecimal money = redPackBalanceService.getBalance(uid);
|
|
|
JSONObject data = new JSONObject();
|
data.put("goods", goods);
|
data.put("hongBaoBalance", money);
|
if (!StringUtil.isNullOrEmpty(callback))
|
out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
|
else
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping(value = "buy")
|
public void buy(AcceptData acceptData, Long uid, Long payId, String account, String callback,
|
HttpServletRequest request, PrintWriter out) {
|
if (payId == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择支付方式"));
|
return;
|
}
|
|
if (uid == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
|
return;
|
}
|
|
SystemEnum system= SystemInfoUtil.getSystem(acceptData);
|
|
try {
|
BanLiShopOrder order = banLiShopOrderService.createOrder(payId, account, uid);
|
banLiShopOrderService.addOrder(order);
|
// 红包支付
|
if (order.getHongBaoPayment() != null) {
|
try {
|
banLiShopOrderPayService.payOrderByHongBao(order.getId());
|
// 红包支付成功
|
|
} catch (RedPackBalanceException e) {
|
if (!StringUtil.isNullOrEmpty(callback))
|
out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult(100, "红包支付失败")));
|
else
|
out.print(JsonUtil.loadFalseResult(100, "红包支付失败"));
|
return;
|
}
|
}
|
// 看是否需要微信支付
|
if (order.getMoneyPayment() != null && order.getMoneyPayment().compareTo(new BigDecimal(0)) > 0) {
|
// 走微信支付
|
String payUrl = BanLiShopWXPayUtil.getWXH5PayUrl(order.getOrderNo(), request.getRemoteAddr(),
|
order.getOrderGoods().getGoodsName(), order.getMoneyPayment(), acceptData.getPlatform());
|
if (StringUtil.isNullOrEmpty(payUrl)) {
|
if (!StringUtil.isNullOrEmpty(callback))
|
out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult(102, "微信支付创建失败")));
|
else
|
out.print(JsonUtil.loadFalseResult(102, "微信支付创建失败"));
|
return;
|
}
|
JSONObject data = new JSONObject();
|
data.put("wxPayUrl", payUrl);
|
if (!StringUtil.isNullOrEmpty(callback))
|
out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
|
else
|
out.print(JsonUtil.loadTrueResult(data));
|
} else {// 不需要微信支付
|
JSONObject data = new JSONObject();
|
if (!StringUtil.isNullOrEmpty(callback))
|
out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
|
else
|
out.print(JsonUtil.loadTrueResult(data));
|
|
ThreadUtil.run(new Runnable() {
|
@Override
|
public void run() {
|
long[] targetUids = new long[] { 3L, 4L };
|
Config config = configService.getConfig(ConfigKeyEnum.extractCodeEmailFrom.getKey(),system);
|
String[] sts = config.getValue().split(",");
|
String account = sts[0];
|
String pwd = sts[1];
|
for (long adminId : targetUids) {
|
AdminUser adminUser = adminUserService.selectByPrimaryKey(adminId);
|
String msg = "红包商城有新的订单,请前往审核";
|
boolean isS = MailSenderUtil.sendEmail(adminUser.getEmail(), account, pwd, "红包商城新订单提醒", msg);
|
}
|
}
|
});
|
|
}
|
|
} catch (BanLiShopOrderException e) {
|
if (!StringUtil.isNullOrEmpty(callback))
|
out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg())));
|
else
|
out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
}
|
|
}
|
|
}
|