From 032ee6a378964fe2f0b7302bdeb96dc666288891 Mon Sep 17 00:00:00 2001 From: xyiege Date: Fri, 21 Oct 2022 10:42:02 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=92=8C=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../szwh/controller/api/OrderController.java | 55 ++++++++- .../chjyj/szwh/mapper/GoodsDetailMapper.java | 7 ++ .../cn/chjyj/szwh/mapper/GoodsMapper.java | 8 ++ .../szwh/mapper/UserAccountBillMapper.java | 7 ++ .../szwh/service/GoodsDetailService.java | 6 + .../cn/chjyj/szwh/service/GoodsService.java | 8 ++ .../szwh/service/OperationLogService.java | 7 ++ .../cn/chjyj/szwh/service/OrderService.java | 8 ++ .../cn/chjyj/szwh/service/PayService.java | 11 ++ .../service/impl/GoodsDetailServiceImpl.java | 7 ++ .../szwh/service/impl/GoodsServiceImpl.java | 12 +- .../service/impl/OperationLogServiceImpl.java | 5 + .../szwh/service/impl/OrderServiceImpl.java | 12 ++ .../szwh/service/impl/PayServiceImpl.java | 113 ++++++++++++++++++ .../cn/chjyj/szwh/utils/SzwhApiUtils.java | 7 +- .../mapper/szwh/GoodsDetailMapper.xml | 6 + .../resources/mapper/szwh/GoodsMapper.xml | 7 ++ .../resources/mapper/szwh/OrderMapper.xml | 6 +- .../mapper/szwh/UserAccountBillMapper.xml | 40 ++----- 19 files changed, 291 insertions(+), 41 deletions(-) create mode 100644 src/main/java/cn/chjyj/szwh/service/impl/PayServiceImpl.java diff --git a/src/main/java/cn/chjyj/szwh/controller/api/OrderController.java b/src/main/java/cn/chjyj/szwh/controller/api/OrderController.java index 1a92f09..18c457d 100644 --- a/src/main/java/cn/chjyj/szwh/controller/api/OrderController.java +++ b/src/main/java/cn/chjyj/szwh/controller/api/OrderController.java @@ -47,6 +47,12 @@ public class OrderController extends BaseController { private AccountRatioDetailService accountRatioDetailService; @Autowired private OrderUserService orderUserService; + @Autowired + private PayService payService; + @Autowired + private UserAccountBillService userAccountBillService; + @Autowired + private OperationLogService operationLogService; /** * 获取订单信息 @@ -138,7 +144,10 @@ public class OrderController extends BaseController { //只有一条记录的时候 if(goodArr.length==1){ + String batchcode = buyFindGoods(userIsli,goodsIsli,Integer.valueOf(userYears)); + if(StringUtils.isNotBlank(shopCar)){ + } }else{ //多个商品编号 } @@ -177,7 +186,15 @@ public class OrderController extends BaseController { return jsonObject; } + /** + * 查找购买流程,并返回订单编号 + * @param userIsli + * @param goodsIsli + * @param userYears + * @return + */ private String buyFindGoods(String userIsli,String goodsIsli,int userYears){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Goods goods= goodsService.getGoodsByIsli(goodsIsli); if(goods==null){ throw new ChException("没有该标的",400); @@ -281,10 +298,44 @@ public class OrderController extends BaseController { // 订单信息入库 int ret = orderService.addOrder(order); if(ret==1){ - if(status==2){ + //if(status==2){ // 更新订单信息 + //payService.payFinishOperate(batchCode); + // } + // 用户账单 + UserAccountBill userAccountBill = new UserAccountBill(); + userAccountBill.setUserIsli(userIsli); + userAccountBill.setBatchcode(batchCode); + userAccountBill.setOrderUserId(userId); + userAccountBill.setServiceCharge(serviceCharge); + userAccountBill.setThatdayBuyMoney(totalMoney); + // save user's bill + userAccountBillService.addUserAccBill(userAccountBill); + //调整库存 + if(goodsDetail.getGoodsEntrust()==1 || goodsDetail.getContractualPeriod()==2 && goodsDetail.getGoodsEntrust()!=2){ + int gdret = goodsDetailService.decGoodsDetailStock(goodsDetail.getId()); + if(gdret==1){ + String status_Str=""; + if(goodsDetail.getGoodsEntrust() ==1){ + goodsService.changeGoodsStatus(5,goods.getId()); + status_Str="暂停"; + }else { + goodsService.changeGoodsStatus(2,goods.getId()); + status_Str="下架"; + } + //更新订单用户状态信息 + String buyUserName = orderUser.getName(); + OperationLog oplog =new OperationLog(); + oplog.setType("goods"); + oplog.setLogid(goods.getId()); + oplog.setMessage(sdf.format(new Date())+"用户"+buyUserName+"下单,"+status_Str+"该委托标的"); + operationLogService.addLog(oplog); + return batchCode; + }else{ + throw new ChException("标的已卖完",400); + } } } - return ""; + return batchCode; } } diff --git a/src/main/java/cn/chjyj/szwh/mapper/GoodsDetailMapper.java b/src/main/java/cn/chjyj/szwh/mapper/GoodsDetailMapper.java index 4921876..74349f5 100644 --- a/src/main/java/cn/chjyj/szwh/mapper/GoodsDetailMapper.java +++ b/src/main/java/cn/chjyj/szwh/mapper/GoodsDetailMapper.java @@ -37,4 +37,11 @@ public interface GoodsDetailMapper { * @return */ int addGoodsDetail(GoodsDetail goodsDetail); + + /** + * 减库存 + * @param id + * @return + */ + int decGoodsDetailStock(Integer id); } diff --git a/src/main/java/cn/chjyj/szwh/mapper/GoodsMapper.java b/src/main/java/cn/chjyj/szwh/mapper/GoodsMapper.java index 93f8a69..030c7e4 100644 --- a/src/main/java/cn/chjyj/szwh/mapper/GoodsMapper.java +++ b/src/main/java/cn/chjyj/szwh/mapper/GoodsMapper.java @@ -170,4 +170,12 @@ public interface GoodsMapper { * @return */ int updateRevocationGoods(String id); + + /** + * 商品状态变化 + * @param status + * @param gid + * @return + */ + int updateGoodsStatus(@Param("status") int status,@Param("gid") int gid); } diff --git a/src/main/java/cn/chjyj/szwh/mapper/UserAccountBillMapper.java b/src/main/java/cn/chjyj/szwh/mapper/UserAccountBillMapper.java index 74ebfbe..21d2b46 100644 --- a/src/main/java/cn/chjyj/szwh/mapper/UserAccountBillMapper.java +++ b/src/main/java/cn/chjyj/szwh/mapper/UserAccountBillMapper.java @@ -26,4 +26,11 @@ public interface UserAccountBillMapper { * @return */ int countUserAccBill(String userisli); + + /** + * add new user bill + * @param userAccountBill + * @return + */ + int addUserAccBill(UserAccountBill userAccountBill); } diff --git a/src/main/java/cn/chjyj/szwh/service/GoodsDetailService.java b/src/main/java/cn/chjyj/szwh/service/GoodsDetailService.java index 0212f87..ef8d447 100644 --- a/src/main/java/cn/chjyj/szwh/service/GoodsDetailService.java +++ b/src/main/java/cn/chjyj/szwh/service/GoodsDetailService.java @@ -20,4 +20,10 @@ public interface GoodsDetailService { * @return */ int getRemoteGoodsImageAndUpdate(String image,Integer id); + /** + * 减库存 + * @param id + * @return + */ + int decGoodsDetailStock(Integer id); } diff --git a/src/main/java/cn/chjyj/szwh/service/GoodsService.java b/src/main/java/cn/chjyj/szwh/service/GoodsService.java index cc27696..99977c0 100644 --- a/src/main/java/cn/chjyj/szwh/service/GoodsService.java +++ b/src/main/java/cn/chjyj/szwh/service/GoodsService.java @@ -104,4 +104,12 @@ public interface GoodsService { * @return */ List getTypeGoods(String type,String createtime,String goods_type); + + /** + * 商品状态 + * @param id + * @param status + * @return + */ + int changeGoodsStatus(int status,int id); } diff --git a/src/main/java/cn/chjyj/szwh/service/OperationLogService.java b/src/main/java/cn/chjyj/szwh/service/OperationLogService.java index 69980d1..fbdb8e4 100644 --- a/src/main/java/cn/chjyj/szwh/service/OperationLogService.java +++ b/src/main/java/cn/chjyj/szwh/service/OperationLogService.java @@ -12,4 +12,11 @@ public interface OperationLogService { * @return */ List getLog(String type, String logId); + + /** + * add new log + * @param oplog + * @return + */ + int addLog(OperationLog oplog); } diff --git a/src/main/java/cn/chjyj/szwh/service/OrderService.java b/src/main/java/cn/chjyj/szwh/service/OrderService.java index 341e378..90c70f3 100644 --- a/src/main/java/cn/chjyj/szwh/service/OrderService.java +++ b/src/main/java/cn/chjyj/szwh/service/OrderService.java @@ -83,4 +83,12 @@ public interface OrderService { */ int addOrder(Order order); + /** + * 购买前查找商品信息状态 + * @param userIsli + * @param goodsIsli + * @param userYears + * @return + */ + public String buyFindGoods(String userIsli,String goodsIsli,int userYears); } diff --git a/src/main/java/cn/chjyj/szwh/service/PayService.java b/src/main/java/cn/chjyj/szwh/service/PayService.java index d8bed1a..2b6c97e 100644 --- a/src/main/java/cn/chjyj/szwh/service/PayService.java +++ b/src/main/java/cn/chjyj/szwh/service/PayService.java @@ -4,5 +4,16 @@ package cn.chjyj.szwh.service; * 支付服务接口 */ public interface PayService { + /** + * 支付完成后的处理方法 + * @return + */ + public void payComplete(); + /** + * 订单完成操作 + * @param batchcode + * @return + */ + public int payFinishOperate(String batchcode); } diff --git a/src/main/java/cn/chjyj/szwh/service/impl/GoodsDetailServiceImpl.java b/src/main/java/cn/chjyj/szwh/service/impl/GoodsDetailServiceImpl.java index fe32576..96b9591 100644 --- a/src/main/java/cn/chjyj/szwh/service/impl/GoodsDetailServiceImpl.java +++ b/src/main/java/cn/chjyj/szwh/service/impl/GoodsDetailServiceImpl.java @@ -12,8 +12,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Service +@Transactional public class GoodsDetailServiceImpl implements GoodsDetailService { // 日志 private static Log log = LogFactory.getLog(GoodsDetailServiceImpl.class); @@ -47,4 +49,9 @@ public class GoodsDetailServiceImpl implements GoodsDetailService { goodsDetailMapper.updateGoodsDetail(goodsDetail); return 0; } + + @Override + public int decGoodsDetailStock(Integer id) { + return goodsDetailMapper.decGoodsDetailStock(id); + } } diff --git a/src/main/java/cn/chjyj/szwh/service/impl/GoodsServiceImpl.java b/src/main/java/cn/chjyj/szwh/service/impl/GoodsServiceImpl.java index e53f38a..8500f72 100644 --- a/src/main/java/cn/chjyj/szwh/service/impl/GoodsServiceImpl.java +++ b/src/main/java/cn/chjyj/szwh/service/impl/GoodsServiceImpl.java @@ -18,16 +18,11 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.Transactional; import java.math.BigInteger; -import java.sql.Time; import java.sql.Timestamp; -import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.*; @Service @@ -528,6 +523,13 @@ public class GoodsServiceImpl implements GoodsService { return glist; } + @Override + public int changeGoodsStatus(int status, int gid) { + Map gmap =new HashMap(); + gmap.put("goods_status",status); + return goodsMapper.updateGoods(gmap,gid); + } + /** * query rank list * diff --git a/src/main/java/cn/chjyj/szwh/service/impl/OperationLogServiceImpl.java b/src/main/java/cn/chjyj/szwh/service/impl/OperationLogServiceImpl.java index e9436ae..e8acbfa 100644 --- a/src/main/java/cn/chjyj/szwh/service/impl/OperationLogServiceImpl.java +++ b/src/main/java/cn/chjyj/szwh/service/impl/OperationLogServiceImpl.java @@ -17,4 +17,9 @@ public class OperationLogServiceImpl implements OperationLogService { public List getLog(String type, String logId) { return operationLogMapper.getOperationLog(logId,type); } + + @Override + public int addLog(OperationLog oplog) { + return operationLogMapper.addLog(oplog); + } } diff --git a/src/main/java/cn/chjyj/szwh/service/impl/OrderServiceImpl.java b/src/main/java/cn/chjyj/szwh/service/impl/OrderServiceImpl.java index 8e6217c..e2820b5 100644 --- a/src/main/java/cn/chjyj/szwh/service/impl/OrderServiceImpl.java +++ b/src/main/java/cn/chjyj/szwh/service/impl/OrderServiceImpl.java @@ -515,6 +515,18 @@ public class OrderServiceImpl implements OrderService { return orderMapper.addOrder(order); } + /** + * todo + * @param userIsli + * @param goodsIsli + * @param userYears + * @return + */ + @Override + public String buyFindGoods(String userIsli, String goodsIsli, int userYears) { + return null; + } + /** * 结算 * @param order diff --git a/src/main/java/cn/chjyj/szwh/service/impl/PayServiceImpl.java b/src/main/java/cn/chjyj/szwh/service/impl/PayServiceImpl.java new file mode 100644 index 0000000..f88a83c --- /dev/null +++ b/src/main/java/cn/chjyj/szwh/service/impl/PayServiceImpl.java @@ -0,0 +1,113 @@ +package cn.chjyj.szwh.service.impl; + +import cn.chjyj.szwh.bean.Order; +import cn.chjyj.szwh.bean.OrderGoodsDetail; +import cn.chjyj.szwh.bean.OrderUser; +import cn.chjyj.szwh.mapper.OrderGoodsDetailMapper; +import cn.chjyj.szwh.mapper.OrderMapper; +import cn.chjyj.szwh.mapper.OrderUserMapper; +import cn.chjyj.szwh.service.PayService; +import cn.chjyj.szwh.utils.SzwhApiUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.*; + +@Service +@Transactional +public class PayServiceImpl implements PayService { + @Autowired + private OrderMapper orderMapper; + @Autowired + private OrderUserMapper orderUserMapper; + @Autowired + private OrderGoodsDetailMapper orderGoodsDetailMapper; + + /** + * 关闭七日以前的已经支付了的订单 + * @return + */ + @Override + public void payComplete() { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String nowStr = sdf.format(sdf)+" 23:59:59"; + List orderList=orderMapper.getOrderListUnderDate(nowStr,"2"); + for(Order od:orderList){ + // 更新订单完成状态 + payFinishOperate(od.getBatchcode()); + } + } + + @Override + public int payFinishOperate(String batchcode) { + //获取订单信息 + Order order = orderMapper.getOrderByBatchcode(batchcode); + if(order==null){ + return 0; + } + if(order.getPayStatus()!=2){ + // do nothing + } + Integer status = order.getStatus(); + Integer closeStatus= order.getCloseStatus(); + Integer type =order.getType(); + String buyIslicode = order.getBuyIslicode(); + //购买用户 + OrderUser oduser = orderUserMapper.getUserOrder(batchcode,buyIslicode); + String buyName = oduser.getName(); + Date paytime = order.getPaymenttime(); + // 同步到其他平台 + List syncList =new ArrayList<>(); + Calendar cal= Calendar.getInstance(); + + // 分配比例设置及详情 + + + //订单商品详情 + List orderGoodsDetailList = orderGoodsDetailMapper.getOrderGoodsDetailByBatchCode(batchcode); + for(OrderGoodsDetail odgd:orderGoodsDetailList){ + Map odmap = new HashMap(); + String dateStr="";//订单年限 + int transCount=1;// + if(odgd.getGoodsEntrust()==1 || odgd.getChargesType()==1){ + dateStr="永久"; + transCount=1; + }else { + int years = odgd.getTransactionCount(); + cal.setTime(new Date()); + cal.add(Calendar.YEAR,+years); + dateStr=cal.getTime().toString(); + transCount=odgd.getTransactionCount(); + } + // +// if(odgd.getMoney().compareTo(new BigDecimal(0))>0 &&status!=2){ +// return odgd; +// } + //合约关联编码(订单交易isli标识码) + String contractcode=""; + if(StringUtils.isEmpty(odgd.getContractCode())){ +// $ratio_setting = AccountRatioSetting::where('is_deleted', 0)->where('status', 1)->find(); +// $entrust_ratio_detail = AccountRatioDetail::where('setting_id', $ratio_setting->id)->where('role_type', 1)->find(); +// $ratio = 0; +// $entrust_number = 0; +// if($entrust_ratio_detail['calculate'] == 1){ +// $entrust_number = $entrust_ratio_detail['ratio']; +// }else{ +// $entrust_number = $entrust_ratio_detail['amount']; +// } +// $ratio = round(1 - ($entrust_number / 100), 4); + String ratio="0.00"; + // 远程获取查询对应的 islicode + SzwhApiUtils.getApplyLinkCode(odgd.getGoodsIslicode(),buyIslicode,ratio,transCount,dateStr,batchcode); + }else{ + contractcode = odgd.getContractCode(); + } + + } + return 0; + } +} diff --git a/src/main/java/cn/chjyj/szwh/utils/SzwhApiUtils.java b/src/main/java/cn/chjyj/szwh/utils/SzwhApiUtils.java index 490b5ef..a06ca7f 100644 --- a/src/main/java/cn/chjyj/szwh/utils/SzwhApiUtils.java +++ b/src/main/java/cn/chjyj/szwh/utils/SzwhApiUtils.java @@ -1,16 +1,11 @@ package cn.chjyj.szwh.utils; -import cn.chjyj.szwh.service.impl.UserServiceImpl; -import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; -import jdk.nashorn.internal.scripts.JO; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.client.utils.URIBuilder; import java.net.URISyntaxException; -import java.net.URL; import java.util.HashMap; import java.util.Map; @@ -180,7 +175,7 @@ public class SzwhApiUtils { String tlangHost= ProperUtils.getSzwhProp("TIANLANG_ENTRUST_URL"); String url=tlangHost+"/consignation/v1/applylinkcode"; // 使用的token - String sign=SignUtils.createSign("apply_code"); + String sign=SignUtils.createSign("entrust"); Map hmap = new HashMap(); hmap.put("cloudhub_token",sign); hmap.put("Content-Type","application/json"); diff --git a/src/main/resources/mapper/szwh/GoodsDetailMapper.xml b/src/main/resources/mapper/szwh/GoodsDetailMapper.xml index f571012..0d10370 100644 --- a/src/main/resources/mapper/szwh/GoodsDetailMapper.xml +++ b/src/main/resources/mapper/szwh/GoodsDetailMapper.xml @@ -100,4 +100,10 @@ where id=#{id}; + + + update + set stock=stock-1 + where id=#{id} + \ No newline at end of file diff --git a/src/main/resources/mapper/szwh/GoodsMapper.xml b/src/main/resources/mapper/szwh/GoodsMapper.xml index d44e769..0704262 100644 --- a/src/main/resources/mapper/szwh/GoodsMapper.xml +++ b/src/main/resources/mapper/szwh/GoodsMapper.xml @@ -300,4 +300,11 @@ where id=#{id} + + + update + set goods_status=#{status} + where id=#{gid}; + + \ No newline at end of file diff --git a/src/main/resources/mapper/szwh/OrderMapper.xml b/src/main/resources/mapper/szwh/OrderMapper.xml index 0474563..32e598e 100644 --- a/src/main/resources/mapper/szwh/OrderMapper.xml +++ b/src/main/resources/mapper/szwh/OrderMapper.xml @@ -70,7 +70,7 @@ + and k!='goods_name' and k!='goods_entrust' and k!=paymenttime"> ${k} = #{v} @@ -94,6 +94,10 @@ ${v} + + + ${v} + diff --git a/src/main/resources/mapper/szwh/UserAccountBillMapper.xml b/src/main/resources/mapper/szwh/UserAccountBillMapper.xml index 836752e..6158c1e 100644 --- a/src/main/resources/mapper/szwh/UserAccountBillMapper.xml +++ b/src/main/resources/mapper/szwh/UserAccountBillMapper.xml @@ -37,37 +37,23 @@ - + insert into - (user_isli,username,institution_code,agency_type,cert_type,idNumber,cell_phone, - bank_account,legals_name,legals_type,legals_idnum,legals_phone,bank_card_type, - bank_type,bank_name,bank_username,bank_userid,bank_userphone,bank_address,attest_status, - registertime,attesttime + (user_isli,batchcode,order_user_id,center_number, + center_name ,service_number ,service_name , + service_charge ,thatday_buy_money ,preliminary_capital, + available_capital ,disburse_capital ,entrust_cost , + thatday_sale_money ,service_charge_allot ,capital_remaining , + freeze_earnest_money ,createtime,close_time ) values ( - #{userIsli}, - #{username}, - #{institutionCode}, - #{agencyType}, - #{certType}, - #{idNumber}, - #{cellPhone}, - #{bankAccount}, - #{legalsName}, - #{legalsType}, - #{legalsIdnum}, - #{legalsPhone}, - #{bankCardType}, - #{bankType}, - #{bankName}, - #{bankUsername}, - #{bankUserid}, - #{bankUserphone}, - #{bankAddress}, - #{attestStatus}, - #{registertime}, - #{attesttime} + #{userIsli},#{batchcode},#{orderUserId},#{centerNumber}, + #{centerNumber},#{serviceNumber},#{serviceName}, + #{serviceCharge},#{thatdayBuyMoney},#{preliminaryCapital}, + #{availableCapital},#{disburseCapital},#{entrustCost}, + #{thatdaySaleMoney},#{serviceChargeAllot},#{capitalRemaining}, + #{freezeEarnestMoney},#{createtime},#{closeTime} )