src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java
@@ -12,12 +12,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.util.List; import java.util.Map; @@ -57,4 +55,13 @@ return iAdminMallTeamLeaderService.selectList(mallTeamLeader); } /** * 团长信息--取消团长 */ @GetMapping("leaderCancel/{id}") @ControllerEndpoint(operation = "团长信息--取消团长", exceptionMessage = "取消团长失败") public FebsResponse leaderCancel(@NotNull(message = "{required}") @PathVariable Long id) { return iAdminMallTeamLeaderService.leaderCancel(id); } } src/main/java/cc/mrbird/febs/mall/entity/MallTeamLeader.java
@@ -15,11 +15,12 @@ //用户ID private Long memberId; //申请状态 1:审核通过 2:审核不通过 3:申请中 //申请状态 1:审核通过 2:审核不通过 3:申请中 4:已取消 private Integer state; public static final Integer STATE_YES = 1; public static final Integer STATE_NO = 2; public static final Integer STATE_ING = 3; public static final Integer STATE_CANCEL = 4; //团长姓名 private String name; //手机号码 src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java
@@ -20,4 +20,6 @@ FebsResponse leaderUpdate(AdminLeaderUpdateDto adminLeaderUpdateDto); List<AdminSelectListLeaderVo> selectList(MallTeamLeader mallTeamLeader); FebsResponse leaderCancel(Long id); } src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java
@@ -12,6 +12,7 @@ import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo; import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -76,4 +77,20 @@ } return list; } @Override public FebsResponse leaderCancel(Long id) { MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); if(ObjectUtil.isEmpty(mallTeamLeader)){ return new FebsResponse().fail().message("团长信息不存在"); } Integer state = mallTeamLeader.getState(); if(MallTeamLeader.STATE_YES != state){ return new FebsResponse().fail().message("团长的状态不是审核通过"); } mallTeamLeader.setState(MallTeamLeader.STATE_CANCEL); this.baseMapper.updateById(mallTeamLeader); return new FebsResponse().success().message("已取消"); } } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
@@ -45,6 +45,10 @@ if(CollUtil.isNotEmpty(mallTeamLeaders)){ return new FebsResponse().fail().message("正在申请中"); } List<MallTeamLeader> mallTeamLeaderCancel = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_CANCEL); if(CollUtil.isNotEmpty(mallTeamLeaderCancel)){ return new FebsResponse().fail().message("当前用户无法申请"); } MallTeamLeader mallTeamLeader = MallTeamLeaderConversion.INSTANCE.dtoToEntity(apiApplayLeaderDto); mallTeamLeader.setMemberId(memberId); mallTeamLeader.setState(MallTeamLeader.STATE_ING); @@ -68,10 +72,13 @@ List<MallTeamLeader> mallTeamLeadersIng = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_ING); List<MallTeamLeader> mallTeamLeadersNo = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_NO); List<MallTeamLeader> mallTeamLeadersYes = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_YES); List<MallTeamLeader> mallTeamLeadersCancel = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_CANCEL); if(CollUtil.isNotEmpty(mallTeamLeadersIng) ||CollUtil.isNotEmpty(mallTeamLeadersYes)){ apiMallleaderStateVo.setState(2); }else if(CollUtil.isNotEmpty(mallTeamLeadersNo)){ apiMallleaderStateVo.setState(1); }else if(CollUtil.isNotEmpty(mallTeamLeadersCancel)){ apiMallleaderStateVo.setState(2); }else{ apiMallleaderStateVo.setState(1); } @@ -82,6 +89,7 @@ public FebsResponse getApiLeaderInfoVoById(Long id) { MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); ApiLeaderInfoVo apiLeaderInfoVo = new ApiLeaderInfoVo(); apiLeaderInfoVo.setId(mallTeamLeader.getId()); apiLeaderInfoVo.setName(mallTeamLeader.getName()); apiLeaderInfoVo.setPhone(mallTeamLeader.getPhone()); apiLeaderInfoVo.setAddressPic(mallTeamLeader.getAddressPic()); src/main/java/cc/mrbird/febs/pay/util/HttpRequest.java
New file @@ -0,0 +1,196 @@ package cc.mrbird.febs.pay.util; import javax.net.ssl.HttpsURLConnection; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; public class HttpRequest { public static final String SEND_POST = "POST"; public static final String SEND_GET = "GET"; private HttpRequest() { } public static HttpRequest createHttpRequest() { return new HttpRequest(); } public HttpResponse sendHttpGet(String urlString, Map<String, String> params) throws IOException { if (params != null) { StringBuffer param = new StringBuffer(); int i = 0; for (String key : params.keySet()) { if (i == 0) param.append("?"); else param.append("&"); param.append(key).append("=").append((String) params.get(key)); i++; } urlString = urlString + param; } URL url = new URL(urlString); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); HttpResponse response = new HttpResponse(); response.setInputStream(urlConnection.getInputStream()); response.setContentType(urlConnection.getContentType()); response.setContentLength(urlConnection.getContentLength()); response.setFileName(urlConnection.getRequestProperty("filename")); return response; } public HttpResponse sendHttpPost(String urlString, Map<String, String> params, String filePath, String contentType) throws IOException { if (params != null) { StringBuffer param = new StringBuffer(); int i = 0; for (String key : params.keySet()) { if (i == 0) param.append("?"); else param.append("&"); param.append(key).append("=").append((String) params.get(key)); i++; } urlString = urlString + param; } URL url = new URL(urlString); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("POST"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); File file = new File(filePath); urlConnection.setRequestProperty("Connection", "Keep-Alive"); urlConnection.setRequestProperty("Charset", "UTF-8"); String BOUNDARY = "----------" + System.currentTimeMillis(); urlConnection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); StringBuilder sb = new StringBuilder(); sb.append("--"); sb.append(BOUNDARY); sb.append("\r\n"); sb.append("Content-Disposition: form-data;name=\"file\";filename=\"" + file.getName() + "\"\r\n"); sb.append("Content-Type:application/octet-stream\r\n\r\n"); byte[] head = sb.toString().getBytes("utf-8"); OutputStream out1 = new DataOutputStream(urlConnection.getOutputStream()); out1.write(head); DataInputStream in1 = new DataInputStream(new FileInputStream(file)); int bytes = 0; byte[] bufferOut = new byte[1024]; while ((bytes = in1.read(bufferOut)) != -1) { out1.write(bufferOut, 0, bytes); } in1.close(); byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8"); out1.write(foot); out1.flush(); out1.close(); FileInputStream in = new FileInputStream(file); OutputStream out = urlConnection.getOutputStream(); byte[] buf = new byte[1024]; int hasRead = 0; while ((hasRead = in.read(buf)) > 0) { out.write(buf, 0, hasRead); } in.close(); out.flush(); out.close(); HttpResponse response = new HttpResponse(); response.setInputStream(urlConnection.getInputStream()); return response; } public HttpResponse sendHttpsGet(String urlString, Map<String, String> params) throws IOException { if (params != null) { StringBuffer param = new StringBuffer(); int i = 0; for (String key : params.keySet()) { if (i == 0) param.append("?"); else param.append("&"); param.append(key).append("=").append((String) params.get(key)); i++; } urlString = urlString + param; } URL url = new URL(urlString); HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); HttpResponse response = new HttpResponse(); response.setInputStream(urlConnection.getInputStream()); response.setContentType(urlConnection.getContentType()); response.setContentLength(urlConnection.getContentLength()); return response; } public HttpResponse sendHttpsPost(String urlString, Map<String, String> params, String sendData) throws IOException { if (params != null) { StringBuffer param = new StringBuffer(); int i = 0; for (String key : params.keySet()) { if (i == 0) param.append("?"); else param.append("&"); param.append(key).append("=").append((String) params.get(key)); i++; } urlString = urlString + param; } URL url = new URL(urlString); HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); urlConnection.setRequestMethod("POST"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); if (sendData != null) { urlConnection.getOutputStream().write(sendData.getBytes("utf-8")); urlConnection.getOutputStream().flush(); urlConnection.getOutputStream().close(); } HttpResponse response = new HttpResponse(); response.setInputStream(urlConnection.getInputStream()); response.setContentType(urlConnection.getContentType()); response.setContentLength(urlConnection.getContentLength()); return response; } } src/main/java/cc/mrbird/febs/pay/util/HttpResponse.java
New file @@ -0,0 +1,58 @@ package cc.mrbird.febs.pay.util; import java.io.InputStream; import java.io.InputStreamReader; public class HttpResponse { private InputStream inputStream; private String fileName; private String contentType; private int contentLength; public String getFileName() { return this.fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public InputStream getInputStream() { return this.inputStream; } public void setInputStream(InputStream inputStream) { this.inputStream = inputStream; } public String getContentType() { return this.contentType; } public void setContentType(String contentType) { this.contentType = contentType; } public int getContentLength() { return this.contentLength; } public void setContentLength(int contentLength) { this.contentLength = contentLength; } public String getDataString() { StringBuilder sb = new StringBuilder(); try { InputStreamReader isr = new InputStreamReader(getInputStream(), "utf-8"); char[] cbuf = new char[1024]; int hasRead = 0; while ((hasRead = isr.read(cbuf)) > 0) { sb.append(cbuf, 0, hasRead); } isr.close(); } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } } src/main/java/cc/mrbird/febs/pay/util/HttpsRequest.java
New file @@ -0,0 +1,186 @@ package cc.mrbird.febs.pay.util; import cc.mrbird.febs.pay.service.IServiceRequest; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; import com.thoughtworks.xstream.io.xml.XmlFriendlyNameCoder; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.ConnectTimeoutException; import org.apache.http.conn.ConnectionPoolTimeoutException; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.net.SocketTimeoutException; import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; /** * User: rizenguo * Date: 2014/10/29 * Time: 14:36 */ public class HttpsRequest implements IServiceRequest { public interface ResultListener { public void onConnectionPoolTimeoutError(); } //表示请求器是否已经做了初始化工作 private boolean hasInit = false; //连接超时时间,默认10秒 private int socketTimeout = 10000; //传输超时时间,默认30秒 private int connectTimeout = 30000; //请求器的配置 private RequestConfig requestConfig; //HTTP请求器 private CloseableHttpClient httpClient; public HttpsRequest() throws UnrecoverableKeyException, KeyManagementException, NoSuchAlgorithmException, KeyStoreException, IOException { init(); } private void init() throws IOException, KeyStoreException, UnrecoverableKeyException, NoSuchAlgorithmException, KeyManagementException { /* KeyStore keyStore = KeyStore.getInstance("PKCS12"); FileInputStream instream = new FileInputStream(new File(Configure.getCertLocalPath()));//加载本地的证书进行https加密传输 try { keyStore.load(instream, Configure.getCertPassword().toCharArray());//设置证书密码 } catch (CertificateException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } finally { instream.close(); } // Trust own CA and all self-signed certs SSLContext sslcontext = SSLContexts.custom() .loadKeyMaterial(keyStore, Configure.getCertPassword().toCharArray()) .build(); // Allow TLSv1 protocol only SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( sslcontext, new String[]{"TLSv1"}, null, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); */ httpClient = HttpClients.custom().build(); //根据默认超时限制初始化requestConfig requestConfig = RequestConfig.custom().setSocketTimeout(socketTimeout).setConnectTimeout(connectTimeout).build(); hasInit = true; } /** * 通过Https往API post xml数据 * * @param url API地址 * @param xmlObj 要提交的XML数据对象 * @return API回包的实际数据 * @throws IOException * @throws KeyStoreException * @throws UnrecoverableKeyException * @throws NoSuchAlgorithmException * @throws KeyManagementException */ public String sendPost(String url, Object xmlObj) throws IOException, KeyStoreException, UnrecoverableKeyException, NoSuchAlgorithmException, KeyManagementException { if (!hasInit) { init(); } String result = null; HttpPost httpPost = new HttpPost(url); //解决XStream对出现双下划线的bug XStream xStreamForRequestPostData = new XStream(new DomDriver("UTF-8", new XmlFriendlyNameCoder("-_", "_"))); //将要提交给API的数据对象转换成XML格式数据Post给API String postDataXML = xStreamForRequestPostData.toXML(xmlObj); //得指明使用UTF-8编码,否则到API服务器XML的中文不能被成功识别 StringEntity postEntity = new StringEntity(postDataXML, "UTF-8"); httpPost.addHeader("Content-Type", "text/xml"); httpPost.setEntity(postEntity); //设置请求器的配置 httpPost.setConfig(requestConfig); try { HttpResponse response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); result = EntityUtils.toString(entity, "UTF-8"); } catch (ConnectionPoolTimeoutException e) { // log.e("http get throw ConnectionPoolTimeoutException(wait time out)"); } catch (ConnectTimeoutException e) { // log.e("http get throw ConnectTimeoutException"); } catch (SocketTimeoutException e) { // log.e("http get throw SocketTimeoutException"); } catch (Exception e) { e.printStackTrace(); // log.e("http get throw Exception"); } finally { httpPost.abort(); } return result; } /** * 设置连接超时时间 * * @param socketTimeout 连接时长,默认10秒 */ public void setSocketTimeout(int socketTimeout) { this.socketTimeout = socketTimeout; resetRequestConfig(); } /** * 设置传输超时时间 * * @param connectTimeout 传输时长,默认30秒 */ public void setConnectTimeout(int connectTimeout) { this.connectTimeout = connectTimeout; resetRequestConfig(); } private void resetRequestConfig(){ requestConfig = RequestConfig.custom().setSocketTimeout(socketTimeout).setConnectTimeout(connectTimeout).build(); } /** * 允许商户自己做更高级更复杂的请求器配置 * * @param requestConfig 设置HttpsRequest的请求器配置 */ public void setRequestConfig(RequestConfig requestConfig) { this.requestConfig = requestConfig; } } src/main/java/cc/mrbird/febs/pay/util/HttpsRequest2.java
New file @@ -0,0 +1,213 @@ package cc.mrbird.febs.pay.util; import cc.mrbird.febs.pay.service.IServiceRequest; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; import com.thoughtworks.xstream.io.xml.XmlFriendlyNameCoder; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.ConnectTimeoutException; import org.apache.http.conn.ConnectionPoolTimeoutException; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.conn.ssl.SSLContexts; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import javax.net.ssl.SSLContext; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.SocketTimeoutException; import java.security.*; import java.security.cert.CertificateException; /** * User: rizenguo * Date: 2014/10/29 * Time: 14:36 */ public class HttpsRequest2 implements IServiceRequest { public interface ResultListener { public void onConnectionPoolTimeoutError(); } //表示请求器是否已经做了初始化工作 private boolean hasInit = false; //连接超时时间,默认10秒 private int socketTimeout = 10000; //传输超时时间,默认30秒 private int connectTimeout = 30000; //请求器的配置 private RequestConfig requestConfig; //HTTP请求器 private CloseableHttpClient httpClient; //证书地址 private String certLocalPath; //商户号 private String mchId; public HttpsRequest2() throws UnrecoverableKeyException, KeyManagementException, NoSuchAlgorithmException, KeyStoreException, IOException { } private void init() throws IOException, KeyStoreException, UnrecoverableKeyException, NoSuchAlgorithmException, KeyManagementException { KeyStore keyStore = KeyStore.getInstance("PKCS12"); FileInputStream instream = new FileInputStream(new File(certLocalPath));//加载本地的证书进行https加密传输 try { keyStore.load(instream, mchId.toCharArray());//设置证书密码 } catch (CertificateException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } finally { instream.close(); } // Trust own CA and all self-signed certs SSLContext sslcontext = SSLContexts.custom() .loadKeyMaterial(keyStore, mchId.toCharArray()) .build(); // Allow TLSv1 protocol only SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( sslcontext, new String[]{"TLSv1"}, null, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); httpClient = HttpClients.custom() .setSSLSocketFactory(sslsf) .build(); // httpClient = HttpClients.custom().build(); //根据默认超时限制初始化requestConfig requestConfig = RequestConfig.custom().setSocketTimeout(socketTimeout).setConnectTimeout(connectTimeout).build(); hasInit = true; } /** * 通过Https往API post xml数据 * * @param url API地址 * @param xmlObj 要提交的XML数据对象 * @return API回包的实际数据 * @throws IOException * @throws KeyStoreException * @throws UnrecoverableKeyException * @throws NoSuchAlgorithmException * @throws KeyManagementException */ public String sendPost(String url, Object xmlObj) throws IOException, KeyStoreException, UnrecoverableKeyException, NoSuchAlgorithmException, KeyManagementException { if (!hasInit) { init(); } String result = null; HttpPost httpPost = new HttpPost(url); //解决XStream对出现双下划线的bug XStream xStreamForRequestPostData = new XStream(new DomDriver("UTF-8", new XmlFriendlyNameCoder("-_", "_"))); //将要提交给API的数据对象转换成XML格式数据Post给API String postDataXML = xStreamForRequestPostData.toXML(xmlObj); //得指明使用UTF-8编码,否则到API服务器XML的中文不能被成功识别 StringEntity postEntity = new StringEntity(postDataXML, "UTF-8"); httpPost.addHeader("Content-Type", "text/xml"); httpPost.setEntity(postEntity); //设置请求器的配置 httpPost.setConfig(requestConfig); try { HttpResponse response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); result = EntityUtils.toString(entity, "UTF-8"); } catch (ConnectionPoolTimeoutException e) { // log.e("http get throw ConnectionPoolTimeoutException(wait time out)"); } catch (ConnectTimeoutException e) { // log.e("http get throw ConnectTimeoutException"); } catch (SocketTimeoutException e) { // log.e("http get throw SocketTimeoutException"); } catch (Exception e) { e.printStackTrace(); // log.e("http get throw Exception"); } finally { httpPost.abort(); } return result; } /** * 设置连接超时时间 * * @param socketTimeout 连接时长,默认10秒 */ public void setSocketTimeout(int socketTimeout) { this.socketTimeout = socketTimeout; resetRequestConfig(); } /** * 设置传输超时时间 * * @param connectTimeout 传输时长,默认30秒 */ public void setConnectTimeout(int connectTimeout) { this.connectTimeout = connectTimeout; resetRequestConfig(); } private void resetRequestConfig(){ requestConfig = RequestConfig.custom().setSocketTimeout(socketTimeout).setConnectTimeout(connectTimeout).build(); } /** * 允许商户自己做更高级更复杂的请求器配置 * * @param requestConfig 设置HttpsRequest的请求器配置 */ public void setRequestConfig(RequestConfig requestConfig) { this.requestConfig = requestConfig; } public String getMchId() { return mchId; } public void setMchId(String mchId) { this.mchId = mchId; } public String getCertLocalPath() { return certLocalPath; } public void setCertLocalPath(String certLocalPath) { this.certLocalPath = certLocalPath; } } src/main/java/cc/mrbird/febs/pay/util/WechatConfigure.java
@@ -7,18 +7,23 @@ /** * 发送http请求类 */ public static String HttpsRequestClassName = "com.matrix.component.wechat.externalInterface.common.HttpsRequest"; public static String HttpsRequestClassName = "cc.mrbird.febs.pay.util.HttpsRequest"; public static final String TRADE_TYPE_JSAPI = "JSAPI"; // 2)被扫支付查询API /** * 发送 SSL请求,企业付款,退款用 */ public static String HttpsRequestClassName2 = "cc.mrbird.febs.pay.util.HttpsRequest2"; // 被扫支付查询API public static String PAY_QUERY_API = "https://api.mch.weixin.qq.com/pay/orderquery"; /** * 微信商户号 */ public static final String WECHARPAY_MCHID = "1605533690"; /** * 支付秘钥 */ @@ -28,21 +33,18 @@ * 小程序APPID */ public static final String MINIPROGRAM_APPID = "wx5cc58f796224af61"; // 8) 企业付款API // 企业付款API public static String COM_PAY_API="https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"; /** * 发送 SSL请求,企业付款,退款用 */ public static String HttpsRequestClassName2 = "com.matrix.component.wechat.externalInterface.common.HttpsRequest2"; // 3)退款API // 退款API public static String REFUND_API = "https://api.mch.weixin.qq.com/secapi/pay/refund"; /** * 成功 */ public static final String CODE_SUCCESS = "SUCCESS"; /** * SUCCESS报文 */ src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -33,7 +33,7 @@ </if> </if> </where> order by m.CREATED_TIME desc GROUP BY m.id order by m.CREATED_TIME desc </select> <select id="getMallMemberInfoById" resultType="cc.mrbird.febs.mall.vo.MallMemberVo"> src/main/resources/mapper/modules/MallTeamLeaderMapper.xml
@@ -146,7 +146,7 @@ select a.* from mall_team_leader a where a.unique_code = #{uniqueCode} limit 1 where a.unique_code = #{uniqueCode} and a.state = 1 limit 1 </select> <select id="selectLeaderByLonAndLat" resultType="cc.mrbird.febs.mall.entity.MallTeamLeader"> src/main/resources/templates/febs/views/modules/leader/leaderList.html
@@ -20,6 +20,7 @@ <option value="1">通过</option> <option value="2">不通过</option> <option value="3">申请中</option> <option value="4">取消</option> </select> </div> </div> @@ -97,6 +98,11 @@ } }); } if (layEvent === 'leaderCancel') { febs.modal.confirm('取消', '确认取消该团长?', function () { leaderCancel(data.id); }); } if (layEvent === 'seeImgThumb') { var t = $view.find('#seeImgThumb'+data.id+''); //页面层 @@ -113,6 +119,13 @@ }); } }); function leaderCancel(id) { febs.get(ctx + 'admin/leader/leaderCancel/' + id, null, function () { febs.alert.success('操作成功'); $query.click(); }); } // 查询按钮 $query.on('click', function () { @@ -148,6 +161,8 @@ return '<span style="color:red;">拒绝</span>' }else if (d.state === 3) { return '<span style="color:blue;">待审核</span>' }else if (d.state === 4) { return '<span style="color:blue;">已取消</span>' }else{ return '' } @@ -157,6 +172,9 @@ if (d.state === 3) { return '' + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderUpdate" shiro:hasPermission="user:update">审核</button>' }else if(d.state === 1) { return '' + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderCancel" shiro:hasPermission="user:update">取消</button>' }else{ return ''; }