zq-erp/src/main/java/com/matrix/component/wechat/externalInterface/business/JsApiPayBusiness.java
@@ -14,6 +14,7 @@ import com.matrix.component.wechat.externalInterface.service.RefundService; import com.matrix.component.wechat.externalInterface.service.ScanPayQueryService; import org.apache.log4j.Logger; import org.springframework.beans.BeanUtils; /** * User: rizenguo Date: 2014/12/1 Time: 17:05 @@ -55,9 +56,10 @@ log.info("------------------request createPrapareOrder taking :" + totalTimeCost + "ms"+"--response="+payServiceResponseString); // 将从API返回的XML数据映射到Java对象 JsApiPayResData jsApiPayResData = (JsApiPayResData) Util.getObjectFromXML(payServiceResponseString, Object data = Util.getObjectFromXML(payServiceResponseString, JsApiPayResData.class); JsApiPayResData jsApiPayResData=new JsApiPayResData(); BeanUtils.copyProperties(data,jsApiPayResData); return jsApiPayResData; } zq-erp/src/main/java/com/matrix/component/wechat/externalInterface/common/Util.java
@@ -67,6 +67,8 @@ public static Object getObjectFromXML(String xml, Class<?> tClass) { //将从API返回的XML数据映射到Java对象 XStream xStreamForResponseData = new XStream(); XStream.setupDefaultSecurity(xStreamForResponseData); xStreamForResponseData.allowTypes(new Class[]{tClass}); xStreamForResponseData.alias("xml", tClass); xStreamForResponseData.ignoreUnknownElements();//暂时忽略掉一些新增的字段 return xStreamForResponseData.fromXML(xml); zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java
@@ -76,7 +76,8 @@ // url权限拦截 registry.addInterceptor(suAuthorityInterceptor).addPathPatterns("/**/su/**"); //小程序公司与域名对应关系拦截 registry.addInterceptor(hostInterceptor).addPathPatterns("/**/wxapi/**"); registry.addInterceptor(hostInterceptor).addPathPatterns("/**/wxapi/**") .excludePathPatterns("/wxCommon/wxapi/wxpayCallback"); } zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java
@@ -262,41 +262,11 @@ // =====================================订单包裹相关 /** * 省内包裹 */ public static final String IN_PROVINCE_PACKAGE = "IN_PROVINCE_PACKAGE"; /** * 外省包裹 */ public static final String OUT_PROVINCE_PACKAGE = "OUT_PROVINCE_PACKAGE"; /** * 省内免邮费包裹 */ public static final String PROVINCE_OVER_FREE_PACKAGE = "PROVINCE_OVER_FREE_PACKAGE"; // =====================================订单短信提醒相关 /** * 短信提醒 */ public static final String MSG_ALERT = "MSG_ALERT"; /** * 短信提醒号码(多个以",分割") */ public static final String MSG_ALERT_MOBILE = "MSG_ALERT_MOBILE"; /** * 短信提醒内容 */ public static final String MSG_ALERT_CONTENT = "MSG_ALERT_CONTENT"; /** * 商户余额不足短信提醒内容 */ public static final String MSG_ALERT_NSF = "MSG_ALERT_NSF"; /** * 待开票 @@ -542,51 +512,14 @@ public static final String REFUND_FAIL_NOTENOUGH = "NOTENOUGH"; // =====================================分销相关 /** * 成为分销商最低额度(查询数据字典时使用) * 运费 */ public static final String BECOMING_DISTRIBUTOR_CONDITION = "BECOMING_DISTRIBUTOR_CONDITION"; public static final String PACKAGE_PRICE = "PACKAGE_PRICE"; /** * 用户等级-分销商 * 免免邮金额 */ public static final Integer USER_VIP_DISTRIBUTOR = 1; /** * 积分业务类型-获得 */ public static final Integer SCORE_BUSINESS_TYPE_GET = 1; /** * 积分业务类型-兑换 */ public static final Integer SCORE_BUSINESS_TYPE_EXCHANGE = 2; /** * 免费配送距离 */ public static final String DELIVERY_DISTANCE = "delivery_distance"; /** * 支持学校列表 */ public static final String SCHOOL = "SCHOOL"; /** * 省运费关系 */ public static final String IN_PROVINCE_PACKAGE_PRICE = "IN_PROVINCE_PACKAGE_PRICE"; public static final String FIRST_OUT_PROVINCE_PACKAGE_PRICE = "FIRST_OUT_PROVINCE_PACKAGE_PRICE"; public static final String SECOND_OUT_PROVINCE_PACKAGE_PRICE = "SECOND_OUT_PROVINCE_PACKAGE_PRICE"; public static final String IN_PROVINCE_PACKAGE_LIST = "IN_PROVINCE_PACKAGE_LIST"; public static final String FIRST_PROVINCE_PACKAGE_LIST = "FIRST_PROVINCE_PACKAGE_LIST"; public static final String SECOND_PROVINCE_PACKAGE_LIST = "SECOND_PROVINCE_PACKAGE_LIST"; /** * 起送费 */ public static final String QSFY = "QSFY"; public static final String FREE_PACKAGE_PRICE = "FREE_PACKAGE_PRICE"; /** zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopAdvertisTypeAction.java
@@ -103,6 +103,7 @@ public @ResponseBody AjaxResult modifyShopAdvertisType(@RequestBody ShopAdvertisType newShopAdvertisType) { SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); if (StringUtils.isNotBlank(newShopAdvertisType.getNodeStyle())) { String style = newShopAdvertisType.getNodeStyle(); style = style.replaceAll("px", "rpx") @@ -116,7 +117,7 @@ newShopAdvertisType.setCreateBy(user.getSuName()); newShopAdvertisType.setUpdateBy(user.getSuName()); newShopAdvertisType.setCompanyId(user.getCompanyId()); shopAdvertisTypeDao.insert(newShopAdvertisType); } else { shopAdvertisTypeDao.updateByModel(newShopAdvertisType); @@ -135,6 +136,7 @@ collect.forEach(ad -> { ad.setCreateBy(user.getSuName()); ad.setUpdateBy(user.getSuName()); ad.setCompanyId(user.getCompanyId()); ad.setTypeId(newShopAdvertisType.getAdtId()); }); zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopCouponAction.java
@@ -14,7 +14,6 @@ import com.matrix.core.tools.WebUtil; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.constance.Dictionary; import com.matrix.system.hive.action.util.QueryUtil; import com.matrix.system.shopXcx.bean.ShopCoupon; import com.matrix.system.shopXcx.bean.ShopProduct; import com.matrix.system.shopXcx.dao.ShopCouponDao; @@ -269,6 +268,7 @@ * @param shopCoupon */ private void productLabeling(ShopCoupon shopCoupon) { SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); Date now = new Date(); Boolean needUpdate = false; //优惠券处于可用状态 @@ -279,6 +279,7 @@ if (shopCoupon.getIsAll() == 1) { ShopProduct productQuery = new ShopProduct(); productQuery.setDelFlag(2); productQuery.setCompanyId(user.getCompanyId()); shopProductList = shopProductDao.selectByModel(productQuery); } else { if (StringUtils.isNotBlank(shopCoupon.getProductIds())) { zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopPageAction.java
@@ -1,30 +1,29 @@ package com.matrix.system.shopXcx.action; import com.matrix.core.anotations.RemoveRequestToken; import com.matrix.core.anotations.SaveRequestToken; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.constance.SystemErrorCode; import com.matrix.core.constance.SystemMessageCode; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.pojo.PaginationVO; import com.matrix.core.tools.ModelUtils; import com.matrix.core.tools.StringUtils; import com.matrix.core.web.BaseAction; import com.matrix.core.constance.SystemErrorCode; import com.matrix.core.anotations.RemoveRequestToken; import com.matrix.core.tools.WebUtil; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.tools.ServiceUtil; import com.matrix.system.hive.action.util.QueryUtil; import com.matrix.system.shopXcx.bean.ShopPage; import com.matrix.system.shopXcx.dao.ShopPageDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import com.matrix.core.exception.GlobleException; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.matrix.core.anotations.SaveRequestToken; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.WebUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.ModelAndView; import java.util.List; import java.util.Map; import com.matrix.system.shopXcx.bean.ShopPage; import org.springframework.web.servlet.ModelAndView; /** * @description 小程序页面 @@ -77,10 +76,11 @@ @RemoveRequestToken @RequestMapping(value = "/addShopPage") public @ResponseBody AjaxResult addShopPage(ShopPage shopPage) { if (serviceUtil.addCheckRepeat("shop_page", "code", shopPage.getCode())) { SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); if (serviceUtil.addCheckRepeatTowColumn("shop_page", "code", shopPage.getCode(),"company_id", user.getCompanyId())) { throw new GlobleException("code重复"); } SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); shopPage.setCreateBy(user.getSuName()); shopPage.setUpdateBy(user.getSuName()); shopPage.setCompanyId(user.getCompanyId()); @@ -103,9 +103,10 @@ @RequestMapping(value = "/modifyShopPage") public @ResponseBody AjaxResult modifyShopPage(ShopPage newShopPage) { ShopPage oldShopPage = WebUtil.getSessionAttribute(BEV); SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); // 校验去重 if (serviceUtil.updateCheckRepeat("shop_page", if (serviceUtil.updateCheckRepeatTowColumn("shop_page", "company_id", user.getCompanyId(), "code", newShopPage.getCode(), "id",newShopPage.getId())) { throw new GlobleException("编号" + newShopPage.getCode() + "重复"); zq-erp/src/main/java/com/matrix/system/shopXcx/api/WxUserAction.java
@@ -95,6 +95,7 @@ bizUser.setOpenId(openId); bizUser.setLastLoginTime(new Date()); bizUser.setUserType(AppConstance.USER_TYPE_CUSTOMER); bizUser.setCompanyId(HostInterceptor.getCompanyId()); bizUserService.add(bizUser); } else { zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java
@@ -10,7 +10,6 @@ import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.StringUtils; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.interceptor.HostInterceptor; import com.matrix.system.constance.Dictionary; import com.matrix.system.hive.bean.ShoppingGoods; import com.matrix.system.hive.dao.ShoppingGoodsDao; @@ -117,7 +116,7 @@ } } //获取当前购物车产品可用的优惠券 List<CouponReceiveInfoVO> usefulCoupon = wxShopCouponService.getCartVoCouponList(addShopOrderPOJO.getShopId(),notCouponuyCart); List<CouponReceiveInfoVO> usefulCoupon = wxShopCouponService.getCartVoCouponList(bizUser.getCompanyId(),notCouponuyCart); //获取用户使用的优惠券 CouponReceiveInfoVO shopCoupon = new CouponReceiveInfoVO(); @@ -151,13 +150,9 @@ } Integer addrId = null; if (shopReceiveAddress != null) { addrId = shopReceiveAddress.getAddrId(); } //得到订单计价说明 DiscountExplain discountExplain = shopOrderService.buildDiscountExplain(cartList, shopCoupon.getReceiveId(), addrId); DiscountExplain discountExplain = shopOrderService.buildDiscountExplain(cartList, shopCoupon.getReceiveId(), bizUser.getCompanyId()); AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, buyCart, buyCart.size()); //结算金额信息 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java
@@ -1,16 +1,14 @@ package com.matrix.system.shopXcx.api.action; import com.matrix.biz.dao.BizUserDao; import com.matrix.component.rabbitmq.RabiitMqTemplate; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.LogUtil; import com.matrix.component.wechat.externalInterface.common.Signature; import com.matrix.component.wechat.externalInterface.common.Util; import com.matrix.component.wechat.externalInterface.protocol.queryProtocol.NotifyData; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.LogUtil; import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.common.interceptor.HostInterceptor; import com.matrix.system.hive.bean.SysVipInfo; import com.matrix.system.hive.dao.SysVipInfoDao; import com.matrix.system.shopXcx.bean.ShopActivitiesGroupJoin; @@ -22,6 +20,7 @@ import com.matrix.system.shopXcx.dao.ShopOrderDao; import com.matrix.system.shopXcx.dao.ShopPayLogDao; import com.matrix.system.shopXcx.mqTask.MQTaskRouting; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; @@ -29,12 +28,10 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.xml.sax.SAXException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; @@ -110,16 +107,25 @@ notityXml.append(inputLine); } request.getReader().close(); // XMl转对象 NotifyData data = (NotifyData) Util.getObjectFromXML(notityXml.toString(), NotifyData.class); LogUtil.info(data.toString()); LogUtil.info("notityXml ---- :{} ", notityXml); // XMl转对象 Object bb = Util.getObjectFromXML(notityXml.toString(), NotifyData.class); NotifyData data = new NotifyData(); BeanUtils.copyProperties(bb,data); LogUtil.info("----return_code = {}", data.getReturn_code()); // 返回状态码 SUCCESS/FAIL if (AppConstance.CODE_SUCCESS.equals(data.getReturn_code())) { orderId = data.getAttach(); // 检验订单状态 ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId)); // 校验签名 BusParameterSettings paySecret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_SECRET, HostInterceptor.getCompanyId()); BusParameterSettings paySecret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_SECRET, order.getCompanyId()); if (Signature.checkIsSignValidFromResponseString(notityXml.toString(),paySecret.getParamValue())) { // 校验业务结果 if (AppConstance.CODE_SUCCESS.equals(data.getResult_code())) { @@ -129,14 +135,13 @@ Double total_fee = Double.parseDouble(data.getTotal_fee()); // 商户订单号 String payNum = data.getOut_trade_no(); orderId = data.getAttach(); LogUtil.info("支付回调关键信息---total_fee:{},payNum:{},orderId:{}", total_fee, payNum, orderId); // 订单ID BigDecimal payMoney = new BigDecimal(total_fee).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP); // 检验订单状态 ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId)); if (order != null && ShopOrder.ORDER_PAY_STATUS_WAIT == order.getPayStatus()) { ShopPayLog payLog = new ShopPayLog(); // TODO 校验支付金额 @@ -219,7 +224,7 @@ threadResult.putInMap("msg", "查询支付信息失败,请联系客服或者刷新支付信息(错误码:003)"); resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "通信标识失败"); } } catch (ParserConfigurationException | IOException | SAXException e) { } catch (Exception e) { LogUtil.error("支付回调签名错误", e); threadResult.putInMap("status", "err"); threadResult.putInMap("msg", "查询支付信息失败,请联系客服或者刷新支付信息(错误码:004)"); @@ -271,4 +276,6 @@ return null; } } zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxRefundRecordAction.java
@@ -1,24 +1,22 @@ package com.matrix.system.shopXcx.api.action; import com.matrix.biz.bean.BizUser; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.component.tools.WxUtils; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.LogUtil; import com.matrix.biz.bean.BizUser; import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.bean.CustomerDataDictionary; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.common.dao.CustomerDataDictionaryDao; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.shopXcx.api.service.WxShopRefundRecordService; import com.matrix.system.shopXcx.api.tools.SMSTools; import com.matrix.system.shopXcx.bean.ShopDeliveryInfo; import com.matrix.system.shopXcx.bean.ShopOrder; import com.matrix.system.shopXcx.bean.ShopRefundRecord; import com.matrix.system.shopXcx.dao.ShopDeliveryInfoDao; import com.matrix.system.shopXcx.dao.ShopOrderDao; import com.matrix.system.shopXcx.dao.ShopRefundRecordDao; import com.matrix.component.tools.WxUtils; import com.matrix.system.shopXcx.api.service.WxShopRefundRecordService; import com.matrix.system.shopXcx.api.tools.SMSTools; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -175,25 +173,6 @@ modifyMap.put("id", orderId); modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_APPLY_MONEYBACK); shopOrderDao.updateByMap(modifyMap); //从数据字典获取需要发送的手机号码和短信提醒内容 BusParameterSettings busParameterSetting1 =busParameterSettingsDao.selectCompanyParamByCode("MSG_ALERT_CONTENT_REFUND",17L); String msg = busParameterSetting1.getParamValue(); //TODO 写死微商城17L公司id BusParameterSettings busParameterSetting= busParameterSettingsDao.selectCompanyParamByCode("MSG_ALERT_MOBILE",17L); String phons = busParameterSetting.getParamValue(); phons.replace(',',','); List<String> result = Arrays.asList(phons.split(",")); if(CollectionUtils.isNotEmpty(result)){ for(String phon : result){ smsTools.sendMsg(phon, msg + "退订回T" ); } } return new AjaxResult(AjaxResult.STATUS_SUCCESS, "保存成功"); } zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShareProductAction.java
@@ -9,7 +9,9 @@ import com.matrix.core.tools.LogUtil; import com.matrix.core.tools.PropertiesUtil; import com.matrix.core.tools.UUIDUtil; import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.hive.dao.SysShopInfoDao; import com.matrix.system.hive.plugin.util.CollectionUtils; import com.matrix.system.shopXcx.api.pojo.QrcodeImgParam; @@ -81,6 +83,9 @@ @Autowired ShopActivitiesSeckillInfoDao shopActivitiesSeckillInfoDao; @Autowired BusParameterSettingsDao busParameterSettingsDao; /** * 生成二维码 */ @@ -137,7 +142,7 @@ qrcodeImgParam = getQrcodeImgParam(loginUser, qrcodeVo); shareQrcord.setProductId(qrcodeVo.getProductId()); } qrcodeImgParam.logo=""; //绘制二维码 drawQrcode(qrcodeImgParam); @@ -186,8 +191,8 @@ qrcodeImgParam.targetImg = baseSavePath + "/" + "wxacode" + "/" + targetImg; qrcodeImgParam.title = "【秒杀】" + shopProduct.getTitle(); qrcodeImgParam.price = "¥" +seckillInfo.getSiPrice(); qrcodeImgParam.logo = "深圳肽妍"; qrcodeImgParam.couponName = loginUser.getNickName() + "邀您体验肽妍产品"; qrcodeImgParam.couponName = loginUser.getNickName() + "邀您体验"; return qrcodeImgParam; } @@ -224,8 +229,8 @@ qrcodeImgParam.targetImg = baseSavePath + "/" + "wxacode" + "/" + targetImg; qrcodeImgParam.title = "【拼团】" + shopProduct.getTitle(); qrcodeImgParam.price = "¥" + price.getGpPrice(); qrcodeImgParam.logo = "深圳肽妍"; qrcodeImgParam.couponName = loginUser.getNickName() + "邀您体验肽妍产品"; qrcodeImgParam.couponName = loginUser.getNickName() + "邀您体验"; return qrcodeImgParam; } @@ -233,6 +238,8 @@ private QrcodeImgParam getQrcodeImgParam(BizUser loginUser, QrcodeVo qrcodeVo) throws Exception { ShopProduct shopProduct = shopProductDao.selectById(qrcodeVo.getProductId()); String qrcodeSavePath = WxacodeUtil.getWxacode(qrcodeVo.getScene(), qrcodeVo.getPath(), UUIDUtil.getRandomID()); @@ -255,9 +262,9 @@ qrcodeImgParam.targetImg = baseSavePath + "/" + "wxacode" + "/" + targetImg; qrcodeImgParam.title = shopProduct.getTitle(); qrcodeImgParam.price = "¥" + shopProduct.getPrice().toString(); qrcodeImgParam.logo = "深圳肽妍"; ShopCoupon shopCoupon = shopProduct.getShopCoupon(); qrcodeImgParam.couponName = loginUser.getNickName() + "邀您体验肽妍产品"; qrcodeImgParam.couponName = loginUser.getNickName() + "邀您体验"; if (shopCoupon != null) { String beginTiem = DateUtil.dateFormatStr(shopCoupon.getBeginTime(), DateUtil.DATE_FORMAT_SPLITE_DD); String endTiem = DateUtil.dateFormatStr(shopCoupon.getEndTime(), DateUtil.DATE_FORMAT_SPLITE_DD); zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesGroupBuyController.java
@@ -4,7 +4,6 @@ import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.core.pojo.AjaxResult; import com.matrix.system.common.interceptor.HostInterceptor; import com.matrix.system.hive.dao.SysVipInfoDao; import com.matrix.system.shopXcx.api.service.WXShopOrderService; import com.matrix.system.shopXcx.api.service.WxShopActivitiesGroupService; import com.matrix.system.shopXcx.api.vo.WxActivitiesGroupBuyVO; @@ -17,8 +16,6 @@ import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.util.Calendar; import java.util.Date; import java.util.List; /** @@ -201,6 +198,7 @@ @PostMapping(value = "/calPrice") public AjaxResult calPrice(@RequestBody CreateGroupBuyDTO createGroupBuyDTO) { BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); ShopActivitiesGroupPrice groupPrice = shopActivitiesGroupPriceDao.selectById(createGroupBuyDTO.getGpId()); // 判断参数中gjId是否为空,若为空则为团长开团。再判断团长价是否为空,如果不为空则拥有团长价 if (createGroupBuyDTO.getGjId() == null) { @@ -212,7 +210,7 @@ } else { createGroupBuyDTO.setPrice(groupPrice.getGpPrice()); } BigDecimal postage = wxShopOrderService.calculationPostage(createGroupBuyDTO.getAddressId(), createGroupBuyDTO.getPrice()); BigDecimal postage = wxShopOrderService.calculationPostage(createGroupBuyDTO.getPrice(),bizUser.getCompanyId()); BigDecimal payPrice = createGroupBuyDTO.getPrice().multiply(BigDecimal.valueOf(createGroupBuyDTO.getCount())).add(postage); AjaxResult ajaxResult = new AjaxResult(AjaxResult.STATUS_SUCCESS, null); ajaxResult.putInMap("billPrice", createGroupBuyDTO.getPrice().multiply(BigDecimal.valueOf(createGroupBuyDTO.getCount()))); zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesSecKillAction.java
@@ -1,5 +1,7 @@ package com.matrix.system.shopXcx.api.action; import com.matrix.biz.bean.BizUser; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.core.pojo.AjaxResult; import com.matrix.system.shopXcx.api.service.WXShopOrderService; import com.matrix.system.shopXcx.api.service.WxShopActivitiesSecKillService; @@ -37,7 +39,10 @@ @Autowired private WXShopOrderService wxShopOrderService; @Autowired private WxShopActivitiesSecKillService wxShopActivitiesSecKillService; private WxShopActivitiesSecKillService wxShopActvitiesSecKillService; @Autowired private RedisUserLoginUtils redisUserLoginUtils; /** @@ -106,12 +111,13 @@ */ @PostMapping(value = "/calSecKillPrice") public AjaxResult calSecKillPrice(@RequestBody SecKillVO secKillVO) { BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); ShopActivitiesSeckillInfo seckillInfo = shopActivitiesSeckillInfoDao.selectById(secKillVO.getId()); if (seckillInfo == null) { return AjaxResult.buildFailInstance("参数有误"); } BigDecimal postage = wxShopOrderService.calculationPostage(secKillVO.getAddressId(), seckillInfo.getSiPrice()); BigDecimal postage = wxShopOrderService.calculationPostage(seckillInfo.getSiPrice(),bizUser.getCompanyId()); BigDecimal payPrice = seckillInfo.getSiPrice().multiply(BigDecimal.valueOf(secKillVO.getCount())).add(postage); AjaxResult ajaxResult = new AjaxResult(AjaxResult.STATUS_SUCCESS, null); ajaxResult.putInMap("totalPrice", payPrice); @@ -128,6 +134,6 @@ */ @PostMapping(value = "/createSecKill") public AjaxResult createSecKill(@RequestBody CreateSecKillDTO secKillDTO) throws Exception { return wxShopActivitiesSecKillService.createSecKillOrder(secKillDTO); return wxShopActvitiesSecKillService.createSecKillOrder(secKillDTO); } } zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopCouponAction.java
@@ -1,11 +1,11 @@ package com.matrix.system.shopXcx.api.action; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.pojo.PaginationVO; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.system.shopXcx.dao.ShopCouponDao; import com.matrix.system.common.interceptor.HostInterceptor; import com.matrix.system.shopXcx.api.service.WxShopCouponService; import com.matrix.system.shopXcx.dao.ShopCouponDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @@ -58,11 +58,11 @@ * * @return */ @RequestMapping(value = "getMyCouponInfoByStatus/{shopId}/{status}") @RequestMapping(value = "getMyCouponInfoByStatus/{status}") @ResponseBody public AjaxResult getMyCouponInfo(@PathVariable("shopId") Long shopId,@PathVariable("status") Integer status, @RequestBody PaginationVO pageVo) { public AjaxResult getMyCouponInfo(@PathVariable("status") Integer status, @RequestBody PaginationVO pageVo) { return shopCouponService.getMyCouponInfoByStatus(shopId,status, pageVo); return shopCouponService.getMyCouponInfoByStatus(HostInterceptor.getCompanyId(),status, pageVo); } /** @@ -76,10 +76,10 @@ return new AjaxResult(AjaxResult.STATUS_SUCCESS, shopCouponService.getCouponListByProductId(productId)); } @GetMapping(value = "getCouponListByTag/{shopId}/{tag}") @GetMapping(value = "getCouponListByTag/{tag}") @ResponseBody public AjaxResult getCouponListByTag(@PathVariable("tag") String tag,@PathVariable("shopId") Long shopId) { return shopCouponService.getCouponListByTag(tag,shopId); public AjaxResult getCouponListByTag(@PathVariable("tag") String tag) { return shopCouponService.getCouponListByTag(tag, HostInterceptor.getCompanyId()); } } zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/ShoppingCartService.java
@@ -1,19 +1,14 @@ package com.matrix.system.shopXcx.api.service; import com.matrix.core.tools.LogUtil; import com.matrix.biz.bean.BizUser; import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.bean.CustomerDataDictionary; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.common.dao.CustomerDataDictionaryDao; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.system.common.constance.AppConstance; import com.matrix.core.tools.LogUtil; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.shopXcx.api.vo.ShopCartBillVo; import com.matrix.system.shopXcx.api.vo.ShopCartVo; import com.matrix.system.shopXcx.bean.ShopCoupon; import com.matrix.system.shopXcx.bean.ShopShoppingCart; import com.matrix.system.shopXcx.dao.ShopShoppingCartDao; import com.matrix.system.shopXcx.api.vo.ShopCartBillVo; import com.matrix.system.shopXcx.api.vo.ShopCartVo; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -108,13 +103,9 @@ // 1表示没有优惠的默认分组 ShopCartVo def = new ShopCartVo(); /** * 同城配送标题 * //DataDictionary qsfy = dataDictionaryDao.selectByTypeCode(AppConstance.QSFY); * //def.setMsg("2公里内满" + qsfy.getValue() + "元免配送费"); */ def.setMsg("肽研官方商城"); def.setMsg("商城"); def.setCartList(new ArrayList<>()); // 组合默认分组 cartList.add(def); @@ -316,15 +307,9 @@ } } } else { BusParameterSettings qsfy= busParameterSettingsDao.selectCompanyParamByCode(AppConstance.IN_PROVINCE_PACKAGE_LIST,17L); shopCartVo.setSubtotal(selectSum); shopCartVo.setSrcPrice(selectSum); if (selectSum.compareTo(new BigDecimal(qsfy.getParamValue())) < 0) { shopCartVo.setSatisfactionCoupon(false); } else { shopCartVo.setSubtotal(selectSum); shopCartVo.setSrcPrice(selectSum); shopCartVo.setSatisfactionCoupon(true); } } } } zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java
@@ -18,7 +18,7 @@ BigDecimal calculationPostage(Integer addressId, BigDecimal payPrice); BigDecimal calculationPostage(BigDecimal payPrice,Long companyId); /** * 创建订单 @@ -93,5 +93,5 @@ */ AjaxResult updateStockAndVolumeById(Integer orderId); DiscountExplain buildDiscountExplain(List<ShopCartVo> cartList, Integer id, Integer addrId); DiscountExplain buildDiscountExplain(List<ShopCartVo> cartList, Integer id, Long companyId); } zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WxShopCouponService.java
@@ -18,7 +18,7 @@ * 根据购物车选中的产品 * @return */ public List<CouponReceiveInfoVO> getCartVoCouponList(Long shopId,List<ShopShoppingCart> shopShoppingCarts); public List<CouponReceiveInfoVO> getCartVoCouponList(Long companyId,List<ShopShoppingCart> shopShoppingCarts); /** @@ -42,12 +42,12 @@ * 根据状态获取我的优惠券 * * * @param shopId * @param companyId * @param status * @param pageVo * @return */ AjaxResult getMyCouponInfoByStatus(Long shopId, Integer status, PaginationVO pageVo); AjaxResult getMyCouponInfoByStatus(Long companyId, Integer status, PaginationVO pageVo); /** * 根据产品ID获取优惠券列表 @@ -62,10 +62,10 @@ * 根据标签获取优惠券列表 * * @param tag * @param shopId * @param companyId * @return */ AjaxResult getCouponListByTag(String tag, Long shopId); AjaxResult getCouponListByTag(String tag, Long companyId); /** * 根据产品id查询该产品符合的优惠活动 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java
@@ -3,10 +3,6 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.matrix.biz.bean.BizUser; import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.bean.CustomerDataDictionary; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.common.dao.CustomerDataDictionaryDao; import com.matrix.component.rabbitmq.RabiitMqTemplate; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.component.tools.WxUtils; @@ -16,7 +12,10 @@ import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.LogUtil; import com.matrix.core.tools.StringUtils; import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.common.dao.CustomerDataDictionaryDao; import com.matrix.system.common.interceptor.HostInterceptor; import com.matrix.system.constance.Dictionary; import com.matrix.system.hive.bean.ShoppingGoods; @@ -99,52 +98,20 @@ private BusParameterSettingsDao busParameterSettingsDao; @Override public BigDecimal calculationPostage(Integer addressId, BigDecimal payPrice) { public BigDecimal calculationPostage(BigDecimal payPrice,Long companyId) { BigDecimal postage = BigDecimal.ZERO; if (addressId != null) { ShopReceiveAddress shopReceiveAddress = shopReceiveAddressDao.selectById(addressId); BusParameterSettings sn= busParameterSettingsDao.selectCompanyParamByCode(AppConstance.IN_PROVINCE_PACKAGE_LIST,17L); BusParameterSettings pydq= busParameterSettingsDao.selectCompanyParamByCode(AppConstance.SECOND_PROVINCE_PACKAGE_LIST,17L); if (sn.getParamValue().indexOf(shopReceiveAddress.getAddrProvince()) > -1) { //省内邮费计算 postage = getPostageByDataBictionary(AppConstance.IN_PROVINCE_PACKAGE_PRICE, payPrice); } else if (pydq.getParamValue().indexOf(shopReceiveAddress.getAddrProvince()) > -1) { //偏远地区 postage = getPostageByDataBictionary(AppConstance.SECOND_OUT_PROVINCE_PACKAGE_PRICE, payPrice); } else { //其他地区 postage = getPostageByDataBictionary(AppConstance.FIRST_OUT_PROVINCE_PACKAGE_PRICE, payPrice); BusParameterSettings yf = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.PACKAGE_PRICE, companyId); BusParameterSettings myje = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.FREE_PACKAGE_PRICE, companyId); if(yf!=null&&myje!=null){ if (Double.parseDouble(myje.getParamValue()) > payPrice.doubleValue()) { postage = new BigDecimal(yf.getParamValue()); } } return postage; } //todo 根据数据字典计算运费 运费设置为0 后面再改配置在改计算规则 private BigDecimal getPostageByDataBictionary(String code, BigDecimal payPrice) { /*CustomerDataDictionary dd = dataDictionaryDao.selectByTypeCode(code); BigDecimal postage = BigDecimal.ZERO; if (StringUtils.isNotBlank(dd.getValue())) { if (StringUtils.isNotBlank(dd.getExtValue()) && payPrice.compareTo(new BigDecimal(dd.getExtValue())) >= 0) { //达到条件免邮 postage = BigDecimal.ZERO; } else { postage = new BigDecimal(dd.getValue()); } }*/ return BigDecimal.ZERO; } /** @@ -190,13 +157,14 @@ } //计算订单优惠信息 DiscountExplain discountExplain = buildDiscountExplain(cartList, addShopOrderPOJO.getCouponReceiveId(), shopReceiveAddress.getAddrId()); DiscountExplain discountExplain = buildDiscountExplain(cartList, addShopOrderPOJO.getCouponReceiveId(), bizUser.getCompanyId()); ShopOrder shopOrder = new ShopOrder(); shopOrder.setCompanyId(bizUser.getCompanyId()); shopOrder.setStoreId(Integer.parseInt(addShopOrderPOJO.getShopId().toString())); shopOrder.setOrderType(ShopOrder.ORDER_TYPE_SERVICE); //默认设置为产品类型 shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS); List<ShopOrderDetails> details = new ArrayList<>(); Integer cartCount = 0; @@ -308,7 +276,7 @@ } @Override public DiscountExplain buildDiscountExplain(List<ShopCartVo> cartList, Integer receiveId, Integer receiveAddrId) { public DiscountExplain buildDiscountExplain(List<ShopCartVo> cartList, Integer receiveId, Long companyId) { ShopCartBillVo shopCartBill = shoppingCartService.buildShopCartBillVo(cartList); DiscountExplain discountExplain = new DiscountExplain(); discountExplain.setActivity(shopCartBill.getBillCouponTotal()); @@ -325,7 +293,7 @@ } } discountExplain.setPostage(calculationPostage(receiveAddrId, discountExplain.getPayPrice())); discountExplain.setPostage(calculationPostage(discountExplain.getPayPrice(),companyId)); //计算实际支付 discountExplain.setPayPrice(discountExplain.getPayPrice().add(discountExplain.getPostage())); zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesGroupServiceImpl.java
@@ -8,7 +8,6 @@ import com.matrix.component.wechat.externalInterface.protocol.paramProtocol.BrandWCPayRequestData; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.LogUtil; import com.matrix.core.tools.StringUtils; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.constance.Dictionary; @@ -318,8 +317,9 @@ if (shopReceiveAddress == null) { throw new GlobleException("请选择正确的收获地址"); } BizUser user=redisUserLoginUtils.getLoginUser(BizUser.class); ShopOrder shopOrder = new ShopOrder(); shopOrder.setCompanyId(user.getCompanyId()); shopOrder.setStoreId(Integer.parseInt(createGroupBuyDTO.getShopId().toString())); shopOrder.setOrderType(ShopOrder.ORDER_TYPE_SERVICE); @@ -389,7 +389,7 @@ shopOrder.setPayResult(ShopOrder.ORDER_WX_STATUS_WAIT_PAY); //如果没有提交购买方式或配送方式不是物流 //获取邮费 BigDecimal postPrice = wxShopOrderService.calculationPostage(createGroupBuyDTO.getAddressId(), createGroupBuyDTO.getPrice()); BigDecimal postPrice = wxShopOrderService.calculationPostage(createGroupBuyDTO.getPrice(),user.getCompanyId()); shopOrder.setPostage(postPrice); BigDecimal payPrice = createGroupBuyDTO.getPrice().multiply(BigDecimal.valueOf(createGroupBuyDTO.getCount())).add(shopOrder.getPostage()); shopOrder.setOrderMoney(payPrice); zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesSecKillServiceImpl.java
@@ -126,6 +126,7 @@ } private ShopOrder createOrder(CreateSecKillDTO secKillDTO) { BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); ShopReceiveAddress shopReceiveAddress = shopReceiveAddressDao.selectById(secKillDTO.getAddressId()); if (shopReceiveAddress == null) { throw new GlobleException("请选择正确的收获地址"); @@ -177,6 +178,7 @@ shopOrder.setUpdateBy("微信小程序生成"); shopOrder.setCommodityPrice(secKillDTO.getPrice()); shopOrder.setPurchaseQuantity(1); shopOrder.setCompanyId(bizUser.getCompanyId()); //购买方式 shopOrder.setShippingMethod(secKillDTO.getShippingMethod()); //生成订单号 @@ -201,7 +203,7 @@ shopOrder.setPayResult(ShopOrder.ORDER_WX_STATUS_WAIT_PAY); //如果没有提交购买方式或配送方式不是物流 //获取邮费 BigDecimal postPrice = wxShopOrderService.calculationPostage(secKillDTO.getAddressId(), secKillDTO.getPrice()); BigDecimal postPrice = wxShopOrderService.calculationPostage(secKillDTO.getPrice(),bizUser.getCompanyId()); shopOrder.setPostage(postPrice); BigDecimal payPrice = secKillDTO.getPrice().multiply(BigDecimal.valueOf(secKillDTO.getCount())).add(shopOrder.getPostage()); shopOrder.setOrderMoney(payPrice); zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopCouponServiceImpl.java
@@ -8,14 +8,8 @@ import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.shopXcx.bean.ShopCoupon; import com.matrix.system.shopXcx.bean.ShopCouponRecord; import com.matrix.system.shopXcx.bean.ShopProductAttrRef; import com.matrix.system.shopXcx.bean.ShopShoppingCart; import com.matrix.system.shopXcx.dao.ShopCouponDao; import com.matrix.system.shopXcx.dao.ShopCouponRecordDao; import com.matrix.system.shopXcx.dao.ShopProductAttrRefDao; import com.matrix.system.shopXcx.dao.ShopReceiveAddressDao; import com.matrix.system.shopXcx.bean.*; import com.matrix.system.shopXcx.dao.*; import com.matrix.system.shopXcx.api.service.WxShopCouponService; import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil; import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil; @@ -51,13 +45,16 @@ @Autowired private WxShopCouponUtil wxShopCouponUtil; @Autowired private ShopProductDao productDao; /** * 根据购物车选中的产品,计算合适的优惠券 * * @return */ public List<CouponReceiveInfoVO> getCartVoCouponList(Long shopId,List<ShopShoppingCart> shopShoppingCarts) { public List<CouponReceiveInfoVO> getCartVoCouponList(Long companyId,List<ShopShoppingCart> shopShoppingCarts) { //可用优惠券列表 List<CouponReceiveInfoVO> shopCoupons = new ArrayList<>(); @@ -65,7 +62,7 @@ BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); //1.找到用户所有的优惠券 List<CouponReceiveInfoVO> userAllCoupon = shopCouponRecordDao.selectMyCouponByStatus(shopId, bizUser.getOpenId(), AppConstance.MY_COUPON_NOT_USE, List<CouponReceiveInfoVO> userAllCoupon = shopCouponRecordDao.selectMyCouponByStatus(companyId, bizUser.getOpenId(), AppConstance.MY_COUPON_NOT_USE, null); if (CollectionUtils.isNotEmpty(userAllCoupon)) { //根据优惠力度排序,优惠力度大的先参与计算 @@ -215,20 +212,20 @@ * 根据订单状态查询优惠券列表 * * * @param shopId * @param companyId * @param status 1=已使用;2=未使用;3=过期 * @return */ @Override public AjaxResult getMyCouponInfoByStatus(Long shopId, Integer status, PaginationVO pageVo) { public AjaxResult getMyCouponInfoByStatus(Long companyId, Integer status, PaginationVO pageVo) { BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); // 如果查询使用或未使用状态的优惠券列表 if (AppConstance.MY_COUPON_USE.equals(status) || AppConstance.MY_COUPON_NOT_USE.equals(status)) { List<CouponReceiveInfoVO> list = shopCouponRecordDao.selectMyCouponByStatus(shopId,bizUser.getOpenId(), status, List<CouponReceiveInfoVO> list = shopCouponRecordDao.selectMyCouponByStatus(companyId,bizUser.getOpenId(), status, pageVo); return new AjaxResult(AjaxResult.STATUS_SUCCESS, list); } List<CouponReceiveInfoVO> list = shopCouponRecordDao.selectMyPastCoupon(shopId,bizUser.getOpenId(), pageVo); List<CouponReceiveInfoVO> list = shopCouponRecordDao.selectMyPastCoupon(companyId,bizUser.getOpenId(), pageVo); return new AjaxResult(AjaxResult.STATUS_SUCCESS, list); } @@ -290,7 +287,8 @@ attrIds.addAll(ids); } } List<ShopCoupon> list = shopCouponDao.selectHdListByProductId(productId, attrIds); ShopProduct shopProduct = productDao.selectById(productId); List<ShopCoupon> list = shopCouponDao.selectHdListByProductId(productId, attrIds,shopProduct.getCompanyId()); return list; } @@ -305,10 +303,10 @@ * @return */ @Override public AjaxResult getCouponListByTag(String tag, Long shopId) { public AjaxResult getCouponListByTag(String tag, Long companyId) { BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); boolean newPeople = wxShopCouponUtil.verifyIsNewPeople(bizUser.getOpenId()); List<ShopCoupon> couponList = shopCouponDao.selectCouponListByTag(newPeople, bizUser.getOpenId(), tag,shopId); List<ShopCoupon> couponList = shopCouponDao.selectCouponListByTag(newPeople, bizUser.getOpenId(), tag,companyId); AjaxResult res = new AjaxResult(AjaxResult.STATUS_SUCCESS, couponList); res.putInMap("isNewPeople", newPeople); return res; zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java
@@ -1,20 +1,18 @@ package com.matrix.system.shopXcx.api.service.impl; import com.alibaba.fastjson.JSON; import com.matrix.core.constance.SystemErrorCode; import com.matrix.component.tools.HttpCurlUtil; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.LogUtil; import com.matrix.core.tools.StringUtils; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService; import com.matrix.system.shopXcx.api.vo.LogisticsInfoVo; import com.matrix.system.shopXcx.bean.ShopDeliveryInfo; import com.matrix.system.shopXcx.bean.ShopLogisticsInfo; import com.matrix.system.shopXcx.dao.ShopDeliveryInfoDao; import com.matrix.system.shopXcx.dao.ShopLogisticsInfoDao; import com.matrix.component.tools.HttpCurlUtil; import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService; import com.matrix.system.shopXcx.api.vo.LogisticsInfoVo; import com.matrix.system.shopXcx.api.vo.SfLogisticsInfoVo; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -145,12 +143,11 @@ } } } else { throw new GlobleException(SystemErrorCode.REQUEST_INVALID, logisticsInfoVo.getReason()); throw new GlobleException(logisticsInfoVo.getReason()); } } catch (Exception e) { LogUtil.error("物流信息查询失败", e); throw new GlobleException(SystemErrorCode.REQUEST_INVALID); throw new GlobleException("物流信息查询失败"); } List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId()); result.setStatus(AjaxResult.STATUS_SUCCESS); zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopCouponDao.java
@@ -45,7 +45,7 @@ @Param("productId") Integer productId, @Param("attrIds") List<String> attrIds); List<ShopCoupon> selectCouponListByTag(@Param("isNewPeople") boolean isNewPeople, @Param("userId") String userId, @Param("tag") String tag,@Param("shopId") Long shopId); @Param("tag") String tag,@Param("companyId") Long companyId); public int updateStateByStateAndIds(@Param("list") List<String> list, @Param("state") int state); @@ -55,7 +55,7 @@ ShopCoupon selectByIdAndUserId(@Param("id") Integer id, @Param("userId") String userId); public List<ShopCoupon> selectHdListByProductId(@Param("productId") Integer productId, @Param("attrIds") List<String> attrIds); public List<ShopCoupon> selectHdListByProductId(@Param("productId") Integer productId, @Param("attrIds") List<String> attrIds, @Param("companyId")Long companyId); ShopCoupon getCouponByTitle(@Param("title")String title, @Param("companyId")Long companyId); } zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopCouponRecordDao.java
@@ -43,9 +43,9 @@ CouponReceiveInfoVO selectMyCouponByReceiveId(@Param("receiveId") Integer receiveId); List<CouponReceiveInfoVO> selectMyCouponByStatus(@Param("shopId") Long shopId, @Param("userId") String userId, @Param("status") Integer status, List<CouponReceiveInfoVO> selectMyCouponByStatus(@Param("companyId") Long shopId, @Param("userId") String userId, @Param("status") Integer status, @Param("pageVo") PaginationVO pageVo); List<CouponReceiveInfoVO> selectMyPastCoupon(@Param("shopId")Long shopId, @Param("userId") String userId, @Param("pageVo") PaginationVO pageVo); List<CouponReceiveInfoVO> selectMyPastCoupon(@Param("companyId")Long shopId, @Param("userId") String userId, @Param("pageVo") PaginationVO pageVo); } zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java
@@ -26,7 +26,6 @@ import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -82,134 +81,146 @@ @Transactional(rollbackFor = Exception.class) public void createOrder(ShopOrder orderDto) { BizUser bizUser = bizUserService.findByOpenId(orderDto.getUserId()); SysOrder order = new SysOrder(); SysVipInfo vipInfo = vipDao.selectByPhone(bizUser.getPhoneNumber()); if(SysVipInfo.UNDEAL_VIP==vipInfo.getIsDeal()){ //非成交客户下单更新客户为成交客户 vipInfo.setIsDeal(SysVipInfo.DEAL_VIP); vipDao.update(vipInfo); } //获取订单归属门店 order.setCompanyId(vipInfo.getCompanyId()); order.setShopId(Long.parseLong(orderDto.getStoreId()+"")); //同步的订单订单编号保持一致 order.setOrderNo(orderDto.getOrderNo()); order.setVipId(vipInfo.getId()); order.setOrderTime(new Date()); order.setRemark(AppConstance.WX_ORDER_FLAG); order.setStaffId(vipInfo.getStaffId()); order.setIsCross(2 + ""); order.setStatu(Dictionary.ORDER_STATU_YFK); order.setCardPay(0.00); order.setCashPay(orderDto.getOrderMoney().doubleValue()); order.setTotal(orderDto.getOrderMoney().doubleValue()); order.setZkTotal(orderDto.getOrderMoney().doubleValue()); order.setPayTime(new Date()); order.setArrears(0); int i = sysOrderDao.insert(order); // 创建订单明细,并计算总价与折扣总价 // 总价 double total = 0; double zkTotal = 0; int count = 0; // 设置订单条目 //判断是否存在需要同步的产品,只有绑定了erp中产品的才同步 boolean needTb=false; for (ShopOrderDetails orderItemDto : orderDto.getDetails()) { ShopSku shopSku = shopSkuDao.selectById(orderItemDto.getsId()); if (StringUtils.isBlank(shopSku.getStockCode())) { LogUtil.warn("销售产品未绑定erp中的产品,无法进行同步"); } String goodsCode =shopSku.getStockCode(); ShoppingGoods shoppingGoods = shoppingGoodsService.findById(Long.parseLong(goodsCode)); if (shoppingGoods == null) { LogUtil.warn("无效的商品id{}", shopSku.getAtrid()); } SysOrderItem orderItem = new SysOrderItem(); orderItem.setOrderId(order.getId()); orderItem.setCount(orderItemDto.getCount()); orderItem.setIsFree(orderItemDto.getPrice().doubleValue() > 0 ? "否" : "是"); orderItem.setType(shoppingGoods.getGoodType()); orderItem.setStatus(Dictionary.ORDER_STATU_YFK); orderItem.setPrice(orderItemDto.getPrice().doubleValue()); orderItem.setZkPrice(orderItemDto.getPrice().doubleValue()); orderItem.setGoodsId(shoppingGoods.getId()); // 设置对应产品的id switch (shoppingGoods.getGoodType()) { case Dictionary.SHOPPING_GOODS_TYPE_JJCP: orderItemDao.insert(orderItem); break; // 购买的是单个项目 case Dictionary.SHOPPING_GOODS_TYPE_XM: orderItemDao.insert(orderItem); break; case Dictionary.SHOPPING_GOODS_TYPE_TC: // 每一个套餐都看成一个单独的订单条目 count = orderItem.getCount(); for (int j = 0; j < count; j++) { orderItem.setCount(1); orderItem.setId(null); orderItemDao.insert(orderItem); } break; case Dictionary.SHOPPING_GOODS_TYPE_CZK: // 新增明细 orderItem.setGoodsId(shoppingGoods.getId()); // 每一个充值卡都看成一个单独的订单条目 count = orderItem.getCount(); for (int j = 0; j < count; j++) { orderItem.setCount(1); orderItem.setId(null); orderItemDao.insert(orderItem); } break; case Dictionary.SHOPPING_GOODS_TYPE_ZHK: // 新增明细 orderItem.setGoodsId(shoppingGoods.getId()); // 每一个充值卡都看成一个单独的订单条目 count = orderItem.getCount(); for (int j = 0; j < count; j++) { orderItem.setCount(1); orderItem.setId(null); orderItemDao.insert(orderItem); } break; if (StringUtils.isNotBlank(shopSku.getStockCode())) { needTb=true; } } // 处理收款逻辑 SysOrder sourceOrder = sysOrderDao.selectById(order.getId()); sourceOrder.setItems(orderItemDao.selectByOrderId(order.getId())); // 设置会员充值卡使用情况 orderService.addMoneyCardUse(sourceOrder); if(needTb){ // 改变客户项目套餐使用情况 orderService.addTaocanProj(sourceOrder); BizUser bizUser = bizUserService.findByOpenId(orderDto.getUserId()); SysOrder order = new SysOrder(); //TODO 根据公司id区分 SysVipInfo vipInfo = vipDao.selectByPhone(bizUser.getPhoneNumber()); if(SysVipInfo.UNDEAL_VIP==vipInfo.getIsDeal()){ //非成交客户下单更新客户为成交客户 vipInfo.setIsDeal(SysVipInfo.DEAL_VIP); vipDao.update(vipInfo); } // 设置销量 orderService.setShopSelCount(sourceOrder); //获取订单归属门店 order.setCompanyId(orderDto.getCompanyId()); order.setShopId(Long.parseLong(orderDto.getStoreId()+"")); //同步的订单订单编号保持一致 order.setOrderNo(orderDto.getOrderNo()); order.setVipId(vipInfo.getId()); order.setOrderTime(new Date()); order.setRemark(AppConstance.WX_ORDER_FLAG); order.setStaffId(vipInfo.getStaffId()); order.setIsCross(2 + ""); order.setStatu(Dictionary.ORDER_STATU_YFK); order.setCardPay(0.00); order.setCashPay(orderDto.getOrderMoney().doubleValue()); order.setTotal(orderDto.getOrderMoney().doubleValue()); order.setZkTotal(orderDto.getOrderMoney().doubleValue()); order.setPayTime(new Date()); order.setArrears(0); int i = sysOrderDao.insert(order); // 创建订单明细,并计算总价与折扣总价 int count = 0; // 设置订单条目 for (ShopOrderDetails orderItemDto : orderDto.getDetails()) { SysOrderFlow flow = new SysOrderFlow(); flow.setFlowNo(codeService.getFlowCode() + "-" + i); Long goodsId = sourceOrder.getItems().get(0).getGoodsId(); ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId); flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品"); flow.setOrderId(sourceOrder.getId()); flow.setVipId(sourceOrder.getVipId()); flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY); ShopSku shopSku = shopSkuDao.selectById(orderItemDto.getsId()); flow.setAmount(orderDto.getOrderMoney()); flow.setPayMethod("微信"); if (StringUtils.isBlank(shopSku.getStockCode())) { LogUtil.warn("销售产品未绑定erp中的产品,无法进行同步"); } flow.setShopId(sourceOrder.getShopId()); flow.setCompanyId(sourceOrder.getCompanyId()); sysOrderFlowDao.insert(flow); String goodsCode =shopSku.getStockCode(); ShoppingGoods shoppingGoods = shoppingGoodsService.findById(Long.parseLong(goodsCode)); if (shoppingGoods == null) { LogUtil.warn("无效的商品id{}", shopSku.getAtrid()); } SysOrderItem orderItem = new SysOrderItem(); orderItem.setOrderId(order.getId()); orderItem.setCount(orderItemDto.getCount()); orderItem.setIsFree(orderItemDto.getPrice().doubleValue() > 0 ? "否" : "是"); orderItem.setType(shoppingGoods.getGoodType()); orderItem.setStatus(Dictionary.ORDER_STATU_YFK); orderItem.setPrice(orderItemDto.getPrice().doubleValue()); orderItem.setZkPrice(orderItemDto.getPrice().doubleValue()); orderItem.setGoodsId(shoppingGoods.getId()); // 设置对应产品的id switch (shoppingGoods.getGoodType()) { case Dictionary.SHOPPING_GOODS_TYPE_JJCP: orderItemDao.insert(orderItem); break; // 购买的是单个项目 case Dictionary.SHOPPING_GOODS_TYPE_XM: orderItemDao.insert(orderItem); break; case Dictionary.SHOPPING_GOODS_TYPE_TC: // 每一个套餐都看成一个单独的订单条目 count = orderItem.getCount(); for (int j = 0; j < count; j++) { orderItem.setCount(1); orderItem.setId(null); orderItemDao.insert(orderItem); } break; case Dictionary.SHOPPING_GOODS_TYPE_CZK: // 新增明细 orderItem.setGoodsId(shoppingGoods.getId()); // 每一个充值卡都看成一个单独的订单条目 count = orderItem.getCount(); for (int j = 0; j < count; j++) { orderItem.setCount(1); orderItem.setId(null); orderItemDao.insert(orderItem); } break; case Dictionary.SHOPPING_GOODS_TYPE_ZHK: // 新增明细 orderItem.setGoodsId(shoppingGoods.getId()); // 每一个充值卡都看成一个单独的订单条目 count = orderItem.getCount(); for (int j = 0; j < count; j++) { orderItem.setCount(1); orderItem.setId(null); orderItemDao.insert(orderItem); } break; } } // 处理收款逻辑 SysOrder sourceOrder = sysOrderDao.selectById(order.getId()); sourceOrder.setItems(orderItemDao.selectByOrderId(order.getId())); // 设置会员充值卡使用情况 orderService.addMoneyCardUse(sourceOrder); // 改变客户项目套餐使用情况 orderService.addTaocanProj(sourceOrder); // 设置销量 orderService.setShopSelCount(sourceOrder); SysOrderFlow flow = new SysOrderFlow(); flow.setFlowNo(codeService.getFlowCode() + "-" + i); Long goodsId = sourceOrder.getItems().get(0).getGoodsId(); ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId); flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品"); flow.setOrderId(sourceOrder.getId()); flow.setVipId(sourceOrder.getVipId()); flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY); flow.setAmount(orderDto.getOrderMoney()); flow.setPayMethod("微信"); flow.setShopId(sourceOrder.getShopId()); flow.setCompanyId(sourceOrder.getCompanyId()); sysOrderFlowDao.insert(flow); }else{ LogUtil.info("不存在需要同步的产品"); } } @@ -219,14 +230,14 @@ @Override public void handle(String consumerTag, Delivery message) throws IOException { String orderId = new String(message.getBody(), "UTF-8"); LogUtil.debug("收到创建订单任务orderId={}", orderId); //获取订单信息 ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId)); //获取订单详情 List<ShopOrderDetails> orderDetails = shopOrderDetailsDao.selectByOrderId(Integer.valueOf(orderId)); order.setDetails(orderDetails); createOrder(order); String orderId = new String(message.getBody(), "UTF-8"); LogUtil.debug("收到创建订单任务orderId={}", orderId); //获取订单信息 ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId)); //获取订单详情 List<ShopOrderDetails> orderDetails = shopOrderDetailsDao.selectByOrderId(Integer.valueOf(orderId)); order.setDetails(orderDetails); createOrder(order); } } zq-erp/src/main/resources/config/application.properties
@@ -4,13 +4,10 @@ #线上测试环境 #spring.datasource.username=ct_test #spring.datasource.password=123456 #spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 spring.datasource.username=ct_test spring.datasource.password=123456 spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 spring.datasource.username=chuhuan spring.datasource.password=chuhuan spring.datasource.url=jdbc:mysql://121.37.162.173:3306/hive_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopCouponDao.xml
@@ -526,6 +526,7 @@ <result property="tag" column="tag"/> <result property="isUsing" column="is_using"/> <result property="kind" column="kind"/> <result property="companyId" column="company_id"/> </resultMap> <select id="selectUsableCouponByProductInfo" resultMap="WxShopCouponMap"> @@ -561,7 +562,8 @@ select * from shop_coupon where kind=2 and now() >= begin_time and end_time >= now() company_id=#{companyId} and kind=2 and now() >= begin_time and end_time >= now() and is_open = 1 and (is_all = 1 or ( @@ -584,7 +586,7 @@ ifnull(scr.is_using, 0) is_using from shop_coupon sc left join shop_coupon_record scr on sc.id = scr.c_id and user_id = #{userId} where sc.shop_id=#{shopId} and sc.kind=1 and now() >= begin_time and end_time >= now() and is_open = 1 where sc.company_id=#{companyId} and sc.kind=1 and now() >= begin_time and end_time >= now() and is_open = 1 <!--<if test="!isNewPeople">--> <!--and get_limit = 1--> <!--</if>--> zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopCouponRecordDao.xml
@@ -270,7 +270,7 @@ sc.min_amount minAmount, sc.offset_amount offsetAmount, sc.is_all isAll, sc.product_ids productIds, sc.attr_ids attrIds, scr.is_using isUsing from shop_coupon sc, shop_coupon_record scr where sc.shop_id=#{shopId} and sc.id = scr.c_id and scr.user_id = #{userId} and is_using = #{status} where sc.company_id=#{companyId} and sc.id = scr.c_id and scr.user_id = #{userId} and is_using = #{status} and is_open = 1 <if test="status == 2"> and now() >= begin_time and end_time >= now() @@ -296,7 +296,7 @@ sc.min_amount minAmount, sc.offset_amount offsetAmount, sc.is_all isAll, sc.product_ids productIds, sc.attr_ids attrIds, scr.is_using isUsing from shop_coupon sc, shop_coupon_record scr where sc.shop_id=#{shopId} and sc.id = scr.c_id and scr.user_id = #{userId} where sc.company_id=#{companyId} and sc.id = scr.c_id and scr.user_id = #{userId} and (isnull(order_id) or order_id = 0) and now() > end_time and is_open = 1 <if test="pageVo != null"><!-- 判断pageVo对象是否为空 --> zq-erp/src/main/resources/templates/views/admin/shop/shopCoupon-form.html
@@ -143,9 +143,14 @@ <!--<span class="text-danger">*</span>--> </label> <div class="col-sm-4"> <input autocomplete="off" type="text" class="form-control" name="tag" ignore="ignore" th:value="${obj.tag}"nullmsg="优惠券名称不能为空"> <select class="form-control" dataType="*" nullmsg="请选择" name="tag"> <!-- <option value=''>请选择</option>--> <option value='zqyhq' th:if="${obj.tag == 'zqyhq'}" selected>专区券</option> <option value='zqyhq' th:unless="${obj.tag == 'zqyhq'}">专区券</option> <option value='gmyhq' th:if="${obj.tag == 'gmyhq'}" selected>全场券</option> <option value='gmyhq' th:unless="${obj.tag == 'gmyhq'}">全场券</option> </select> </div> </div> zq-erp/src/main/resources/templates/views/admin/shop/shopDeliveryInfo-list.html
@@ -60,7 +60,7 @@ <div class="form-group mr-20 ml-20"> <span class="serch-title">物流公司:</span> <select class="form-control autoFull" style="width: 190px" th:data-url="@{/wxapi/dataDictionary/getListByParentCode/kdgs}" data-value="typeCode" th:data-url="@{/admin/customerDictionary/getListByParentCode/kdgs}" data-value="typeCode" data-filed="typeName" name="logisticsCompanyCode"> <option value=''>--请选择物流公司--</option> </select>